Performance testing across multiple cloud platforms shows that IRQ management effectiveness depends heavily on system size and workload characteristics. While no single approach works optimally in all scenarios, clear patterns emerged during testing under heavy network loads.
For smaller systems with 16 or fewer vCPUs, different strategies prove more effective:
smp_affinity
range assignment pattern with a limited core range (example: 0-1
).Performance improves significantly when network IRQs are concentrated rather than dispersed across all available cores on smaller systems. This concentration reduces context switching overhead and improves cache locality for interrupt handling.
For larger systems with more than 16 vCPUs, different strategies prove more effective:
On larger systems, interrupt handling overhead becomes less significant relative to total processing capacity. The primary performance issue occurs when high-frequency network interrupts compete for the same core, creating bottlenecks.
When implementing these IRQ management strategies, several factors influence your success:
watch -n1 'grep . /proc/interrupts'
to observe IRQ distribution as it happens. This helps you verify your changes are working as expected./etc/rc.local
or creating a systemd service file.As workloads and hardware evolve, revisiting and adjusting IRQ management strategies might be necessary to maintain optimal performance. What works well today might need refinement as your application scales or changes.
You have successfully learned how to optimize network interrupt handling on Arm servers. You can now analyze IRQ distributions, implement different management patterns, and configure persistent solutions for your workloads.