Ситуация когда ksoftirqd грузит процессор иногда встречается в серверных системах.
ksoftirqd отвечает за обработку прерываний от устройств.
Если ksoftirqd грузит процессор
Нагрузка на сервере характеризуется параметром Load Average (LA).
LA может возрастать когда какие-то процессы активно потребляют ресурсы процессора или память в таких количествах, что они исчерпываются. В значительной степени или полностью.
Другая причина роста LA — ожидание ответа от диска или от сети.
Если в top видно потребление ресурсов процессами ksoftirqd — прежде всего нужно проверить соединения в состоянии TIME_WAIT
Увидеть их можно так
netstat -ntp | grep -v TIME_WAIT
Если их очень много — процессы ждут сеть и нагрузка может расти.
Количество подобных подключений можноизменив значение параметра ядра /proc/sys/net/ipv4/tcp_tw_reuse с 0 на 1.
Значение меняется без перезагрузки системы в /etc/sysctl.conf.
Файл перечитывается командой
sysctl -p
Также при борьбе с TIME_WAIT иногда меняют и значение пармаметра tw_recycle. Этого делать не стоит, смена значения может послечь сложные в диагностике проблемы с доступом к ресурсу у разных пользователей в случайное время. Со значением 1 опции система не будет обслуживать соединения от двух разных пользователей за одним NAT провайдера.
Также нагрузка создаваемая процессом ksoftirqd может быть причиной простой нехватки памяти в системе следует проверить ее. При необходимости подключить SWAP или поменять значение swappiness