Linux

Оптимизация swap в Linux: улучшаем производительность системы

Этот гайд поможет вам правильно настроить файл подкачки (swap) в Linux для систем с малым объемом оперативной памяти. Вы узнаете, как изменить параметр swappiness, создать swap-файл и включить сжатие памяти zram, чтобы система реже использовала медленный диск и работала быстрее.

Обновлено 16 февраля 2026 г.
15-30 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 20.04+Debian 11+CentOS 8+RHEL 8+Fedora 35+

Введение / Зачем это нужно

Файл подкачки (swap) — это область на диске, которую Linux использует как расширение оперативной памяти (ОЗУ). Когда физической памяти становится мало, система перемещает неактивные страницы памяти в swap, освобождая ОЗУ для активных процессов.

Проблема: Настройки swap по умолчанию (особенно swappiness=60) часто не optimal для десктопов и серверов с малым объемом ОЗУ (2-8 ГБ). Система может слишком рано и активно начать использовать медленный диск (особенно HDD), что приводит к "тормозам", подтормаживанию интерфейса и долгой загрузке приложений.

Решение: Этот гайд покажет, как настроить swap для баланса между скоростью и стабильностью. Мы:

  1. Настроим параметр vm.swappiness — контролируем склонность системы к использованию swap.
  2. При необходимости создадим/увеличим swap-файл.
  3. Включим zram — технологию сжатия памяти в RAM, которая часто быстрее swap на диске.

После выполнения вы получите более отзывчивую систему, особенно при нехватке ОЗУ.

Требования / Подготовка

Перед началом убедитесь, что:

  1. У вас есть доступ к терминалу с правами суперпользователя (sudo).
  2. Вы знаете, какой у вас дистрибутив Linux (Ubuntu, Debian, CentOS и т.д.) и тип диска (SSD/HDD).
  3. Вы проверили текущее состояние swap (это первый шаг гайда).
  4. На диске достаточно свободного места (если планируете создавать/увеличивать swap-файл). Рекомендуемый размер: 1-2 ГБ для систем с 2-4 ГБ ОЗУ, до 4 ГБ для 4-8 ГБ ОЗУ.
  5. Для zram требуется ядро Linux 4.0 или новее (все современные дистрибутивы соответствуют).

Пошаговая инструкция

Шаг 1: Проверьте текущие настройки swap

Сначала давайте посмотрим, есть ли у системы swap и как она используется.

# Общая информация о swap (размер, использование)
free -h

# Более детальная информация
swapon --show

# Текущее значение параметра swappiness
cat /proc/sys/vm/swappiness

Что смотреть:

  • В выводе free -h строка Swap:. Если там 0B, swap не настроен.
  • swappiness по умолчанию часто равен 60. Это означает, что система начнет активно использовать swap, когда заполнено около 40% ОЗУ. Для десктопов с малым ОЗУ это значение обычно слишком высокое.

💡 Совет: Если у вас SSD и мало ОЗУ (2-4 ГБ), начните с настройки zram (Шаг 4), а swappiness установите в диапазоне 10-20.


Шаг 2: Настройте параметр swappiness

Параметр vm.swappiness управляет балансом между выгрузкой страниц памяти в swap и очисткой кэша в ОЗУ. Значение от 0 до 100.

  • 0 — система будет избегать swap, пока не будет исчерпана вся ОЗУ и кэш.
  • 100 — система будет активно использовать swap.

Рекомендуемые значения:

  • Десктоп с SSD + мало ОЗУ (2-4 ГБ): 10-20
  • Сервер/рабочая станция с большим ОЗУ (8+ ГБ): 10-30
  • Система с HDD (старые диски): 30-60 (чтобы минимизировать фрагментацию, но HDD и так медленный)

Временная настройка (до перезагрузки):

# Установите значение, например, 15
sudo sysctl vm.swappiness=15

# Проверьте
cat /proc/sys/vm/swappiness

Постоянная настройка (после перезагрузки):

# Отредактируйте конфигурационный файл
sudo nano /etc/sysctl.conf

Добавьте в конец файла строку:

vm.swappiness=15

Сохраните (Ctrl+O, Enter) и закройте (Ctrl+X) редактор. Применить можно либо перезагрузившись, либо выполнив:

sudo sysctl -p

Шаг 3: Создайте и активируйте swap-файл (при необходимости)

Если у вас нет swap или его размер недостаточен (например, меньше 1 ГБ для 4 ГБ ОЗУ), создайте новый.

Важно: Для SSD лучше использовать swap-файл, а не отдельный раздел, так как файл проще изменить. Но на очень старых HDD раздел может быть немного эффективнее.

# 1. Создайте файл нужного размера (например, 2 ГБ).
#    Флаг 'fallocate' создает файл мгновенно. Для гарантии можно использовать 'dd'.
sudo fallocate -l 2G /swapfile

# Если fallocate не поддерживается вашей ФС, используйте dd (дольше):
# sudo dd if=/dev/zero of=/swapfile bs=1024 count=2097152

# 2. Установите правильные права доступа (только root может читать/писать)
sudo chmod 600 /swapfile

