[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 02:02:18 UTC 2017


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



--- Comment #13 from nh2 <nh2-redhatbugzilla at deditus.de> ---
Another weird thing that I haven't demystified yet:


  # strace -wc -f -e getdents,lstat ls -1U /glustermount/largenames-10k/ >
/dev/null
  % time     seconds  usecs/call     calls    errors syscall
  ------ ----------- ----------- --------- --------- ----------------
  100.00    0.208856       11603        18           getdents
  ------ ----------- ----------- --------- --------- ----------------
  100.00    0.208856                    18           total

  # strace -wc -f -e getdents,lstat ls -lU /glustermount/largenames-10k/ >
/dev/null
  % time     seconds  usecs/call     calls    errors syscall
  ------ ----------- ----------- --------- --------- ----------------
   74.99    0.168202          17     10001           lstat
   25.01    0.056089        3116        18           getdents
  ------ ----------- ----------- --------- --------- ----------------
  100.00    0.224291                 10019           total


Notice the difference ls `-1` vs `-l`, the former stat()s all files and the
latter doesn't.

For some weird reason, when I also stat() as above with `-l`, getdents()
magically get faster!

It would make sense to me if the present of getdents() made stat()s faster
(e.g. as part of some `stat-prefetch`, though I have that off according to my
posted volume config), but not the other way around.

What might be going on here?

-- 
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