Cygwin Filesystem Performance degradation 1.7.5 vs 1.7.7, and methods for improving performance

Derry Shribman derry@hola.org
Thu Oct 7 14:40:00 GMT 2010


Hi,

> What's really strange is the fact that the non-GENERIC_READ version is
> noticable *slower* when accessing a Samba share.  I checked the access
> with sysinternal's Procmon, but apart from the different acesss flags,
> eveything else is identical.  Very strange, that.
>
> I didn't apply the patch for now, just attached it here.  Maybe I did
> something wrong?!?

Here's a quick guess on what the problem may be:
---------------------------------------------------------------
For local shares (non-network shares: NTFS, FAT, UDFS), opening a 
non-GENERIC_READ handle should be cheap, since the FS driver does not really 
need to "open" the file's data. So we saw in the perf-tests this is around 0.02ms.

For network shares (SAMBA), opening any handle, even a non-GENERIC_READ handle 
requires a round-trip to the SAMBA server over the network. This could easily be 
1ms for LAN (and much much more for WAN). And only after you have the handle you 
can query it. So thats what the "open network file information" structures and 
APIs are: for network shares that the additional round-trip for 
CreateFile/CloseFile makes it slower.
---------------------------------------------------------------

If so, what is needed is that lstat() will do QIF/QDF() for local shares, and 
QAF() for network shares.
If so - the information on the volume per-lstat() request is already available 
in cygwin.

Derry



More information about the Cygwin-developers mailing list