On 09/08/16 03:03, Darren Tucker wrote:
On Fri, Aug 05, 2016 at 11:56:15AM +1000, Darren Tucker wrote:
On Thu, Aug 04, 2016 at 02:46:44PM +0200, Momtchil Momtchev wrote:
[...]
A quick test with this diff (just routing through it, no PF, no pool
debug) gives me:
$ iperf -c host -i 10 -t 60
[ 3] 0.0-60.0 sec 5.16 GBytes 739 Mbits/sec
I tried this patch (5f22 in the RL_IM register) on 5.9-stable, no
POOL_DEBUG, 30 pf rules and about 10k states and I got about 8000 IRQ/s
(up from 6000/s on vanilla) and iperf RX throughput was down to 280
MBit/s. I then tried upping the RXPKTS to 15 and the RXTIME to 4 (100us)
- this is 5f4f in RL_IM. The IRQs dropped to 5000 IRQ/s and the CPU
utilisation went down, but RX throughput went further down to 240
MBit/s. Next I tried the magic value 5151 and IRQs dropped to 4000 IRQ/s
(???), CPU went down and throughput went down to 200 MBit/s.
All these are RX values. On the TX side I get slightly higher
throughput and a higher IRQ rate.
There are no public datasheets for the 8111E and I think there is
something fishy with those values. The original source of the 5151 magic
is the open-source driver by Realtek. Hopefully they know what they are
doing. They have a Linux and a FreeBSD driver on their site. The one for
FreeBSD seems to be based on that same driver by Bill Paul from
Windriver and it uses this magic value which doesn't make any sense if 1
is the number of packets to wait before sending an interrupt.
Also what I find very puzzling is that lower IRQ rates lead to
lower CPU utilization but not higher throughput??
What hardware are you using? This is not an APU? Maybe there is
some other bottleneck on the APU? Are you getting higher performance
than on vanilla?