This is the mail archive of the cygwin-developers mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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

On Wed, Oct 13, 2010 at 04:30:27PM +0200, Yoni Londner wrote:
>I have prepared a patch with the following changes (I know you guys 
>prefer separate patch for each change - I will send multiple patches 
>later today):
>- caching symlink content (symlink_info::check). If we know that a file 
>is a symlink, as long as all it attributes did not change (CreationTime, 
>LastWriteTime ChangeTime, AllocationSize and FileAttributes) - then we 
>can be sure it is still pointing to the same file. this way we dont need 
>to open the file for reading (and read the content)
>- caching exec_state (fhandler_base::fstat_helper). as above, there is 
>no need to open the file and check the prefix, if we already did that 
>- reuse QueryInformationFile (fhandler_base::fstat_by_handle). as the 
>comment there explain: "If the file has been opened for other purposes 
>than stat, we can't rely on the information stored in pc.fnoi". but if 
>it is open for stat, we can use the information!
>- caching fs_info (fs_info::update): I know there is already caching 
>mechanism here, but my solution does not call 
>NtQueryVolumeInformationFile even once. (this option is not used by default)
>- not using ACL. this option is not used by default. it allows the user 
>to decide whether he wants to use ACL or not in runtime.

This is really interesting stuff but I will say it again: I do not like
piling on CYGWIN environment variable options to control this behavior.  If
we do need to go this route then I'd like to standardize on either a
naming convention or maybe a separate option like

set CYGWIN=fsaccess:noacl,file_cache


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]