* net.cc (fdsock): Change default values for socket buffers on 32 bit
to fix performance on 10Gb networks.
This commit is contained in:
parent
5c6a0f3117
commit
f70b9c32d5
|
@ -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>
|
2014-11-17 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
* uinfo.cc (pwdgrp::fetch_account_from_windows): Allow fetching of
|
* uinfo.cc (pwdgrp::fetch_account_from_windows): Allow fetching of
|
||||||
|
|
|
@ -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
|
this is no problem on 64 bit. So we set the default buffer size to
|
||||||
the default values in current 3.x Linux versions.
|
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? */
|
(*) Maximum normal TCP window size. Coincidence? */
|
||||||
#ifdef __x86_64__
|
#ifdef __x86_64__
|
||||||
((fhandler_socket *) fd)->rmem () = 212992;
|
((fhandler_socket *) fd)->rmem () = 212992;
|
||||||
((fhandler_socket *) fd)->wmem () = 212992;
|
((fhandler_socket *) fd)->wmem () = 212992;
|
||||||
#else
|
#else
|
||||||
((fhandler_socket *) fd)->rmem () = 65535;
|
((fhandler_socket *) fd)->rmem () = 64512;
|
||||||
((fhandler_socket *) fd)->wmem () = 65535;
|
((fhandler_socket *) fd)->wmem () = 64512;
|
||||||
#endif
|
#endif
|
||||||
if (::setsockopt (soc, SOL_SOCKET, SO_RCVBUF,
|
if (::setsockopt (soc, SOL_SOCKET, SO_RCVBUF,
|
||||||
(char *) &((fhandler_socket *) fd)->rmem (), sizeof (int)))
|
(char *) &((fhandler_socket *) fd)->rmem (), sizeof (int)))
|
||||||
|
|
Loading…
Reference in New Issue