Turris OS 7.0 is in rc!

cat /proc/interrupts
           CPU0       CPU1
 11:    1713742    1807882     GICv3  30 Level     arch_timer
 14:          0          0     GICv3  23 Level     arm-pmu
 15:      28089          0     GICv3  32 Level     d0010600.spi
 16:        145          0     GICv3  33 Level     d0011000.i2c
 18:        184          0     GICv3  44 Level     d0012000.serial
 19:          0          0     GICv3  45 Level     d0012000.serial
 20:    2925898          0     GICv3  74 Level     eth0
 21:          0          0   advk-RP   0 Edge      pciehp
 22:          0          0     GICv3  35 Level     xhci-hcd:usb2
 23:         24          0     GICv3  49 Level     ehci_hcd:usb1
 30:         69          0     GICv3  50 Level     armada-37xx-rwtm-mailbox
 31:     323582          0     GICv3  57 Level     mmc1
 32:       9760          0     GICv3  58 Level     mmc0
 33:    1669348          0     GICv3  61 Level     advk-pcie
 51:          2          0     GICv3  79 Level     d0060900.xor
 52:          2          0     GICv3  80 Level     d0060900.xor
 53:          6          0     GPIO2   5 Edge      moxtet
 54:          5          0  moxtet-peridot.1#0   8 Edge      mv88e6xxx-d0032004.mdio-mii:10
 59:    1779906          0     GICv3  77 Level     eth1
 63:          0          0  mv88e6xxx-g1   3 Edge      mv88e6xxx-d0032004.mdio-mii:10-g1-atu-prob
 65:          0          0  mv88e6xxx-g1   5 Edge      mv88e6xxx-d0032004.mdio-mii:10-g1-vtu-prob
 67:          5          0  mv88e6xxx-g1   7 Edge      mv88e6xxx-d0032004.mdio-mii:10-g2
 70:          2          0  mv88e6xxx-g2   1 Edge      !soc!internal-regs@d0000000!mdio@32004!switch0@10!mdio:01
 71:          2          0  mv88e6xxx-g2   2 Edge      !soc!internal-regs@d0000000!mdio@32004!switch0@10!mdio:02
 72:          0          0  mv88e6xxx-g2   3 Edge      !soc!internal-regs@d0000000!mdio@32004!switch0@10!mdio:03
 73:          0          0  mv88e6xxx-g2   4 Edge      !soc!internal-regs@d0000000!mdio@32004!switch0@10!mdio:04
 74:          0          0  mv88e6xxx-g2   5 Edge      !soc!internal-regs@d0000000!mdio@32004!switch0@10!mdio:05
 75:          0          0  mv88e6xxx-g2   6 Edge      !soc!internal-regs@d0000000!mdio@32004!switch0@10!mdio:06
 76:          0          0  mv88e6xxx-g2   7 Edge      !soc!internal-regs@d0000000!mdio@32004!switch0@10!mdio:07
 77:          0          0  mv88e6xxx-g2   8 Edge      !soc!internal-regs@d0000000!mdio@32004!switch0@10!mdio:08
 78:          1          0  mv88e6xxx-g2   9 Edge      mv88e6xxx-d0032004.mdio-mii:10-serdes-9
 84:          0          0  mv88e6xxx-g2  15 Edge      mv88e6xxx-d0032004.mdio-mii:10-watchdog
 85:          0          0     GPIO1  10 Edge      d00d8000.sdhci cd
 86:          0          0     GPIO2  20 Edge      gpio-keys
 87:    1669347          0  advk-MSI 1572864 Edge      ath10k_pci
IPI0:      3793       3855       Rescheduling interrupts
IPI1:    170485    1559102       Function call interrupts
IPI2:         0          0       CPU stop interrupts
IPI3:         0          0       CPU stop (for crash dump) interrupts
IPI4:         0          0       Timer broadcast interrupts
IPI5:         0          0       IRQ work interrupts
IPI6:         0          0       CPU wake-up interrupts
Err:

Interrupts are not spread across two cores so it is more likely to saturate one core - CPU0.

root@turris:~# cat /proc/irq/20/smp_affinity
3
root@turris:~# cat /proc/irq/59/smp_affinity
3
root@turris:~# cat /proc/irq/default_smp_affinity
3

Changing eth0 IRQ to CPU1 seems to be good option - decrease latency about few ms and spread load more evenly.
echo 2 > /proc/irq/20/smp_affinity
(that is probably correct as I don’t have irqbalance installed)

1 Like