Stop your softirq processing from killing your NIC throughput
Performance Tuning & Kernel Parameters (Sysctl)
Stop your softirq processing from killing your NIC throughput
🧩 The Challenge
Dealing with a server that suddenly chokes when you throw 10Gbps+ of traffic at it is maddening, especially when the CPU usage for softirqs hits 100% on a single core. You check your metrics, see the packets are dropping like flies, but the system looks like it’s idling.
💡 The Fix
Spread the network interrupt load across your available cores by bumping up the backlog queue limit and tweaking your RPS settings. It keeps the kernel from getting overwhelmed by a deluge of packets.
sysctl -w net.core.netdev_max_backlog=5000
echo f > /sys/class/net/eth0/queues/rx-0/rps_cpus
⚙️ Why It Works
Pushing the backlog limit gives the kernel a bigger buffer during traffic spikes, and setting the RPS mask distributes that interrupt processing across multiple CPUs instead of just CPU0.
🚀 Pro-Tip: Check your /proc/interrupts first to see if your NIC driver actually supports multi-queue hardware RSS before you go messing with software-based scaling.
Linux Tips & Tricks | © ngelinux.com | 8/5/2026
