TCP Tuning Guide

Search
Tuning for Specific Network Interface Cards (NICs)

Intel e1000 on Linux

If you're using e1000 chips (Intel 1GE, often integrated into motherboards) the driver defaults to 256 Rx and 256 Tx descriptors. This is because early versions of the chipset only supported this. All recent versions have 4096, but the driver doesn't autodetect this.

To check if you are using an e1000 driver, do this:

    ethtool -i eth0
    

To increase the number of descriptors, add this to /etc/modprobe.conf:

    alias eth0 e1000
    options e1000 RxDescriptors=4096,4096 TxDescriptors=4096,4096
    

and then reboot.

To verify that this worked, run (as root): ethtool -g eth0

Chelsio 10Gig NIC, Linux and FreeBSD

It has been reported that both TCP Segmentation Offloading (TSO) and TCP Offload Engine (TOE) on the Chelsio NIC radically hurt performance on a WAN (they do help reduce CPU load without affecting throughput on a LAN).

To turn off TSO do this:

 ethtool -K interface tso off

To disable TOE requires using the Chelsio "nic" driver instead of the "toe" driver. See the README file that comes with the driver source code available at http://service.chelsio.com/ for more information.

Chelsio also provides a script called 'perftune.sh' to tune a variety of settings on Linux.


© 2003-2004, Lawrence Berkeley National Laboratory