Marco Atzeri via Cygwin-apps wrote:

On 16.12.2020 13:13, Hamish McIntyre-Bhatty via Cygwin-apps wrote:
Hi,

So I know it's been mentioned a lot that fork is slow on Cygwin, but
compared to other people's machines, eg when building, it seems way
slower for me.

First I'd like to know if there's a good way to measure this that anyone
has found, because I'm not sure how to measure it. If I print multiple
lines with echo in a script, I can see it printing maybe 2-3 a second -
it's very slow.

I think this might be because I'm using a Virtual Machine with
VirtualBox, and QEMU/KVM might be quicker. I'm using Avira Antivurus,
with exceptions for the cygwin install folders (C:\cygwin64, C:\cygwin).

It might be nice if we could so some comparisons so I can figure out
what's wrong.

Hamish

Same AV here, W10 64bit (no VM), 2 year old Laptop

model name      : Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
4 cores

https://github.com/mondalaci/fork-benchmark
it seems there is a aging effect

Result of power management? Could possibly be prevented if another minor cpu load is run in parallel.



$ ./fork-benchmark.exe 1000
Forked, executed and destroyed 1000 processes in 39.928576 seconds.

$ ./fork-benchmark.exe 1000
Forked, executed and destroyed 1000 processes in 42.701295 seconds.

$ ./fork-benchmark.exe 1000
Forked, executed and destroyed 1000 processes in 49.890909 seconds.

$ ./fork-benchmark.exe 1000
Forked, executed and destroyed 1000 processes in 61.657031 seconds.




9 year old PC, W10 64bit, no VM, Intel i7-2600K CPU @ 3.4GHz, 4 cores / 8 threads

AV: Windows Defender
Cygwin x86_64

Protection on:

$ ./fork-benchmark-64 1000
Forked, executed and destroyed 1000 processes in 16.651101 seconds.

$ ./fork-benchmark-64 1000
Forked, executed and destroyed 1000 processes in 16.674107 seconds.

Protection off:

$ ./fork-benchmark-64 1000
Forked, executed and destroyed 1000 processes in 14.281071 seconds.

$ ./fork-benchmark-64 1000
Forked, executed and destroyed 1000 processes in 14.426482 seconds.


An alternative which could be run out-of-the-box is the good old 'date(s) per second' benchmark. Its results are comparable:

$ while true; do date; done | uniq -c
...
     53 Wed Dec 16 19:23:26 CET 2020   <== Protection on
     54 Wed Dec 16 19:23:27 CET 2020
     56 Wed Dec 16 19:23:28 CET 2020
     55 Wed Dec 16 19:23:29 CET 2020
     56 Wed Dec 16 19:23:30 CET 2020
...
     52 Wed Dec 16 19:23:37 CET 2020
     54 Wed Dec 16 19:23:38 CET 2020
     56 Wed Dec 16 19:23:39 CET 2020
     63 Wed Dec 16 19:23:40 CET 2020   <== Protection off
     63 Wed Dec 16 19:23:41 CET 2020
     62 Wed Dec 16 19:23:42 CET 2020
     64 Wed Dec 16 19:23:43 CET 2020
...
     63 Wed Dec 16 19:23:51 CET 2020
     64 Wed Dec 16 19:23:52 CET 2020
     63 Wed Dec 16 19:23:53 CET 2020
     55 Wed Dec 16 19:23:54 CET 2020   <== Protection on
     48 Wed Dec 16 19:23:55 CET 2020
     53 Wed Dec 16 19:23:56 CET 2020
     54 Wed Dec 16 19:23:57 CET 2020
     54 Wed Dec 16 19:23:58 CET 2020
...


Cygwin x86 is somewhat slower:

Protection on:

$ ./fork-benchmark-32.exe 1000
Forked, executed and destroyed 1000 processes in 19.231766 seconds.

Protection off:

$ ./fork-benchmark-32.exe 1000
Forked, executed and destroyed 1000 processes in 17.107739 seconds.

Regards,
Christian

Reply via email to