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