8.6. Receive-Side Scaling (RSS)
/proc/interrupts. For example, if you are interested in the
# egrep 'CPU|p1p1' /proc/interrupts CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 89: 40187 0 0 0 0 0 IR-PCI-MSI-edge p1p1-0 90: 0 790 0 0 0 0 IR-PCI-MSI-edge p1p1-1 91: 0 0 959 0 0 0 IR-PCI-MSI-edge p1p1-2 92: 0 0 0 3310 0 0 IR-PCI-MSI-edge p1p1-3 93: 0 0 0 0 622 0 IR-PCI-MSI-edge p1p1-4 94: 0 0 0 0 0 2475 IR-PCI-MSI-edge p1p1-5
p1p1-5). It also shows how many interrupts were processed by each queue, and which CPU serviced the interrupt. In this case, there are 6 queues because by default, this particular NIC driver creates one queue per CPU, and this system has 6 CPUs. This is a fairly common pattern amongst NIC drivers.
ls -1 /sys/devices/*/*/device_pci_address/msi_irqsafter the network driver is loaded. For example, if you are interested in a device with a PCI address of
0000:01:00.0, you can list the interrupt request queues of that device with the following command:
# ls -1 /sys/devices/*/*/0000:01:00.0/msi_irqs 101 102 103 104 105 106 107 108 109
bnx2xdriver, it is configured in
num_queues. For the
sfcdriver, it is configured in the
rss_cpusparameter. Regardless, it is typically configured in
/sys/class/net/device/queues/rx-queue/, where device is the name of the network device (such as
eth1) and rx-queue is the name of the appropriate receive queue.
--set-rxfh-indirparameters to modify how network activity is distributed, and weight certain types of network activity as more important than others.
irqbalancedaemon can be used in conjunction with RSS to reduce the likelihood of cross-node memory transfers and cache line bouncing. This lowers the latency of processing network packets. If both
irqbalanceand RSS are in use, lowest latency is achieved by ensuring that
irqbalancedirects interrupts associated with a network device to the appropriate RSS queue.