cygrunsrv + sshd + rsync = 20 times too slow -- throttled?
Takashi Yano
takashi.yano@nifty.ne.jp
Fri Sep 10 22:57:34 GMT 2021
On Fri, 10 Sep 2021 11:17:58 -0400
Ken Brown wrote:
> I've rerun your test with the latest version, and the test results are similar.
> I've also run a suite of fifo tests that I've accumulated, and they all pass
> also, so I pushed your patch.
>
> I think we're in pretty good shape now. The only detail remaining, AFAIK, is
> how to best avoid a deadlock if the pipe has been created by a non-Cygwin
> process. I've proposed a timeout, but maybe there's a better idea.
I am not pretty sure what is the problem, but is not the following
patch enough?
diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h
index d309be2f7..13fba9a14 100644
--- a/winsup/cygwin/fhandler.h
+++ b/winsup/cygwin/fhandler.h
@@ -1205,6 +1205,7 @@ public:
select_record *select_except (select_stuff *);
char *get_proc_fd_name (char *buf);
int open (int flags, mode_t mode = 0);
+ void open_setup (int flags);
void fixup_after_fork (HANDLE);
int dup (fhandler_base *child, int);
int close ();
diff --git a/winsup/cygwin/fhandler_pipe.cc b/winsup/cygwin/fhandler_pipe.cc
index 6994a5dce..d84e6ad84 100644
--- a/winsup/cygwin/fhandler_pipe.cc
+++ b/winsup/cygwin/fhandler_pipe.cc
@@ -191,6 +191,17 @@ out:
return 0;
}
+void
+fhandler_pipe::open_setup (int flags)
+{
+ fhandler_base::open_setup (flags);
+ if (get_dev () == FH_PIPER && !read_mtx)
+ {
+ SECURITY_ATTRIBUTES *sa = sec_none_cloexec (flags);
+ read_mtx = CreateMutexW (sa, FALSE, NULL);
+ }
+}
+
off_t
fhandler_pipe::lseek (off_t offset, int whence)
{
AFAIK, another problem remaining is:
On Mon, 6 Sep 2021 14:49:55 +0200
Corinna Vinschen wrote:
> - What about calling select for writing on pipes read by non-Cygwin
> processes? In that case, we still can't rely on WriteQuotaAvailable,
> just as before.
--
Takashi Yano <takashi.yano@nifty.ne.jp>
More information about the Cygwin-developers
mailing list