Одно ядро на 90-97% загружено процессом kworker

Всем пинг! Относительно давно поставил htop для того, чтобы поглядывать на загруженность системы. Но поскольку я его очень редко использовал я почти не замечал ничего. И вот некоторое время спустя я поставил себе Conky и после настройки я увидел полную загруженность одного ядра.Я просматривал все процессы и не мог найти в чем проблема. Очень долго сидел в гугле и искал решение данного вопроса, но все время упирался вразные решения, которые не давали требуемого результата. Я понимал логику как решить проблему, но не сразу нашел как эту логику реализовать.

Суть проблемы: существут некий процесс под названием kworker, который после запуска системы отжирает одно ядро полность. Быстрый гуглеж дал мне понять, что это не критично и связано с прерываниями (сильно глубоко не было желания разбираться в проблеме).

Решалось это все довольно примитивно. Для начала находим (от рута) виновника вот такой командой:

grep enabled /sys/firmware/acpi/interrupts/gpe*

Там увидим примерно следующее:

/sys/firmware/acpi/interrupts/gpe09: 0 enabled
/sys/firmware/acpi/interrupts/gpe10: 0 enabled
/sys/firmware/acpi/interrupts/gpe11: 0 enabled
/sys/firmware/acpi/interrupts/gpe12: 0 enabled
/sys/firmware/acpi/interrupts/gpe13: 16474884 enabled

Вот на последней строке у меня и есть виновник. У вас вполне вероятно могут быть другие цифры после «gpe». Лечить его можно вот такой командой (важно — ОТ РУТА):

echo «disable» > /sys/firmware/acpi/interrupts/gpe13

После этого вы можете проверить через тот же htop и увидите, съеденное ядро вернулось обратно. Это конечно приятно и не может не радовать, но тут есть один маленький минус — после перезагрузки все снова будет как и раньше и процедуру придется повторять.

Меня это через пару дней выбесило и был реализован простой способ решения данного косяка в автоматическом режиме. Написан скрипт-однострочник:

#!/bin/bash
sleep 30
echo «disable» > /sys/firmware/acpi/interrupts/gpe13
exit 0

И уложен этот скрипт по адресу /etc/init.d/kw_eat_cpu.sh. Далее ему присваиваются права на выполнение для всех и этот скрипт добавляется в автозагрузку вот таким способом:

ln -s /etc/init.d/kw_eat_cpu.sh /etc/rc2.d/S99kw_eat_cpu

После чего ваша машинка перезагружается.

На этом все! Profit!

Опубликовано 11.09.2015 в 17:21 · Автор JTProg_ru · Ссылка
Рубрики: HOW-TO, Ubuntu · Теги: , ,