Всем пинг! Относительно давно поставил 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!


Если у тебя есть вопросы, комментарии и/или замечания – заходи в чат, а так же подписывайся на канал.