Interrupt Affinity

Alveo X3522 User Guide (UG1523)

Document ID
UG1523
Release Date
2023-08-25
Revision
1.4 English

Interrupt affinity describes the set of host CPUs that can service a particular interrupt. It interacts with your choice of host CPUs on which you run an application. Setting both of these correctly is crucial for best performance.

When choosing the CPUs on which you run applications:

  • If you are running multiple applications, you should spread them across CPUs.
  • If you expect any of your applications to share traffic, you should run them on CPUs that use the same L3 cache.

    This is because if multiple applications install filters to receive the same traffic, they will share a receive queue (at least for that traffic).

When choosing which CPU to use for an interrupt:

  • Onload uses its own algorithms to select which CPU it uses for an interrupt. The algorithms attempt to give best possible performance. You do not need to affinitize interrupts yourself.
  • For all other applications, you should affinitize interrupts as follows:
    • The interrupts for its transmit queue should be on the same CPU as the application.
    • The interrupts for its receive queue should be on a different CPU that uses the same L3 cache as the application.

      Using the same L3 cache reduces inter-CPU communication, and so improves latency.

      Using a different CPU helps ensure timely servicing of buffers, and improves CPU utilization.

Important: For affinity tuning to succeed the irqbalance service must be disabled. In all cases, including using Onload, you must follow the instructions in Disable the Irqbalance Service.