[Gluster-devel] Dynamic disabling of eager-locking based on number of fds

Anand Avati anand.avati at gmail.com
Tue Feb 12 03:13:32 UTC 2013


On Mon, Feb 11, 2013 at 7:02 PM, Pranith Kumar K <pkarampu at redhat.com>wrote:

> hi,
>       Problem:
>
> When there are multiple fds writing to same file with eager-lock enabled,
> the fd which acquires the eager-lock waits for
> post-op-delay secs before doing the unlock. Because of this all other fds
> opened on the file face extra delay when
> performing writes. Eager-locking, post-op-delay need to be disabled when
> there are multiple fds opened on the file.
>
> Here is the profile info output for the case above:
> Execute the following command on the mount point.
> for n in `seq 1 50` ; do eval "/home/pranithk/workspace/**gerrit-repo/append2log.py
> ./ben.log 10000 0.001 &" ; done ; wait
>
>  %-latency   Avg-latency   Min-Latency   Max-Latency   No. of calls
>   Fop
>  ---------   -----------   -----------   -----------   ------------
>  ----
>       0.00       0.00 us       0.00 us       0.00 us             50
> RELEASE
>       0.00       0.00 us       0.00 us       0.00 us             60
>  RELEASEDIR
>       0.00      55.00 us      55.00 us      55.00 us              1
>  GETXATTR
>       0.00      31.50 us      27.00 us      36.00 us              2
>  STATFS
>       0.00      41.00 us      29.00 us      53.00 us              2
> ENTRYLK
>       0.00     198.00 us     198.00 us     198.00 us              1
>  CREATE
>       0.00     124.00 us     108.00 us     140.00 us              2
> READDIR
>       0.00      27.04 us      17.00 us      95.00 us             49
>  OPEN
>       0.00      74.89 us      13.00 us     206.00 us             47
>  STAT
>       0.01      87.02 us      11.00 us     391.00 us             50
> FLUSH
>       0.01     102.43 us      20.00 us     268.00 us             60
> OPENDIR
>       0.02     344.27 us      22.00 us     940.00 us             44
> WRITE
>       0.02     228.80 us      52.00 us     345.00 us             82
>  FXATTROP
>       0.03     199.89 us      19.00 us     404.00 us            120
>  READDIRP
>       0.05      91.41 us      23.00 us     832.00 us            421
>  LOOKUP
>      99.86  632698.45 us      17.00 us 1999724.00 us            126
>  FINODELK
>
> Observe that most of the delay is in FINODELK fop.
>
>       Possible Solution:
>       With the patch: http://review.gluster.org/4468 we started
> maintaining open-fd count in the inode. We need to implement xdata based
> xattr retrieval in write-fop and get open-fd-count in write fop. Remember
> the open-fd-count received from the write-fops and maintain it in
> afr-fd-ctx. If the open-fd count is >1 post-op-delay is immediately
> disabled for that write fop. All write-fops take into consideration this
> count to determine whether to enable eager-lock, post-op-delay for that
> write fop.
>
> Let me know if you foresee any issues with this approach.
>
> https://bugzilla.redhat.com/**show_bug.cgi?id=910217<https://bugzilla.redhat.com/show_bug.cgi?id=910217>is tracking this issue.
>


Ideally you would want open-fd count to be retrieved in all fops, and only
when an eager lock has been acquired. Any fop callback's xattr_rsp
inspection should potentially wake up the sleeping post-op-delay in that
inode (and disable further eager locking temporarily).

Avati
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://supercolony.gluster.org/pipermail/gluster-devel/attachments/20130211/aeef027d/attachment-0001.html>


More information about the Gluster-devel mailing list