From the man page, ksoftirqd
is a per-cpu kernel thread that runs when the machine is under heavy soft-interrupt load.
You can tweak the settings a bit, by defining which cpu picks up a certain interrupt. You do this by changing the contents of /proc/irq/$interrupt_number/smp_affinity
. You can get a list of interrupts and their meaning by doing:
cat /proc/interrupts
The number in smp_affinity
is a bitmap of cpus, represented in hex code. The rightmost bit is the least significant. For instance, my system has 8 cores. If I wanted to use only cores 1, 3 and 4, I would set the smp_affinity to 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)
Personally, I set up any cpu to be able to pick up interrupt 29 (eth0 in my 8-core system) with:
echo ff | sudo tee /proc/irq/29/smp_affinity