]> sourceware.org Git - newlib-cygwin.git/commitdiff
* net.cc (fdsock): Change default values for socket buffers on 32 bit
authorCorinna Vinschen <corinna@vinschen.de>
Thu, 20 Nov 2014 08:29:31 +0000 (08:29 +0000)
committerCorinna Vinschen <corinna@vinschen.de>
Thu, 20 Nov 2014 08:29:31 +0000 (08:29 +0000)
to fix performance on 10Gb networks.

winsup/cygwin/ChangeLog
winsup/cygwin/net.cc

index c8419f46ce98619c7eb9358b78f7a988234f05da..46cd4c3fa801ee293908730858a9b51a128c76d5 100644 (file)
@@ -1,3 +1,8 @@
+2014-11-20  Iuliu Rus  <rus.iuliu@gmail.com>
+
+       * net.cc (fdsock): Change default values for socket buffers on 32 bit
+       to fix performance on 10Gb networks.
+
 2014-11-17  Corinna Vinschen  <corinna@vinschen.de>
 
        * uinfo.cc (pwdgrp::fetch_account_from_windows): Allow fetching of
index 8ff88ba116931c57853b40836ecaf346f0b26f8a..5c4959bdf4fc1ff804903fb597f30ba290f7cd2e 100644 (file)
@@ -621,13 +621,20 @@ fdsock (cygheap_fdmanip& fd, const device *dev, SOCKET soc)
      this is no problem on 64 bit.  So we set the default buffer size to
      the default values in current 3.x Linux versions.
 
+     NOTE 3. Setting the window size to 65535 results in extremely bad
+     performance for apps that send data in multiples of Kb, as they
+     eventually end up sending 1 byte on the network and naggle + delay
+     ack kicks in. For example, iperf on a 10Gb network gives only 10
+     Mbits/sec with a 65535 send buffer. We want this to be a multiple
+     of 1k, but since 64k breaks WSADuplicateSocket we use 63Kb.
+
      (*) Maximum normal TCP window size.  Coincidence?  */
 #ifdef __x86_64__
   ((fhandler_socket *) fd)->rmem () = 212992;
   ((fhandler_socket *) fd)->wmem () = 212992;
 #else
-  ((fhandler_socket *) fd)->rmem () = 65535;
-  ((fhandler_socket *) fd)->wmem () = 65535;
+  ((fhandler_socket *) fd)->rmem () = 64512;
+  ((fhandler_socket *) fd)->wmem () = 64512;
 #endif
   if (::setsockopt (soc, SOL_SOCKET, SO_RCVBUF,
                    (char *) &((fhandler_socket *) fd)->rmem (), sizeof (int)))
This page took 0.041277 seconds and 5 git commands to generate.