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