TCP tuning in Windows and Linux

The following are general rules and might need to be revised per case

Windows server 2012: (StarWind recommendations)

netsh int tcp set supplemental template=datacenter
netsh int tcp set global rss=enabled
netsh int tcp set global chimney=enabled
netsh int tcp set global dca=enabled

https://forums.starwindsoftware.com/viewtopic.php?f=5&t=2293

Large send offload –> Disabled

Transmit Buffer –> Max (600)

http://www.kernsafe.com/tech-articles/networkdisk-performance-improves.aspx

Linux:

net.ipv4.tcp_window_scaling=1

net.ipv4.tcp_syncookies=1

net.core.rmem_max=16777216

net.core.wmem_max=16777216

net.ipv4.tcp_rmem=4096 87380 16777216

net.ipv4.tcp_wmem=4096 65536 16777216

—————————————————————————————————————————-

# watch cat /proc/net/tcp

http://www.cyberciti.biz/faq/linux-tcp-tuning/

https://wwwx.cs.unc.edu/~sparkst/howto/network_tuning.php

https://www.frozentux.net/ipsysctl-tutorial/chunkyhtml/tcpvariables.html

http://www.nateware.com/linux-network-tuning-for-2013.html#.Vd5k8tRzbDc

http://kaivanov.blogspot.ca/2010/09/linux-tcp-tuning.html

http://apmblog.dynatrace.com/2014/08/12/understanding-application-performance-network-part-tcp-window-size/

http://www.experts-exchange.com/OS/Microsoft_Operating_Systems/Q_28353794.html

—————————————————————————————————————–

https://anchorhelp.zendesk.com/entries/22664768-HTTP-Download-Speed

The problem might be associated with the default SendBufferSize value in the Apache httpd.conf file.  Windows seems to completely ignore this value and Apache will use the default Winsock value for the buffer size (4096).

This value can significantly reduce performance on High Latency/High Speed links when set too low.  You can change the default value in Windows so that Apache will then use this new value.

To change the default value in Windows:

1.Open regedit and browse to:

HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Services > AFD > Parameters

2.Create the following two DWORD values:

DefaultReceiveWindow

DefaultSendWindow

3.Set both of these values using DECIMAL (not Hex) through the following formula:

DefaultReceiveWindow = (Download Capacity in Kilobits * 1024) / 8

DefaultSendWindow = (Upload Capacity in Kilobits * 1024) / 8

For example, for a 10Mbit (10000 kbit) upload and download:

DefaultReceiveWindow = (10000 * 1024) / 8 = 1280000

DefaultSendWindow = (10000 * 1024) / 8 = 1280000

Note: Adding the above registry values may help you gain a substantial (up to 10x) performance boost.

————————————————————————————————————————

TcpWindowSize

https://technet.microsoft.com/en-us/library/cc938219.aspx

GlobalMaxTcpWindowSize

https://technet.microsoft.com/en-us/library/cc757802(v=ws.10).aspx

—————————————————————————————————————

https://en.wikipedia.org/wiki/TCP_tuning