Intel® Ethernet 700 Series

Linux Performance Tuning Guide

ID Date Version Classification
334019 12/09/2024 1.1 Public
Document Table of Contents

​Interrupt Moderation

Adaptive interrupt moderation is on by default, and is designed to provide a balanced approach between low CPU utilization and high performance. However, you might try tuning interrupt settings manually to fit your use case.

The range of 0-235 microseconds provides an effective range of 4,310 to 250,000 interrupts per second. The value of rx-μsecs-high can be set independent of rx-μsecs and tx-μsecs in the same ethtool command, and is also independent of the adaptive interrupt moderation algorithm. The underlying hardware supports granularity in 2-microsecond intervals, so adjacent values might result in the same interrupt rate.

  • ​​To turn off adaptive interrupt moderation: ethtool -C ethX adaptive-rx off adaptive-tx off
  • ​​To turn on adaptive interrupt moderation: ethtool -C ethX adaptive-rx on adaptive-tx on

A good place to start for general tuning is 84 μs, or ~12000 interrupts/s. If you see rx_​dropped counters are running during traffic (using ethtool -S ethX) then you probably have too slow of a CPU, not enough buffers from the adapter's ring size (ethtool -G) to hold packets for 84 μs or to low of an interrupt rate.

  • ​​To set interrupt moderation to a fixed interrupt rate of 84 μs between interrupts (12000 interrupts/s): ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 84 tx-usecs 84

The next value to try, if you are not maxed out on CPU utilization, is 62 μs. This uses more CPU, but it services buffers faster, and requires fewer descriptors (ring size, ethtool -G).

  • ​​To set interrupt moderation to fixed interrupt rate of 62 usecs between interrupts (16000 interrupts/s). ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 62 tx-usecs 62

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 is at 100%, then increasing the interrupt rate is not advised. In certain circumstances such as a CPU bound workload, you might want to increase the μs value to enable more CPU time for other applications.

If you require low 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 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-usec-high parameter. # ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs-high 20 rx-usecs 5 tx-usecs 5Try adjusting the transmit/receive/high-priority coalescing timer higher (80/100/150/200) or lower (25/20/10/5) to find optimal value for the workload.