This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: select() too slow


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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]