Check out my first novel, midnight's simulacra!

Receive Side Scaling

From dankwiki
Revision as of 12:09, 2 April 2022 by Dank (talk | contribs)

Receive Side Scaling (RSS) is a method of directing incoming traffic to different CPUs. It requires support in the bus (MSI-X), NIC hardware (such hardware is commonly referred to as "multi-queue") and driver. In the absence of hardware support, Linux implements Receive Packet Steering in software, but it is higher in the stack.

irqbalance works by identifying large interrupt sources, and binding their handlers to different processors. Under this scheme, a single NIC's traffic will only be handled on a single CPU. With sufficiently high loads, we need handling on multiple CPUs. RSS is typically configured so that all packets of a given flow go to a single CPU, and different flows are randomly distributed across CPUs. Each receive queue gets its own IRQ, which can then be directed to a set of CPUs via standard processes. irqbalance can conflict with manual RSS configurations.

Links

  • Microsoft RSS docs under "Driver Technologies"