# 3. Форматируйте файл как swap
sudo mkswap /swapfile

# 4. Активируйте swap-файл немедленно
sudo swapon /swapfile

# 5. Проверьте, что файл появился в списке
swapon --show
free -h

Сделайте swap-файл постоянным (чтобы монтировался при загрузке):

# Добавьте запись в /etc/fstab
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

⚠️ Важно: Убедитесь, что на целевом разделе диска достаточно свободного места (df -h). Swap-файл нельзя размещать на заполненном разделе.



Шаг 4: Настройте сжатие памяти zram (рекомендуется для SSD)

Zram (ранее zswap) — это модуль ядра, который создает виртуальный блок-устройство в ОЗУ и сжимает данные, которые планировались для записи в swap. Это гораздо быстрее, чем любой swap на диске (даже на SSD), и не изнашивает диск.

Проверьте, включен ли zram:

lsmod | grep zram

Если вывод пуст, модуль не загружен.

Установка и настройка (пример для Ubuntu/Debian):

# Установите утилиты для управления zram
sudo apt update && sudo apt install zram-tools -y

# Для RHEL/CentOS/Fedora:
# sudo dnf install zram-generator -y

Настройте параметры zram. Основной файл конфигурации для zram-tools/etc/default/zramswap (Ubuntu) или /etc/systemd/zram-generator.conf (RHEL-семейство).

Пример для Ubuntu/Debian (/etc/default/zramswap):

# Отредактируйте файл
sudo nano /etc/default/zramswap

Установите:

# Размер zram-устройства в мегабайтах. Обычно 50-100% от ОЗУ для малых объемов.
# Для 2 ГБ ОЗУ: 1024 (1 ГБ). Для 4 ГБ: 2048 (2 ГБ).
# Не ставьте 100% от ОЗУ, оставьте место для ОС.
DEVICE_SIZE=2048

# Алгоритм сжатия (lzo-rle или zstd). zstd даёт лучшее сжатие, но требует CPU.
ALGO=lzo-rle

Сохраните файл.

Примените настройки:

# Перезапустите службу (или перезагрузитесь)
sudo systemctl restart zramswap

# Проверьте, что устройство создано и активно
cat /proc/swaps
free -h

Вы должны увидеть новую строку, например, /dev/zram0. Использование swap теперь будет идти в эту сжатыую область в RAM.


Шаг 5: Примените все настройки на постоянной основе

Мы уже настроили:

  1. vm.swappiness через /etc/sysctl.conf.
  2. Swap-файл через /etc/fstab (если создавали).
  3. Zram через службу zramswap (она сама добавит устройство в /etc/fstab или использует systemd).

Финализация:

  1. Перезагрузите систему, чтобы убедиться, что все настройки применяются автоматически.
    sudo reboot
    
  2. После перезагрузки проверьте итоговое состояние:
    free -h
    cat /proc/sys/vm/swappiness
    swapon --show
    
    Убедитесь, что swap (и zram, если настраивали) активен, а swappiness имеет нужное значение.

Проверка результата

  1. Использование swap: Выполняйте обычные задачи (открытие браузера, редактора). Следите за free -h или утилитой htop (столбец SWAP). Использование должно быть минимальным при нормальной работе.
  2. Отзывчивость системы: При открытии приложений или переключении между ними не должно быть долгих "подтормаживаний", связанных с чтением/записью на диск (слушайте HDD, если есть).
  3. Логи (опционально): При возникновении проблем с памятью смотрите логи ядра:
    sudo dmesg | grep -i "killed\|oom\|swap"
    
    В идеале сообщений об OOM killer (убийце из-за нехватки памяти) быть не должно.

Возможные проблемы

ПроблемаВозможная причинаРешение
Swap-файл не активируется после загрузкиОшибка в /etc/fstab или отсутствует файл.Проверьте синтаксис строки в /etc/fstab. Убедитесь, что файл /swapfile существует (ls -lh /swapfile).
Система всё равно активно использует swapswappiness слишком высок, или ОЗУ действительно мало.Уменьшите vm.swappiness до 5-10. Рассмотрите возможность добавления физической ОЗУ. Zram может помочь, но он не заменит реальную память для тяжелых нагрузок.
zram не работает, нет устройства /dev/zram0Модуль ядра не загружен или служба не запущена.Проверьте `lsmod
Ошибка "Invalid argument" при mkswapФайл создан не полностью (например, fallocate на некоторых ФС).Удалите файл (sudo rm /swapfile) и создайте его командой dd: sudo dd if=/dev/zero of=/swapfile bs=1M count=2048.
Система зависает при активном swap на HDDВысокая нагрузка на медленный жесткий диск.Срочно: Уменьшите swappiness. Включите zram (если процессор позволяет). Долгосрочно: Замените HDD на SSD.

Часто задаваемые вопросы

Зачем вообще нужен swap, если у меня много ОЗУ?
Можно ли полностью отключить swap?
Что лучше: увеличить swap-файл или настроить zram?

Полезное

Проверьте текущие настройки swap
Настройте параметр swappiness
Создайте и активируйте swap-файл (если нужно)
Настройте сжатие памяти zram
Примените все настройки на постоянной основе