Irqbalance isn't working? (RPi4)

I'm running snapshot on RPi4 having irqbalance 1.9.0-6 package installed.

config irqbalance 'irqbalance'
	option enabled '1'

	# Level at which irqbalance partitions cache domains.
	# Default is 2 (L2$).
	#option deepestcache '2'

	# The default value is 10 seconds
	#option interval '10'

	# List of IRQ's to ignore
	#list banirq '36'
	#list banirq '69'

It's enabled and running yet it seems like it's not spreading internet traffic & interrupts among all 4 cores. Here is the screenshot:

I even tested with and without qosify, flow offload, packet steering.
Is this normal?

You are correct, not working as you expect. I ended adding this to my /etc/rc.local:

# Move RPS/XPS to CPU3 and CPU4 only (disable packet steering or it gets overwritten)
echo c > /sys/class/net/eth0/queues/rx-*/rps_cpus
echo c > /sys/class/net/eth0/queues/tx-*/xps_cpus
echo c > /sys/class/net/eth1/queues/rx-*/rps_cpus
#echo c > /sys/class/net/eth1/queues/tx-*/xps_cpus # not available in eth1 (USB NIC)

# eth0 (LAN NIC) in CPU2 (rx/tx) to help improve bandwidth (might hurt latency?)
echo 2 > /proc/irq/39/smp_affinity
echo 2 > /proc/irq/40/smp_affinity
1 Like

irqbalance is designed to move each distinct interrupt to the 'least busy' core per sampling period.

It's not possible to "split" single-interrupt (read: single NIC inbound, for instance) traffic across multiple cores, it is necessarily serial delivery. You can flip that interrupt around cores as often as you like, but that really just makes a bad problem worse.


I uninstalled irqbalance, enabled packet steering (Although it didn't do anything) then did:

echo 8 >/proc/irq/18/smp_affinity
echo 8 >/proc/irq/32/smp_affinity
echo 2 >/proc/irq/39/smp_affinity     
echo 4 >/proc/irq/40/smp_affinity 


Is this wrong or need more changes?

It should be fine if that is the distribution you want. I don't see a problem with it; test it.

1 Like

came here to report back. At the moment I couldn't get snapshot to work with samba4, so I'm running 22.03.2 firmware with packet steering off and following code in /etc/rc.local

echo 8 >/proc/irq/18/smp_affinity
echo 8 >/proc/irq/32/smp_affinity
echo 2 >/proc/irq/39/smp_affinity     
echo 4 >/proc/irq/40/smp_affinity 

Performance is awesome, speed is stable. I'm lovin' it :wink: