QNAP QHora-301W - Problem with Irqbalance / CPU usage

I installed and ran "irqbalance", but it doesn't seem to work as it should.

I also turned on "Packet Steering", but without any major changes.

System: SNAPSHOT-r24733-c1ad78318c

root@QHora-301W:~# cat /proc/interrupts
           CPU0       CPU1       CPU2       CPU3       
  9:          0          0          0          0 GIC-0  39 Level     arch_mem_timer
 13:      20538      16379      27975      18118 GIC-0  20 Level     arch_timer
 16:          0          0          0          0 GIC-0 239 Level     bam_dma
 17:      88480          0          0          0 GIC-0 270 Level     bam_dma
 18:          0          0          0          0 GIC-0 178 Level     bam_dma
 19:          2          0          0          0 GIC-0 354 Edge      smp2p
 20:          6          0          0          0 GIC-0 340 Level     msm_serial0
 21:     176972          0          0          0 GIC-0 127 Level     78b5000.spi
 23:          0          0          0          0 GIC-0 216 Level     4a9000.thermal-sensor
 24:          0          0          0          0 GIC-0  35 Edge      wdt_bark
 25:      16407          0          0          0 GIC-0 155 Level     mmc0
 26:          2          0          0          0 GIC-0 170 Level     7824900.mmc
 27:          0          0          0          0 GIC-0 357 Edge      q6v5 wdog
 28:          0          0          0          0  pmic_arb 51380237 Edge      pm-adc5
 29:         37          0          0          0 GIC-0  47 Edge      cpr3
 30:          0          0          0          0     smp2p   0 Edge      q6v5 fatal
 31:          1          0          0          0     smp2p   1 Edge      q6v5 ready
 32:          0          0          0          0     smp2p   2 Edge      q6v5 handover
 33:          0          0          0          0     smp2p   3 Edge      q6v5 stop
 34:          0          0          0          0   msmgpio  67 Edge      keys
 35:      65564          0          0          0 GIC-0 377 Level     edma_txcmpl
 36:          0          0          0          0 GIC-0 385 Level     edma_rxfill
 37:     170475          0          0          0 GIC-0 393 Level     edma_rxdesc
 38:          0          0          0          0 GIC-0 376 Level     edma_misc
 39:          0          0          0          0 GIC-0 172 Level     xhci-hcd:usb1
 40:          0          0          0          0 GIC-0 131 Level     xhci-hcd:usb3
 41:         64          0          0          0 GIC-0 353 Edge      glink-native
 42:          5          0          0          0 GIC-0 348 Edge      ce0
 43:      78928          0          0          0 GIC-0 347 Edge      ce1
 44:       4345          0          0          0 GIC-0 346 Edge      ce2
 45:        857          0          0          0 GIC-0 343 Edge      ce3
 46:          0          0          0          0 GIC-0 443 Edge      ce5
 47:       1039          0          0          0 GIC-0  72 Edge      ce7
 48:          0          0          0          0 GIC-0 334 Edge      ce9
 49:          0          0          0          0 GIC-0 333 Edge      ce10
 50:          0          0          0          0 GIC-0  69 Edge      ce11
 51:      14700          0          0          0 GIC-0 189 Edge      wbm2host-tx-completions-ring1
 52:          0          0          0          0 GIC-0 323 Edge      reo2ost-exception
 53:       3214          0          0          0 GIC-0 322 Edge      wbm2host-rx-release
 54:          0          0          0          0 GIC-0 209 Edge      rxdma2host-destination-ring-mac1
 55:          0          0          0          0 GIC-0 212 Edge      host2rxdma-host-buf-ring-mac1
 56:      11828          0          0          0 GIC-0 190 Edge      wbm2host-tx-completions-ring2
 57:          0          0          0          0   msmgpio  57 Edge      keys
 58:          0          0          0          0 GIC-0 211 Edge      rxdma2host-destination-ring-mac3
 59:          1          0          0          0 GIC-0 235 Edge      host2rxdma-host-buf-ring-mac3
 60:       8521          0          0          0 GIC-0 191 Edge      wbm2host-tx-completions-ring3
 61:          0          0          0          0 GIC-0 210 Edge      rxdma2host-destination-ring-mac2
 62:          0          0          0          0 GIC-0 215 Edge      host2rxdma-host-buf-ring-mac2
 63:         50          0          0          0 GIC-0 321 Edge      reo2host-status
 64:      22308          0          0          0 GIC-0 261 Edge      ppdu-end-interrupts-mac1
 65:          1          0          0          0 GIC-0 255 Edge      rxdma2host-monitor-status-ring-mac1
 66:       6571          0          0          0 GIC-0 263 Edge      ppdu-end-interrupts-mac3
 67:          1          0          0          0 GIC-0 260 Edge      rxdma2host-monitor-status-ring-mac3
 68:          0          0          0          0 GIC-0 262 Edge      ppdu-end-interrupts-mac2
 69:          0          0          0          0 GIC-0 256 Edge      rxdma2host-monitor-status-ring-mac2
 70:       9142          0          0          0 GIC-0 267 Edge      reo2host-destination-ring1
 71:       8364          0          0          0 GIC-0 268 Edge      reo2host-destination-ring2
 72:      10292          0          0          0 GIC-0 271 Edge      reo2host-destination-ring3
 73:      14037          0          0          0 GIC-0 320 Edge      reo2host-destination-ring4
IPI0:      1525       2122       2327       2225       Rescheduling interrupts
IPI1:      9998     113878     106273     172117       Function call interrupts
IPI2:         0          0          0          0       CPU stop interrupts
IPI3:         0          0          0          0       CPU stop (for crash dump) interrupts
IPI4:         0          0          0          0       Timer broadcast interrupts
IPI5:       538        271        285        339       IRQ work interrupts
IPI6:         0          0          0          0       CPU wake-up interrupts
Err:          0

I added it to the startup script:


cat > /tmp/set-ipq807-affinity.sh << 'EOF'

#!/bin/sh

set_affinity() {
    irq=$(awk "/$1/{ print substr(\$1, 1, length(\$1)-1); exit }" /proc/interrupts)
    [ -n "$irq" ] && echo $2 > /proc/irq/$irq/smp_affinity
    logger -t /tmp/set-ipq807-affinity.sh "Setting Affinity: $1 ($irq) to $2"
}

#assign 4 rx interrupts to each core
set_affinity 'reo2host-destination-ring1' 1
set_affinity 'reo2host-destination-ring2' 2
set_affinity 'reo2host-destination-ring3' 4
set_affinity 'reo2host-destination-ring4' 8

#assign 3 tcl completions to last 3 cores
set_affinity 'wbm2host-tx-completions-ring1' 2
set_affinity 'wbm2host-tx-completions-ring2' 4
set_affinity 'wbm2host-tx-completions-ring3' 8

#assign 3 ppdu mac interrupts to last 3 cores
set_affinity 'ppdu-end-interrupts-mac1' 2
set_affinity 'ppdu-end-interrupts-mac2' 4
set_affinity 'ppdu-end-interrupts-mac3' 8

#assign lan/wan to core 4
set_affinity 'edma_txcmpl' 8
set_affinity 'edma_rxfill' 8
set_affinity 'edma_rxdesc' 8
set_affinity 'edma_misc' 8

exit 0
EOF
chmod 777 /tmp/set-ipq807-affinity.sh
/tmp/set-ipq807-affinity.sh

Is it possible to do more?