I recently bought a Intel Pro 1000 PT server adapter card. At the overview page for this adapter there is a interesting feature described, which was the deciding reason to buy this adapter.
"Load balancing on multiple CPUs:
Increases performance on multi-processor systems by efficiently balancing network loads across CPU cores when used with receive-side scaling from Microsoft or Scalable I/O on Linux*"
I searched for "Scalable I/O" at google, but I can't find any valuable information about it. Is it possible to spread network interrupt handling across multiple cpu cores with this server adapter (this is exactly what we need)? How can I achieve this? Does anybode have some hints where I can find information about "Scalable I/O" on Linux?
Although the controller on the Intel(R) PRO/1000 PT Server Adapter does support RSS, the feature was never implemented in the Linux driver. Although the controller supports 2 queues, the controller does not support MSI-x, which would give you multiple receive interrupts, 1 for each queue. You can only find Linux drivers with RSS support for adapters based on newer controllers such as the 82575, 82576, and 82580.
You might have some relief on the way. One of our Linux gurus told me this:
In upcoming kernels from kernel.org (currently in Linux-next kernel and davem's net-next tree), there will be support for "software RSS" from some patches from Tom Herbert at Google. The patches contain the code for "RPS - Receive Packet Steering" and "RFS - Receive Flow Steering" and allow a single queue device to use multiple CPUs to process traffic.
Thank you very much for this detailed answer. Like I wrote before I could nothing found in the internet about "Linux Scalable I/O". Know I know that this feature was never implemented in the driver.
I will check the mentioned controllers 82575, 82576 and 82580.