Intel® Ethernet 800 Series
Linux Performance Tuning Guide
Interrupt Moderation
Adaptive interrupt moderation is on by default and is designed to provide a balanced approach between low CPU utilization and high performance. While the default adaptive moderation rates works well for most conditions, for some workloads manual interrupt rates can show improved performance.
- To turn off adaptive interrupt moderation:
ethtool -C ethX adaptive-rx off adaptive-tx off - To turn on adaptive interrupt moderation (default):
ethtool -C ethX adaptive-rx on adaptive-tx on
When disabling adaptive interrupt moderation, a value for receive and transmit rates must be specified. The value can range from 0-236 (0=no limit) microseconds, providing an effective range of 4,237 to 250,000 interrupts per second. A good place to start for general tuning is 80 ms, or ~12,500 interrupts per second.
- To set interrupt moderation to a fixed interrupt rate of 80 ms (12,500 interrupts per second):
ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 80 tx-usecs 80
If rx_dropped counters increase during traffic (using ethtool -S ethX), you probably have too slow of a CPU, not enough buffers from the adapter's ring size (ethtool -G), or too low of an interrupt rate. If you are not maxed out on CPU utilization, you can increase the interrupt rate by lowering the ITR value. This uses more CPU, but services buffers faster, and requires fewer descriptors (ring size, ethtool -G).
If your CPU utilization is too high or at 100%, increasing the interrupt rate is not advised. In certain circumstances, such as a CPU bound workload, you might want to reduce the interrupt rate by increasing the Tx/Rx ms value to enable more CPU time for other applications.
If you require the lowest latency performance and/or have plenty of CPU to devote to network processing, you can disable interrupt moderation entirely, which enables the interrupts to fire as fast as possible.
- To disable interrupt moderation completely:
ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 0 tx-usecs 0 Note:When running with interrupt moderation disabled, the interrupt rate on each queue can be very high. Consider including the rx-usec-high parameter to set an upper limit on interrupt rate. The following command disables adaptive interrupt moderation and allows a maximum of 5 microseconds before indicating a receive or transmit was complete. Instead of resulting in as many as 200,000 interrupts per second, it limits total interrupts per second to 50,000 via the rx-usecs-high parameter. # ethtool -C <ethX> adaptive-rx off adaptive-tx off rx-usecs-high 20 rx-usecs 5 tx-usecs 5