Intel® Ethernet 700 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. 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
- 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,
- 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
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