X-Recipient: archive-cygwin AT delorie DOT 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 AT cygwin DOT 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 AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT 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