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

Corinna Vinschen corinna-cygwin@cygwin.com
Mon Aug 30 13:20:24 GMT 2021


On Aug 30 15:00, Corinna Vinschen wrote:
> 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...

That probably doesn't make sense.  If WriteFile returns without writing
something, what should overlapped io be waiting on?


Corinna


More information about the Cygwin-developers mailing list