Иногда при работе в Линукс можно заметить сильное замедление системы, которое выражается в медленной реакции на клавиатуру и мышь.
Если при этом в выводе команды «top» (в консоли) видно, что ресурсы процессора утилизируются процессом под названием kworker, то для исправления ситуации можно использовать приведённый ниже рецепт.
Выполняем в консоли от имени суперпользователя (root) команду «grep enabled /sys/firmware/acpi/interrupts/gpe*» и видим примерно такую картину:
Находим строку, в которой стоит число, отличное от 0 (в нашем случае это первая строка, в которой написано «/sys/firmware/acpi/interrupts/gpe03») и выполняем команду:
echo «disable» > /sys/firmware/acpi/interrupts/gpe03
Убеждаемся, что процессор перестал быть постоянно загружен на 100% и компьютер стал более отзывчивым.
Теперь нужно сделать так, чтобы после перезагрузки ситуация не вернулась к тому что было.
Для этого нужно отредактировать файл «/etc/default/grub«. Надо найти в нём строку вида GRUB_CMDLINE_LINUX_DEFAULT=»quiet splash» и дописать в её конце параметр «pcie_aspm=off«, чтобы получилось так
GRUB_CMDLINE_LINUX_DEFAULT=»quiet splash pcie_aspm=off»
Чтобы применить изменения нужно выполнить команду «update-grub«.
Далее нужно создать файл со следующим содержимым:
#!/bin/bash
grep enabled /sys/firmware/acpi/interrupts/gpe* > /dev/null
echo «disable» > /sys/firmware/acpi/interrupts/gpe03
и назвать его, например, stop-kworker.sh (не забудьте сделать его исполнимым). Сначала я сделал этот файл без второй строки, но он не всегда срабатывал, поэтому пришлось в итоге его сделать таким.
Теперь нужно добавить этот файл в автозагрузку. Если в системе используется systemd (как в linux mint), то для этого надо создать файл в каталоге /etc/systemd/system/ (например, /etc/systemd/system/stop-kworker.service) со следующим содержимым:
[Unit]
Description=Stop kworker
Requires=network.target
After=network.target
[Service]
Type=one-shot
User=root
RemainAfterExit=True
ExecStart=/path-to-file/stop-kworker.sh
[Install]
WantedBy=multi-user.target
После этого достаточно выполнить команду «systemctl enable stop-kworker.service» и можно пробовать перезагрузить систему. Процессор более не должен грузиться.