I just got a gigabit connection, and my WRT1900ACS doesn't seem to handle it.
The issue is the number of interrupts and that only one of the cores has to deal with it.
Is there a way to increase performance a bit?
I'm currently on OpenWrt 21.02.0 r16279-5cc0535800.
Try this first under Network/Interfaces/Global Network Options
Enabling packet steering may help a little but not much.
I have gone back to using 19.07 as I have a gigabit fibre connection and this makes use of both CPUs.
Thanks. I've tried RSS and software flow offloading, neither made any difference.
Does 19.07 really manage to distribute interrupts across multiple cores, but 21.02 can't? If so, what's up with that?
21.02 and master use DSA. There is work going on trying to get multi-cpu use for DSA but to date this hasn't been accepted.
19.07 uses the old swconfig which uses both cpus. The problem with 19.07 it's near end of line with it only getting security fixes.
I just switched to 19.07, but it doesn't use both CPU cores. All interrupts for eth0 and eth1 goes to CPU0, so CPU1 is basically idle while the other core is pinned to 100 % handling interrupts.
Are you sure it's using both cores for you? If so, how?
I've tried to distribute interrupts to both cores, but I can't get it to work.
Have you tried doing some speed tests while running htop?
The "0" and "1" are the cpu core utilisation.
Note: This is with SQM enabled. I can get very close to full line speeds without SQM enabled.
If the service is symmetrical 1000 / 1000 the MultiPort DSA change might offer an assist. De-conflate, the MultiPort DSA change is not CPU core usage, you may still have an issue distributing IRQs
example from mamba with MP-DSA in play, notice etho and eth1
24: 14271835 9721970 MPIC 5 Level armada_370_xp_per_cpu_tick
26: 15248250 0 MPIC 31 Level mv64xxx_i2c
27: 1032 0 MPIC 41 Level ttyS0
33: 0 0 MPIC 45 Level ehci_hcd:usb1
34: 19830264 0 MPIC 8 Level eth0
35: 336350 0 MPIC 10 Level eth1
36: 0 0 MPIC 55 Level sata_mv[f10a0000.sata]
37: 105 0 MPIC 113 Level marvell-nfc
38: 47763 0 MPIC 48 Level f1090000.crypto
39: 311 122 MPIC 49 Level f1090000.crypto
48: 2 0 MPIC 51 Level f1060900.xor
49: 2 0 MPIC 94 Level f10f0900.xor
50: 0 0 MPIC MSI 524288 Edge xhci_hcd
54: 0 0 mv88e6xxx-g1 3 Edge mv88e6xxx-f1072004.mdio-mii:00-g1-atu-prob
56: 0 0 mv88e6xxx-g1 5 Edge mv88e6xxx-f1072004.mdio-mii:00-g1-vtu-prob
59: 0 1 mv88e6xxx-g1 7 Edge mv88e6xxx-f1072004.mdio-mii:00-g2
61: 0 0 mv88e6xxx-g2 0 Edge mv88e6xxx-1:00
62: 0 0 mv88e6xxx-g2 1 Edge mv88e6xxx-1:01
63: 0 0 mv88e6xxx-g2 2 Edge mv88e6xxx-1:02
64: 0 1 mv88e6xxx-g2 3 Edge mv88e6xxx-1:03
65: 0 0 mv88e6xxx-g2 4 Edge mv88e6xxx-1:04
76: 0 0 mv88e6xxx-g2 15 Edge mv88e6xxx-f1072004.mdio-mii:00-watchdog
77: 0 0 f1018140.gpio 0 Edge gpio_keys
78: 0 0 f1018140.gpio 1 Edge gpio_keys
79: 14782 181161303 MPIC 59 Level mwlwifi
80: 179969867 0 MPIC 60 Level mwlwifi
IPI0: 0 0 CPU wakeup interrupts
IPI1: 0 0 Timer broadcast interrupts
IPI2: 135942 138422 Rescheduling interrupts
IPI3: 657931 3797409 Function call interrupts
IPI4: 0 0 CPU stop interrupts
IPI5: 2226117 1726050 IRQ work interrupts
IPI6: 0 0 completion interrupts
See if irqbalance helps.
I was hoping I could split it into multiple RX/TX queues and direct the queues to different cores, but I'm not even able to set CPU affinity(ash: write error: I/O error), so eth0(wan?) and eth1(lan?) are on the same CPU. On a normal Linux box with half-decent network cards, this is straightforward, but I really don't get what's going on here.
Not sure if it's a hardware limit or software, but I do find it strange if the hardware of a dual-core router can't use all cores for interrupts.
I've also tried to enable interrupt coalescing to reduce the number of interrupts, but I'm not able to enable it using ethtool.
If someone knows how to enable interrupt coalescing(or if it's even supported by the hardware) or split interrupts across multiple cores then that would be awesome as I'm totally lost now.
Any news about this? Now there is another version (22.03) and... ?