This is the mail archive of the cygwin@sources.redhat.com 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]

RE: Cygwin fstat and NT caching


> -----Original Message-----
> From: Dan Morris [mailto:dmorris@tiqit.com]
> Sent: Wednesday, January 03, 2001 9:52 AM
> To: cygwin@sources.redhat.com
> Subject: Cygwin fstat and NT caching
> 
> 
> My supervisor pointed out to me yesterday that "du" takes a 
> long time to run
> under Cygwin; out of curiosity, I've been looking into the 
> source of the
> delays, and I'm curious if anyone else has any insights... 
> 
> This is me running 'du' on my entire hard drive under cygwin :
> 
> dmorris@SOAPY /edrive
> $ time du
> 
> ... blah blah blah ... all my files go by ... disk spins like mad ... 
> 
> ... I get some coffee ...
> 
> 0       ./cygwin/edrive
> 1       ./cygwin/.ssh
> 208758  ./cygwin
> 7336071 .
> 
> real    5m35.523s
> user    0m10.064s
> sys     0m32.877s
> 
> Five minutes is a long time.

Not so damned bad in fact :-)

Don't forget your disk seems to be 7.5 GigaBytes long! On my Linux box, with
Fast&Wide SCSI disks, getting a "du -s ." on a drive wheer 2.3 GigaBytes are
used takes 30sec real time (approx. 10sec CPU time) first run and 10sec
successive runs, so extrapolating to 7Gigabytes give not far from 2 minutes
for a non-cached du and 30sec for a cached one.

Here I have a dual PentiumIII-550MHz with very fast disks and 1GigaByte of
RAM so Linux can use big caches; a 2 to 3-fold increase could be expected,
depending on your hardware (you give no indication about it).

> 
> Now this is me running the Windy Tree CommandPack's version 
> of "du" on the
> same drive, from inside Cygwin (so I can use "time") :
> 
> dmorris@SOAPY /edrive
> $ time /edrive/Program\ Files/utils/commands/du.exe
> 
> Windy Tree CommandPack - du (diskusage)
> (C) Copyright 1999 by Windy Tree. More info at www.windytree.com
> --------------------------------------------------------------
> -----------------
> 
> ... files race by quickly ... disk doesn't move ... clearly 
> using cached
> inodes...
> 
>    4775838      e:\cygwin\home
>          0      e:\cygwin\edrive
>        350      e:\cygwin\.ssh
>  209518621      e:\cygwin
> 
> 7494592864 Bytes total in 67845 files, 4516 directories
> 
> real    0m35.301s
> user    0m0.170s
> sys     0m0.120s
> 

30 sec is what I would expect for a fast machine using cached info for about
7Gbytes (if you have plenty of memory of course).

> 
> Thirty seconds for WindyTree, five minutes for Cygwin; this result is
> repeatable (that is, the result you see above doesn't mean 
> that I'm just
> running the Cygwin version first, then letting the WindyTree 
> version take
> advantage of all the caching).
> 
> Anyone know why this might be?  I looked through the du code; the only
> repeated filesystem access seems to be through stat() and 
> lstat().  So I
> looked through stat() and lstat(), and I can't see any place 
> where disk
> flushes are explicitly forced, or any place where Win32 calls 
> are made with
> specific flags for ignoring the inode cache ... these seem to 
> be the Win32
> filesystem calls that get made :
> 
> GetVolumeInformation
> GetDriveType
> GetFileInformationByHandle
> GetFileSize
> GetFileType
> FindFirstFile
>  
> I don't know why any of them would ignore the cache... any ideas?  I'm
> running Win2000, if that helps anyone...

Probably this may have to do with the way cygwin define permissions for
files: to know if a file is executable, stat() has to READ the file itself,
thus adding disk traffic that can very difficultly be cached, especially
with a 7.5Gigabytes disk usage... Just that could be enough to flush
completely the disk cache :-)

Regards,

	Bernard

--------------------------------------------
Bernard Dautrevaux
Microprocess Ingenierie
97 bis, rue de Colombes
92400 COURBEVOIE
FRANCE
Tel:	+33 (0) 1 47 68 80 80
Fax:	+33 (0) 1 47 88 97 85
e-mail:	dautrevaux@microprocess.com
		b.dautrevaux@usa.net
-------------------------------------------- 

--
Want to unsubscribe from this list?
Check out: http://cygwin.com/ml/#unsubscribe-simple


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