logo of Akmatori
02.01.2025

Optimizing Network Performance by Coalesce Settings

head-image

In high-performance networking, even minor inefficiencies can cascade into latency or packet loss. Enter coalesce settings, a powerful feature in ethtool that optimizes how your NIC (Network Interface Card) handles interrupts.

This guide explains what coalescing is, why it matters, and how you can use ethtool -c to fine-tune it for optimal performance.

What Is Coalescing?

Coalescing is a method of reducing the number of interrupts a NIC generates for the CPU. Instead of generating an interrupt for every packet, the NIC waits and sends interrupts in batches based on thresholds like time or packet count.

This leads to:

  • Reduced CPU usage: Less frequent interrupts mean less CPU overhead.
  • Improved throughput: Fewer context switches free up resources for other tasks.
  • Smoother performance: Ideal for high-traffic or latency-sensitive environments.

Why Adjust Coalesce Settings?

The default coalescing settings may not suit every workload. By adjusting these settings, you can:

  • Decrease latency for real-time applications.
  • Increase throughput for bulk data transfers.
  • Find a balance between CPU efficiency and packet latency.

coalescing

How to Check Coalesce Settings

Start by viewing the current coalesce settings for your NIC:

ethtool -c <interface>  

Replace <interface> with your network interface, e.g., eth0.

Example Output:

Coalesce parameters for eth0:  
Adaptive RX: off  
Adaptive TX: off  
rx-usecs: 50  
rx-frames: 64  
tx-usecs: 50  
tx-frames: 64  

Understanding Key Parameters

  • rx-usecs: Time (in microseconds) the NIC waits before triggering a receive interrupt.
  • rx-frames: Number of packets the NIC waits to accumulate before generating a receive interrupt.
  • tx-usecs: Time (in microseconds) the NIC waits before triggering a transmit interrupt.
  • tx-frames: Number of packets the NIC waits to accumulate before generating a transmit interrupt.
  • Adaptive RX/TX: Dynamically adjusts coalesce settings based on traffic.

Modifying Coalesce Settings

Use ethtool -C to modify the coalesce settings. For example, to set the NIC to wait 100 microseconds or 128 packets before triggering an RX interrupt:

sudo ethtool -C eth0 rx-usecs 100 rx-frames 128  

Verify the Changes

Run ethtool -c <interface> again to confirm your changes.

Best Practices for Tuning

  • Understand Your Workload:

    • Low-latency applications (e.g., VoIP) may benefit from smaller rx-usecs values.
    • High-throughput applications (e.g., file transfers) can tolerate larger values.
  • Enable Adaptive Coalescing:
    Adaptive RX/TX dynamically adjusts settings, balancing CPU usage and latency. To enable:

    sudo ethtool -C eth0 adaptive-rx on adaptive-tx on  
    
  • Test and Monitor:
    After changes, monitor network performance using tools like iftop, sar, or bpftrace.

  • Persist Changes:
    Changes made with ethtool are temporary. Use configuration files or scripts to make them persistent across reboots.

Simplify Troubleshooting with Akmatori

For advanced network optimization, try Akmatori. Akmatori automates alert handling, reducing downtime and simplifying troubleshooting for DevOps and SRE teams. By integrating AIOps capabilities, Akmatori ensures seamless operations for your high-performance networks.

Reliable Infrastructure with Gcore

Maximize your coalescing benefits on robust infrastructure. Get cheap, reliable VMs and bare-metal servers from Gcore. With global data centers, Gcore offers low-latency solutions for any workload.


Conclusion

Coalesce settings are a hidden gem for optimizing network performance. By tweaking parameters with ethtool -c, you can reduce CPU usage, increase throughput, or minimize latency based on your specific needs.

Take control of your network today. Try Akmatori for smarter incident handling and explore Gcore for reliable servers. Together, they ensure your network is efficient, responsive, and resilient.

Let us know in the comments—how do you optimize your network for peak performance?

Maximize your website or application's performance and reliability!