IRQ affinity doesn't work
I have 5 SSDs connect to 1 LSI 9207-8e card. When MSI-X is enabled (by default), the LSI card registers 16 IRQs in the kernel. When I read data from SSDs, all interrupts from the SSDs go to the same IRQ, which makes one CPU too busy to handle all interrupts. I want to distribute interrupts from SSDs to cores evenly. One way I tried is to set smp_affinity, so interrupts with the same IRQ number will be distributed to cores evenly, which is basically IRQ-affinity's job. However, I tried that, for example, I set
echo f > /proc/irq/48/smp_affinity
so ideally, all interrupts of IRQ 48 should be distributed to first 4 cores. However, when I read data again, I still see interrupts sent to only the first core.
I tried a few ways and hope to make it work. e.g., I closed irqbalance, disabled hot-pluggable CPU feature in the kernel, disable or enable MSI-X of the LSI driver. None of them make IRQ affinity work.
Has anyone made IRQ affinity work? Could you show me how to make it work?
Thanks a lot!