
Issue 11
© Solarflare Communications 2014
286
Solarflare Server Adapter
User Guide
TCP/IP Checksum Offload
Checksum offload moves calculation and verification of IP Header, TCP and UDP packet checksums
to the adapter. The driver by default has all checksum offload features enabled. Therefore, there is
no opportunity to improve performance from the default.
TCP Segmentation Offload (TSO)
TCP Segmentation offload (TSO) offloads the splitting of outgoing TCP data into packets to the
adapter. TCP segmentation offload benefits applications using TCP. Non TCP protocol applications
will not benefit (but will not suffer) from TSO.
The Solaris TCP/IP stack provides a large TCP segment to the driver, which splits the data into MSS
size, each with adjusted sequence space and a hardware calculated checksum.
TCP Large Receive Offload (LRO) / RX Coalescing
LRO (called rx coalescing on Solaris) is a feature whereby the adapter coalesces multiple packets
received on a TCP connection into a single call to the operating system TCP Stack. This reduces CPU
utilization, and so improves peak throughput when the CPU is fully utilized.
LRO should not be enabled if you are using the host to forward packets from one interface to
another; for example if the host is performing IP routing or acting as a layer2 bridge. The driver has
LRO disabled by default.
TCP Protocol Tuning
TCP Performance can also be improved by tuning kernel TCP settings. Settings include adjusting send
and receive buffer sizes, connection backlog, congestion control, etc.
The transmit and receive buffer sizes may already be explicitly controlled by an application calling
setsockopt()
to set
SO_SNDBUF
or
SO_RCVBUF.
ndd -set /dev/tcp tcp_xmit_hiwat 524288
ndd -set /dev/tcp tcp_recv_hiwat 524288
The following settings may help if there are a large number of connections being made:
ndd -set /dev/tcp tcp_time_wait_interval 1000 # 1 sec for time-wait (min)
ndd -set /dev/tcp tcp_conn_req_max_q 4096 # increase accept queue
ndd -set /dev/tcp tcp_conn_req_max_q0 4096 # increase accept queue
ndd -set /dev/tcp tcp_conn_req_min 1024 # increase minimum accept queue
ndd -set /dev/tcp tcp_rst_sent_rate_enabled 0 # disable rst rate limiting
See the Internet Protocol Suite Tunable Parameters chapter of the Tunable Parameters Reference
Guide for more details:
http://docs.oracle.com/cd/E19082-01/819-2724/6n50b07lr/index.html
NOTE:
You can also add these settings to
/etc/system