cygrunsrv + sshd + rsync = 20 times too slow -- throttled?

Corinna Vinschen corinna-cygwin@cygwin.com
Mon Aug 30 13:00:40 GMT 2021


On Aug 30 10:27, Corinna Vinschen wrote:
> [Moving discussion to cygwin-developers]
> 
> On Aug 29 11:57, Ken Brown via Cygwin wrote:
> > Corinna, do you still see any benefit to switching to PIPE_NOWAIT?  AFAICT,
> > it wouldn't decrease the code size at this point, so the only question is
> > whether it might improve performance.
> 
> Pipes are already using PIPE_NOWAIT aka FILE_PIPE_COMPLETE_OPERATION
> mode, see set_pipe_non_blocking.  The problem is that it's not used for
> blocking pipes.  Rather, blocking pipes use overlapped IO.  Overlapped
> IO is conceptually upside-down from the POSIX concept of non-blocking.
> Also, the information returned in FilePipeLocalInformation is historically
> borderline.  For kicks, see
> https://cygwin.com/pipermail/cygwin-patches/2004q4/005002.html
> 
> So my suggestion is to try switching to non-blocking Windows pipes
> entirely, even for blocking pipes on the user level.  It works nicely
> for sockets.

On second thought, I'm not so sure how to block on non-blocking pipes
on writing.  Assuming a write fails because the buffer is full, we
don't have a waitable object to wait on.  Unless the pipe handle is
signalled if writing is allowed, but that would be a first in Windows.
So in theory this would still require overlapped IO.  Does that still
work as desired if the pipe mode is non-blocking?  I don't think I ever
tried that...


Corinna


More information about the Cygwin-developers mailing list