Tcp segmentation offload (tso), Flow control – Dell Emulex Family of Adapters User Manual
Page 869

Emulex Drivers Version 10.2 for Linux User Manual
P010081-01A Rev. A
3. Configuration
Network Performance Tuning
869
echo 64000000 > /proc/sys/net/core/rmem_max
echo 32000000 > /proc/sys/net/core/wmem_default
echo 32000000 > /proc/sys/net/core/wmem_max
These settings assume ideal conditions such as low latency, zero (or close-to-zero)
packet loss in the network, enough free memory, and 10 Gb/s path-to-peer system.
These tcp_rmem and tcp_wmem values are also the default values in recent RHEL 5
distributions. If your application requires best throughput with very small number of
connections (less than four), it may help to increase the tcp_rmem and tcp_wmem to
much larger values:
echo 4096 87380 16777216 > /proc/sys/net/ipv4/tcp_rmem
echo 4096 65536 16777216 > /proc/sys/net/ipv4/tcp_wmem
TCP Segmentation Offload (TSO)
In low-loss networks, TSO considerably improves performance, and therefore must be
enabled. TSO is enabled by default in the OneConnect network driver.
The /proc/sys/net/ipv4/tcp_tso_win_divisor process variable controls how
aggressive the network stack can be in making TSO requests. For low-loss networks,
Emulex recommends TSO divisor values in the range of 2 to 16. In most distributions,
the default value of 3 seems to be the optimal choice for a no-loss network.
Smaller divisor values result in larger TSO chunks and better throughput, as well as
better CPU utilization. However, if the receiver or the network is dropping frames (too
many re-transmits on the transmit side as indicated by netstat -st), it may help to make
TSO chunks smaller (by increasing the divisor value) or to turn TSO off. For example, to
set the divisor level to a value of 8, run
echo 8 > /proc/sys/net/ipv4/tcp_tso_win_divisor
To turn TSO on or off, run one of the following ethtool commands:
ethtool -K eth
ethtool -K eth
where eth
eth0).
Flow Control
The OneConnect adapters and LPe16202 CFAs in NIC mode support IEEE 802.3x
standard flow control, which uses control packets to temporarily pause the
transmission of packets between two endpoints. These control messages are
point-to-point, and are not forwarded by switches or routers. The adapter can respond
to flow control packets by temporarily pausing transmits. The adapter can send flow
control pause packets when the transmitter is overwhelming the system’s receive
bandwidth.
Flow control can greatly improve performance, as described in the following examples:
The adapter is installed in 4x PCIe slot or an underpowered server system.