Na página de manual, ksoftirqd
há um thread de kernel por CPU que é executado quando a máquina está sob carga pesada de interrupção suave.
Você pode ajustar um pouco as configurações, definindo qual cpu capta uma certa interrupção. Você faz isso alterando o conteúdo de /proc/irq/$interrupt_number/smp_affinity
. Você pode obter uma lista de interrupções e seu significado fazendo:
cat /proc/interrupts
O número em smp_affinity
é um bitmap de cpus, representado em código hexadecimal. O bit mais à direita é o menos significativo. Por exemplo, meu sistema possui 8 núcleos. Se eu quisesse usar apenas os núcleos 1, 3 e 4, definiria o smp_affinity como 1a
:
cpu_7 cpu_6 cpu_5 cpu_4 cpu_3 cpu_2 cpu_1 cpu_0
0 0 0 1 1 0 1 0 = 0001 1010 = 1a (in hex)
Pessoalmente, configurei qualquer CPU para poder receber a interrupção 29 (eth0 no meu sistema de 8 núcleos) com:
sudo echo ff > /proc/irq/29/smp_affinity