I decided to investigate this a bit more, since I was surprised myself to find that my APU2 was only routing at some 300-400 Mbps. I was sure that I had it routing at roughly gigabit line rate in the past.
Under a normal 1-directional iperf test, I saw that none of the 4 CPU cores came anywhere close to being fully utilised. That meant that there wasn’t a CPU bottleneck.
Then I ran a bidirectional iperf test, and I was seeing over 1700 Mbps combined throughput. How could a bidirectional test be faster than the sum of unidirectional tests?
I suspected some firmware settings, especially ones related to power management, might be to blame. I found that
PCIe power management features were to blame. Disabling that, lo and behold, I once again had iperf throughput greater than 900 Mbps.
The APU2 may not be fast by modern standards, but it’s not that slow either. It can handle a single gigabit stream just fine. For multiple gigabit streams, one will have to pay attention to IRQ affinity and other tunables, but it is doable also.