Зависания при 100% CPU: пошаговая инструкция. Решение проблем с зависаниями системы при высокой нагрузке на процессор.
Шаг 1. Меньше использовать swap (снизить I/O при нехватке памяти)
Проблема: При 100% CPU и нехватке RAM система активно пишет в swap. Диск не успевает, всё «висит».
Решение:
- Открой файл через nano или другой редактор /etc/sysctl.d/.
- Скопируй конфиг:
```bash
Снижение риска зависаний при 100% CPU (Arch Linux)
Копировать в /etc/sysctl.d/ и выполнить: sudo sysctl –system
Реже использовать swap: меньше I/O при нехватке памяти, меньше «подвисаний»
vm.swappiness = 10
Меньше грязных страниц перед сбросом на диск: меньше резких всплесков I/O
vm.dirty_ratio = 20 vm.dirty_background_ratio = 5
Отключить autogroup: планировщик не будет отдавать все ядра одной группе (например одному make)
Может улучшить отзывчивость десктопа при тяжёлой фоновой задаче
kernel.sched_autogroup_enabled = 0
3. Примени настройки:
```bash
sudo sysctl --system
- Готово. Swap будет использоваться реже (swappiness=10), нагрузка на диск снизится.
Шаг 2. Не отдавать все ядра одной задаче (отзывчивость десктопа)
Проблема: Одна тяжёлая задача (сборка, браузер) забирает все ядра, мышь и окна не реагируют.
Решение:
- Конфиг из Шага 1 уже отключает autogroup (
kernel.sched_autogroup_enabled=0). Ничего дополнительно не делай, если шаг 1 выполнен. - Для тяжёлых сборок ограничь параллелизм. Открой файл:
nano ~/.bashrc - В конец файла добавь строку:
export MAKEFLAGS=-j2 - Сохрани (Ctrl+O, Enter, Ctrl+X).
- Перезайди в терминал или выполни:
source ~/.bashrcТеперь
makeпо умолчанию будет использовать 2 потока, остальные для системы и интерфейса.
Шаг 3. Запускать тяжёлые задачи с пониженным приоритетом
Проблема: Тяжёлая программа конкурирует с рабочим столом за CPU на равных, всё лагает.
Решение:
- Запускай долгие задачи через
nice:nice -n 10 make -j2или, например:
nice -n 10 your_heavy_script - Так они получают меньший приоритет, планировщик чаще даёт CPU интерфейсу.
Шаг 4. (По желанию) Ядро linux-zen: лучше отзывчивость под нагрузкой
Проблема: Даже после шагов 1–3 при 100% CPU интерфейс иногда «залипает».
Решение:
- Установи ядро zen:
sudo pacman -S linux-zen - Перезагрузись.
- В меню загрузчика (GRUB/systemd-boot) выбери Arch Linux (zen) вместо обычного Arch Linux.
- Если загрузчик не показывает меню: подержи Shift при включении (GRUB) или в bootctl выбери запись с
zen.
Дальше система будет загружаться с zen. Откат: при загрузке снова выбрать обычное ядро Arch Linux.
Шаг 5. (По желанию) Автоперезагрузка при полном зависании ядра
Проблема: При полном зависании приходится держать кнопку питания, хочется автоматическую перезагрузку.
Решение:
- Создай файл:
sudo nano /etc/sysctl.d/99-watchdog-panic.conf - Вставь строки:
kernel.softlockup_panic = 1 kernel.panic = 10 - Сохрани и примени:
sudo sysctl --systemПри срабатывании детектора зависания ядра система сама уйдёт в panic и через 10 секунд перезагрузится.
Краткий чек-лист
| Шаг | Действие | Обязательно? |
|---|---|---|
| 1 | Скопировать и применить 99-arch-freeze-mitigation.conf |
Да |
| 2 | Добавить MAKEFLAGS=-j2 в ~/.bashrc |
Рекомендуется |
| 3 | Запускать тяжёлые задачи через nice -n 10 ... |
По ситуации |
| 4 | Установить и загружаться с linux-zen | По желанию |
| 5 | Включить softlockup_panic для автоперезагрузки | По желанию |
После Шагов 1 и 2 уже должно стать заметно реже «зависать». Остальное по необходимости.
Не получилось? Поможем настроить
Задай вопрос в чате — отвечаем быстро, по делу и без воды.

Комментарии