Как бороться с загрузкой процессора в Linux

Иногда при работе в Линукс можно заметить сильное замедление системы, которое выражается в медленной реакции на клавиатуру и мышь.

Если при этом в выводе команды «top» (в консоли) видно, что ресурсы процессора утилизируются процессом под названием kworker, то для исправления ситуации можно использовать приведённый ниже рецепт.

Вывод команды top
Вывод команды top

Выполняем в консоли от имени суперпользователя (root) команду «grep enabled /sys/firmware/acpi/interrupts/gpe*» и видим примерно такую картину:

Как бороться с загрузкой процессора в Linux

Находим строку, в которой стоит число, отличное от 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» и можно пробовать перезагрузить систему. Процессор более не должен грузиться.

Поделиться ссылкой:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *