ksoftirqd грузит процессор

Ситуация когда 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

Про контроль нагрузки и утилиту top.