* 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>
|
||||
|
||||
* 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
|
||||
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)))
|
||||
|
|
Loading…
Reference in New Issue