Who is this for?

This is an introductory topic for developers and performance engineers who are interested in understanding how network interrupt patterns can impact performance on cloud servers.

What will you learn?

Upon completion of this Learning Path, you will be able to:

  • Analyze the current interrupt request (IRQ) layout on an Arm Linux system.
  • Experiment with different interrupt options and patterns to improve performance.
  • Configure optimal IRQ distribution strategies for your workload.
  • Implement persistent IRQ management solutions.

Prerequisites

Before starting, you will need the following:

  • An Arm computer running Linux
  • Some familiarity with the Linux command line

Summary

AI-assisted

This summary was drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
You’ll analyze and tune network IRQ handling on Arm Linux servers. First, you’ll review the current IRQ layout, compare placements that pin network interrupts to CPU cores, and test cache locality and contention. Then, you’ll apply smp_affinity range assignments, choose strategies for different system sizes, and make the selected settings persistent for repeatable workload testing.

Frequently asked questions

AI-assisted

These FAQs were drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
What should I do if an IRQ change reduces performance?
Restore the default IRQ handling by running sudo systemctl unmask irqbalance and sudo systemctl enable --now irqbalance. If irqbalance isn’t installed on a Debian-based system, install it with sudo apt install irqbalance.
Which IRQ distribution pattern should I start with on a small server with 16 vCPUs or fewer?
Start by concentrating network IRQs on one or two CPU cores instead of spreading them across all cores. Use the smp_affinity range assignment recommended in the path to bind the interrupts.
What result should I expect after applying a new IRQ pattern?
You should see NIC interrupts bound to the cores that you selected, and a consistent distribution under network load. Compare the new layout to your baseline to confirm that the change took effect.
How do I make my IRQ configuration persist across reboots?
IRQ changes reset at reboot. Add your affinity settings to /etc/rc.local or create a systemd service file so that the assignments are reapplied when the system starts.
What should I try if network behavior doesn't improve with my first pattern?
Switch to an alternative distribution strategy and retest, because effectiveness depends on workload and system size. No single approach is optimal everywhere, so iterate and validate under representative load.
Next