Cygwin slow on x64 systems

Sagi Ben-Akiva sagi@graphtech.co.il
Mon Aug 30 11:23:00 GMT 2010


Hello,

For the last couple of weeks I'm trying to identify the cause for cygwin 
slowdown on x64 machines which was reported by David Morgan about 6 
months ago.

I wrote a little bash script which prints the result of 'date -s' to a 
file in a loop and then counts the number of times the same second 
appears in that file.
I used this script to test all available cygwin revisions snapshots 
(which I downloaded from 
ftp://www.fruitbat.org/pub/cygwin/circa/index.html) for cygwin version 
1.5.19-4.
I was able to identify the exact change which introduce the slowdown.

With my test script for cygwin version 1.5.19-4, snapshot timestamp 
1142005204 I'm able to get ~40 lines/second, but with the same version, 
snapshot timestamp 1142338816 the result is ~18 lines/second.

Using cvsps I was able to generate a patchset which contains all the 
changes between those 2 revisions.
I then applied the changes one by one and built cygwin1.dll for each 
change, then I ran my test script again for each cygwin1.dll version and 
I found that the change to winsup/cygwin/dcrt0.cc from '2006/03/12 
23:57:03' introduce this issue.

The log for this change is :

* dcrt0.cc (dll_crt0_0): Call sigproc_init during init startup.
(_dll_crt0): Don't worry about sync_startup.  Just wait for sigthread here.

This change includes 2 different sub-changes :
1. Moving the call to sigproc_init from dll_crt0_1 function to 
dll_crt0_0 - which doesn't affect performance.

2. a. Moving the call to wait_for_sigthread from dll_crt0_1 to _dll_crt0 
which calls dll_crt0_1.
    b. Deleting the call to WaitForSingleObject,
       i.e. : "Don't worry about sync_startup"

I can confirm that the 2nd sub-change is the cause for the slowdown.

Any help will be appreciated.

Thank you,
   Sagi.

-- 

Sagi Ben-Akiva - sagi at graphtech dot co dot il
GraphTech Computer Systems




--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list