[linux-cifs-client] Slow Folder Traversal on One system, Fast on Another

Tanthrix tanthrix at gmail.com
Thu Jan 21 01:34:05 MST 2010


Jeff Layton wrote:
> It seems strange (and is probably a bug) that the older system doesn't
> cause all of those QPathInfo calls. I suppose the ls on that system
> might be able to use the d_type field in the dirent to determine a type
> and decides that it doesn't need to stat() each entry. Or it could be a
> bug and that older kernel didn't do an on the wire call for each
> stat(). You might consider stracing both colorized 'ls' commands and
> see what they're actually doing at a system call level.
>
> As far as preventing the "problem", it's hard for me to say since it
> all sort of depends on what the program is doing at the system call
> level. I suspect that it too is probably doing a stat() on each
> directory entry. In that case, no there's little you can do to help
> this. A stat() system call currently means at least one call out on
> the wire per file.
>
> One thing you can try is turning off querying for server inode numbers
> (mount with -o noserverino). It'll mean that you can't properly detect
> hardlinks but it'll prevent one on-the-wire call per stat() syscall in
> your case.
Well, I just tried a few tests of -o noserverino on my big test share, 
as well as -o nounix just for fun, and again neither made any real 
decrease in time. At best it was faster by about 200 ms, but that's well 
within the margin of error of me pressing my stop watch button.

There is some good news though, as I have managed to side-step the 
problem a bit.  I picked up a gigabit switch today, figuring it 
certainly couldn't hurt the problem. The results: Going from my old 
100mb switch to the new 1000mb switch dropped my test share from ~18 
seconds to 4-5 seconds, and the share I actually use on a daily basis is 
now down to about 2 seconds flat.

For now, I think I can live with that, considering how much time I have 
already spent on this issue. Besides, now that I can transfer files 
between my two systems at 60 MB/s sustained, I may end up just moving 
all my media right onto the linux box in question and share it with my 
other linux machines via NFS, further making this a non-issue. So unless 
you would like me to do any experiments for your own curiosity, I think 
I'm going to consider this matter closed until the next time I've got 
some free time to kill.

Thanks again for all your help Jeff, it has been much appreciated.




More information about the linux-cifs-client mailing list