Curiosity about file access performance

Takashi Yano takashi.yano@nifty.ne.jp
Fri Oct 29 10:14:34 GMT 2021


On Fri, 29 Oct 2021 10:35:08 +0100
Eliot Moss wrote:
> I think a lot of us know that fork() under Cygwin is slower than on Linux and
> have some grasp of why.  But I have noticed that file access is rather lower
> under Cygwin as well.  My "poster child" for this is running latex.  I am
> working on writing a book, which includes a huge number of LaTeX style files
> and such.  Under WSL1 (which has the same fork cost issues as Cygwin for
> similar reasons), reading the style files goes by in little more than the
> blink of an eye (about 1 sec), while on Cygwin it takes a little over 17 seconds.
> 
> The time to process the body of the book is 23 seconds under WSL1 and 35 under
> Cygwin.  So the total times are 53 seconds under Cygwin and 24 under WSL1.  I
> believe the LaTeX installations are the same versions, and I get the same
> outputs.  Both LaTeX's are 64 bit programs.  There is not much forking here
> (at least I don't believe there is, but maybe there is under the cover for
> doing things with pdf figures or something), but a fair amount of file I/O.
> 
> For many / most things, the Cygwin overhead is tolerable; for running this
> book, since I will be doing it over and over, it was worth investing in
> getting everything set up on WSL1.
> 
> But it got me wondering as to why?

Why do you think the cause is the file access performance?
I tested the file access speed using dd as follows.

In cygwin:
[yano@Express5800-S70 ~]$ dd if=/dev/zero of=test.dat bs=1M count=500
500+0 records in
500+0 records out
524288000 bytes (524 MB, 500 MiB) copied, 0.186714 s, 2.8 GB/s
[yano@Express5800-S70 ~]$ dd if=test.dat of=/dev/null bs=1M count=500
500+0 records in
500+0 records out
524288000 bytes (524 MB, 500 MiB) copied, 0.125709 s, 4.2 GB/s

In WSL1:
Express5800-S70:~> dd if=/dev/zero of=test.dat bs=1M count=500
500+0 records in
500+0 records out
524288000 bytes (524 MB, 500 MiB) copied, 0.301657 s, 1.7 GB/s
Express5800-S70:~> dd if=test.dat of=/dev/null bs=1M count=500
500+0 records in
500+0 records out
524288000 bytes (524 MB, 500 MiB) copied, 0.229617 s, 2.3 GB/s

The result shows the file access performance of cygwin is
better than WSL1.

I think the cause of your problem is something other than
file access performance.

-- 
Takashi Yano <takashi.yano@nifty.ne.jp>


More information about the Cygwin mailing list