I have a 10G ethernet adapter from Intel with two ethernet ports (x550-T2) installed in PCIe port of a Xilinx FPGA board running petalinux. I am testing network bandwidth by running simultaneous iperf3 server-client connections on both 10G ports. But the bandwidth on 2x 10G link is same as 1x 10G link. The reason being that bottleneck is not on the link capacity, but rather, interrupt handling. Xilinx FPGA PCIe interface doesn't support Receiver side scaling (RSS), so all the interrupts are directed to CPU0, as a result of which, CPU0 is overloaded with interrupt handling. This is true, whether 1x or 2x 10G links are active. So I was wondering if it's possible to direct eth1 interrupts to CPU0 and eth2 interrupts to CPU1, so that at least I can see some increase in network bandwidth when I go from 1x to 2x 10G links.

  • I don't know much about it, but would this help? Interrupts and IRQ Tuning. I could verify in /proc/interrupts that a change (in /proc/irq/xx/smp_affinity) would route interrupts to an other core, but for some reason it reset itself to its previous value after some short time (~ 20s), probably because I'm running irqbalance (which might be a solution). – A.B Jul 2 '18 at 14:42
  • I tried it but I am not able to change IRQ affinity in petalinux, even with irqbalance disabled. I created a separate thread about it few days ago. – futureishere Jul 2 '18 at 14:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.