Что такое swap?
Swap — это пространство на диске, которое система использует как резервную оперативную память. Когда RAM заканчивается, данные сбрасываются в swap, чтобы избежать сбоев. Swap можно организовать в виде раздела или файла — сегодня чаще используют swap-файл: он проще в создании и более гибок.
Нужен ли swap в системе с SSD?
Этот вопрос часто вызывает споры. Ответ — зависит от ваших задач.
- Swap нужен, если:
- У вас меньше 8 ГБ оперативной памяти;
- Вы используете гибернацию (hibernation);
- Вы работаете с тяжёлыми приложениями: IDE, рендеринг, игры, виртуальные машины;
- Вы хотите иметь “страховку” при переполнении RAM.
- Swap не обязателен, если:
- У вас 16+ ГБ RAM и стабильная нагрузка;
- Вы не используете гибернацию;
- Вы следите за потреблением памяти.
💡 Совет: Даже на мощной системе рекомендуется создать небольшой swap (1–2 ГБ) — это дешёвая подстраховка от Out-of-Memory-ситуаций.
Как правильно создать swap-файл в Linux
Почему не стоит использовать dd
Ранее часто использовался способ:
dd if=/dev/zero of=/swapfile bs=1M count=2048
Однако этот метод может привести к фрагментации swap-файла, особенно на занятом или фрагментированном диске. Это негативно сказывается на производительности swap.
Рекомендуемый способ — fallocate
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
Проверка:
swapon --show
Добавляем в автозагрузку
Откройте файл /etc/fstab
и добавьте строку:
/swapfile none swap sw 0 0
Настройка swappiness
Swappiness определяет, как активно ядро будет использовать swap. По умолчанию — 60. Это агрессивно, особенно при наличии SSD. Рекомендуется установить значение 10–20:
sudo sysctl vm.swappiness=10
Для сохранения значения после перезагрузки:
echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf
Проверка фрагментации swap-файла (по желанию)
sudo filefrag -v /swapfile
extent count: 1 — файл не фрагментирован. Это хорошо.
Если fallocate
не работает
На некоторых файловых системах (например, Btrfs) fallocate
может быть несовместим. Тогда допустимо использовать dd
, но с проверкой фрагментации:
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
Альтернатива swap на диске: zswap и zram
Zswap — сжатая подкачка в RAM
echo 1 | sudo tee /sys/module/zswap/parameters/enabled
Zram — виртуальный swap в RAM
sudo modprobe zram
echo lz4 | sudo tee /sys/block/zram0/comp_algorithm
echo 512M | sudo tee /sys/block/zram0/disksize
sudo mkswap /dev/zram0
sudo swapon /dev/zram0
Особенно эффективно на устройствах с 2–4 ГБ RAM (например, нетбуки, Raspberry Pi).
Поддержка в разных дистрибутивах
fallocate
Есть почти во всех системах (входит в util-linux)
zram
, zswap
Поддерживаются ядром, модули легко активировать
sysctl
, mkswap
, swapon
Стандартные утилиты всех дистрибутивов
Вывод
- Swap-файл — полезен даже на SSD, особенно как резерв.
- Используйте
fallocate
для избежания фрагментации. - Настройте
swappiness
под вашу рабочую нагрузку. - Рассмотрите zswap или zram как альтернативу для ускорения работы без записи на диск.