Looking for some information on how irqbalance assigns IRQs to cores. Concrete information on the topic seems sparse - All I've been able to find is that it will use the estimates for IRQ workload to "fairly assign work across all cpus".
Does the daemon take anything else into account (e.g current workload of each CPU on rebalance, isolcpu/taskset status)? I would assume since the balancer runs a daemon, it can rebalance over time - assuming IRQ workload estimates stay the same, it must take something else into account, otherwise it would converge on a stable state after the first balance operation.
It would be optimal just to turn the balancer off and manually steer IRQs, but I'm not quite at that level of tuning just yet and want to see how the balancer works by default.
EDIT: Took a look at the source for irqbalancer, and can partially answer my question. Looks like it determines load by reading irq and softirq loads from /proc/stat, ignoring user/system cpu time (
https://github.com/Irqbalance/irqbalance/blob/master/procinterrupts.c#L457). Additionally, the more recent versions will take isolcpus into account and treat them exactly like IRQBALANCE_BANNED_CPUS
Anything I might have missed in my interpretation of the code?