Всем пинг! Относительно давно поставил 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!
Если у тебя есть вопросы, комментарии и/или замечания – заходи в чат, а так же подписывайся на канал.