X-Recipient: archive-cygwin@delorie.com X-SWARE-Spam-Status: No, hits=0.5 required=5.0 tests=AWL,BAYES_00,SARE_RECV_IP_080178 X-Spam-Check-By: sourceware.org Message-ID: <4C7B9327.9030204@graphtech.co.il> Date: Mon, 30 Aug 2010 14:16:55 +0300 From: Sagi Ben-Akiva User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.11) Gecko/20100714 SUSE/2.0.6-3.1 SeaMonkey/2.0.6 MIME-Version: 1.0 To: cygwin@cygwin.com Subject: Cygwin slow on x64 systems Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner@cygwin.com Mail-Followup-To: cygwin@cygwin.com Delivered-To: mailing list cygwin@cygwin.com 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