Yes! I've confirmed that!

With TCP_NODELAY Cygwin and Linux times are similar.
It seems that there is some issue with the Naggle algorithm on Windows for sure.

Thanks

Pedro Inacio


On 2006/03/15, at 21:49, Corinna Vinschen wrote:



It looks like this is a TCP_NODELAY issue. You tend to get the problem if a socket is used "interactively", which means, being used for reading
and writing in arbitrary order.

Unfortunately the Nagle algorithm on Windows is somewhat sluggish. I've
tried your echo_server with and without Nagle disabled.  Sending a 17
Megs file from my Cygwin box to an echo_server on my Linux box takes
between 4 and 5 seconds.

Sending a 17 Megs file from Linux to an echo_server on Cygwin takes
about 55 seconds.  However, when I disable the Nagle algorithm in the
echo_server, it takes between 2 and 9 seconds.  I don't understand the
unexact interval, but I also don't see how that could be Cygwin's fault.


--- echo_server.c.ORIG  2006-03-15 22:37:41.905621200 +0100
+++ echo_server.c       2006-03-15 22:45:56.597789300 +0100
@@ -62,6 +62,10 @@ int main(void) {

   fcntl(client_fd, F_SETFL, fcntl(client_fd, F_GETFL) | O_NONBLOCK);

+  int opt = 1;
+ if (setsockopt(client_fd, IPPROTO_TCP, TCP_NODELAY, &opt, sizeof opt) == -1) + fprintf(stderr,"setsockopt TCP_NODELAY: %.100s", strerror (errno));
+
   while(1) {
     FD_ZERO(&read_fds);
     FD_ZERO(&write_fds);


Corinna

--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

Reply via email to