cygwin performance problem

Corinna Vinschen vinschen at redhat.com
Mon Apr 24 02:42:09 EST 2006


Hi Damien,

On Apr 23 23:01, Damien Miller wrote:
> In this case, shouldn't cygwin be using socketpair() for interprocess
> communication everywhere? (assuming that there is a select()-like 
> function available in the Win32 API). This switch can be made by 

Yes, actually there is a select function, but it's implemented in the
Windows socket layer, so it's available exclusively for sockets (and
utilized for select on sockets in Cygwin, obviously).

> deleting the following line from "*-*-cygwin*)" block:
> 
> 	AC_DEFINE(USE_PIPES, 1, [Use PIPES instead of a socketpair()])
> 
> To fully use socketpairs, you will need the following patch to scp.c,
> as it doesn't seem to care right now:

Thanks for the patch.  I tried it, but using socketpairs is slower than
using pipes, so, for performance reasons, I'd rather stick with pipes,
now that we have found a nice workaround in Cygwin.

Way back when we started using USE_PIPES for Cygwin, the reason was
actually the performance.  Since the select function has changed over
the time, I assume the now fixed performance problem didn't exist years
ago.

As for socketpairs, since Windows has no concept for AF_UNIX/AF_LOCAL
sockets, these sockets are implemented as AF_INET sockets under the
hood.  Using AF_INET sockets locally is 30-40% slower than using pipes
on Windows.


Corinna

-- 
Corinna Vinschen
Cygwin Project Co-Leader
Red Hat




More information about the openssh-unix-dev mailing list