[PATCH] workaround for sigproc_init

Corinna Vinschen corinna-cygwin@cygwin.com
Mon Aug 1 08:57:00 GMT 2011


On Jul 31 14:51, Christopher Faylor wrote:
> On Sun, Jul 31, 2011 at 10:26:23AM +0200, Corinna Vinschen wrote:
> >On Jul 30 17:04, Christopher Faylor wrote:
> >> On Fri, Jul 29, 2011 at 08:41:10PM +0900, jojelino wrote:
> >> >As sigproc_init is called during dll initialization, wait_sig thread is 
> >> >not created as soon as possible.(this is known in msdn createthread 
> >> >reference. http://msdn.microsoft.com/en-us/library/ms682453(v=vs.85).aspx)
> >> >And then wait_sig starts to wake up as sig_dispatch_pending enters 
> >> >waitforsingleobject. then main thread stops for few ms. and it shows 
> >> >poor performance.
> >> 
> >> Incidentally, the intent of the now-defunct wincap
> >> wincap.has_buggy_thread_startup was to avoid creating wait_sig during
> >> thread startup, moving it to dll_crt0_1() which is the code that
> >> eventually calls main().
> >> 
> >> (This was all rehashed back in August/September 2010)
> >> 
> >> Although I didn't fiddle with that myself, Corinna reported that having
> >> the value set had no effect in her test cases so I don't think your
> >> analysis here is 100% correct.
> >
> >Erm, I tested on 32 bit.  The slowdown occured on all platforms, not
> >only 64 bit.  64 bit is still only half as fast in the date loop for
> >reason or reasons unknown.
> 
> With my recent changes, I see about 10% difference between W7 64-bit
> and XP 32-bit on the same machine.  W7 64-bit is slower.

Interesting.  I tested on identical virtual hardware.

  for i in `seq 1 300`; do date; done > list.log

This takes 6.8 secs on W7 32 bit, 10.7 secs on W7 64 bit, and 10.6 secs
on 2008 R2 64 bit with two virtual CPUs.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat



More information about the Cygwin-patches mailing list