Why is stat slow?

Eliot Moss via Cygwin <[email protected]>
Newsgroups gmane.os.cygwin
Message-ID <[email protected]>
Dear Cygwin-ers --

I'm sure this has been asked before, more than once, but I am again wondering
what, specifically, makes stat (the program, but presumably also the syscall)
substantially slower on Cygwin compared to stat on WSL2.  I am talking about
an external HDD (not solid state) on my D: drive.  It shows under WSL 2 as
/mnt/d like this (output of mount):

D:\ on /mnt/d type 9p 
(rw,noatime,aname=drvfs;path=D:\;uid=0;gid=0;symlinkroot=/mnt/,cache=5,access=client,msize=65536,trans=fd,rfd=5,wfd=5)

On Cygwin it shows up like this (yes, mount shows two lines):

D: on /cygdrive/d type ntfs (binary,notexec,posix=0,user)
D: on /cygdrive/d type ntfs (binary,noacl,posix=0,user,noumount,auto)

My /etc/fstab lines are:

none /cygdrive cygdrive binary,noacl,posix=0,user 0 0
d: /cygdrive/d ntfs binary,posix=0,user,auto,notexec 0 0

(Presumably this has something to do with two mounts showing ...)

On D; I have a folder with hundreds of 2Gb files (they are backups, split into
2Gb portions).  On Cygwin

time stat <the files> gives

real    2m12.425s
user    0m0.249s
sys     0m1.312s

A second run shortly after the first completes very quickly, indicating the
presence of a cache :-) .

time stat <the files> on WSL2 gives:

real    0m2.208s
user    0m0.026s
sys     0m0.149s

This is after a reboot, so there is no caching available.  So, why is Cygwin
60 times slower, even when WSL2 has the handicap of having to work through the
9p adapter / COM surrogate?

Mostly I am curious, but this is also relevant because I rsync this file
collection to offsite storage, and the stat time is about what it takes for
rsync to start up - it needs to check file times and lengths.

This makes me wonder if there is something we can do to make this better, by
figuring out what WSL2 / 9p are doing ...

Best - Eliot Moss

-- 
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.