Should I enable TCP Offloading ?
Tags: TCP Offloading
Newer Windows variants and Network Adapter drivers include a number of "TCP Offloading" options. Windows 8/2012 server, for example includes:
Receive-Side Scaling State (RSS)
Receive Segment Coalescing State (RSC)
Large Send Offload (LSO)
In addition to the OS level TCP offloading options, Network Adapter drivers have some of those, like "Checksum offload" and "Large Send Offload (LSO)" as well. Even if offloading is turned off at the OS level, the NIC driver can still use its own variant of offloading, check the driver properties as well!
Whether you should use TCP Offloading options is a tricky question depending on your usage, and which specific offloading you plan to use. It is generally recommended to keep some of them on for client machines because of improved throughput and lower CPU utilization (except LSO), and turn more of them off for servers, buggy NIC drivers, or when experiencing problems.
This recommendation stems from some buggy NIC drivers, that, when combined with TCP Offloading and multi-threaded applications can cause havoc to the NIC driver. It seems to be related to applications switching threads causing the NIC driver to switch its active TCP Offload connection in the NIC hardware and that switching process is prone to failure or excessive delay.
In conclusion, yes, TCP Offloading speeds up the connection and reduces CPU utilization when it works, use it in client machines, and with newer OS variants where bugs have been corrected, but be very careful in server environments, especially with LSO, and with multi-threaded applications. Test, then test again!
For server issues, see:
TCP Offloading again?!
Symantec Clearwell server recommendations
Specific hardware recommendations:
In Realtek Gigabit Network Adapters, disable: Flow Control (Rx & Tx DISABLED). Disabling Flow Control can reduce timeouts and considerably improve throughput under Windows 8, most likely due to buggy implementation at the driver level.
For Intel/Broadcom Adapters, Large Send Offload (LSO) can cause issues, disable it at the adapter driver level, and possibly in the OS TCP/IP network stack.