[Bugs] [Bug 1478411] Directory listings on fuse mount are very slow due to small number of getdents () entries

bugzilla at redhat.com bugzilla at redhat.com
Sun Sep 17 00:38:24 UTC 2017


https://bugzilla.redhat.com/show_bug.cgi?id=1478411



--- Comment #10 from Csaba Henk <csaba at redhat.com> ---
Nice work! I suggest to submit it to the fuse-devel ML.

* * *

As of glusterfs, another possible issue came up. The buffer that a given xlator
fills with dirents is fixed size (during the handling of a given readdir[p]
fop). However, various xlators operate with various dirent flavors (eg. posix
with system dirents, fuse wuth fuse dirents) so when the dirent holding buffer
is passed around between xlators, the converted dirents won't fill optimally
the next xlator's buffer. Practically, the fuse dirent is bigger, so not all of
the entries received from the underlying xlator will fit in the dirent buffer
of fuse after conversion. The rest will be discarded, and will have to be read
again on next getdents call.

> 3. But the saving grace is, each getdent call is not a network round trip like you > mentioned in initial comment. This is because of readdir-ahead caching in gluster.

Alas, the above described phenomenon defeats this too: because of the re-read
constraint the dir offsets of subsequent getdents' won't be monotonic, upon
which readdir-ahead deactivates itself.

Whether / to what rate does this occur might depend on the configuration.

@nh2: Therefore we'd like you to kindly ask to share your volume info and TRACE
level logs, from mount on to observing the small getdents() calls.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
You are the assignee for the bug.


More information about the Bugs mailing list