Swap (область подкачки) — часть дискового пространства, используемая ядром Linux как расширение оперативной памяти. ОС перемещает редко используемые страницы RAM на диск, освобождая место для активных процессов. Swap предотвращает OOM-killer (принудительное завершение процессов при нехватке RAM), но значительно медленнее RAM.
Создание swap-файла
# Создать 2 ГБ swap-файл
fallocate -l 2G /swapfile
chmod 600 /swapfile # только root может читать
mkswap /swapfile # форматировать как swap
swapon /swapfile # включить
# Добавить в /etc/fstab для автозагрузки
echo '/swapfile none swap sw 0 0' >> /etc/fstab
# Проверить
free -h
swapon --show
Рекомендуемый размер swap
| RAM | Swap (SSD) | Swap (HDD) |
|---|---|---|
| 1 ГБ | 1–2 ГБ | 2 ГБ |
| 2–4 ГБ | 1–2 ГБ | 4 ГБ |
| 8–16 ГБ | 0–4 ГБ | 4–8 ГБ |
| 32+ ГБ | 0–8 ГБ (необязательно) | — |
Настройка swappiness
Параметр ядра vm.swappiness (0–100) определяет агрессивность использования swap: 0 — ядро использует swap только при крайней необходимости, 100 — активно перемещает страницы. Для VPS с SSD рекомендуется 10:
echo 'vm.swappiness=10' >> /etc/sysctl.conf
sysctl -p # применить без перезагрузки
Мониторинг использования swap
free -h # общее использование RAM и swap
vmstat 1 5 # динамика использования памяти (5 замеров по 1 сек)
cat /proc/meminfo # детальная информация
htop # интерактивный мониторинг с визуализацией
Grafana + node_exporter визуализирует использование swap в реальном времени — полезно при выявлении утечек памяти.
История
Виртуальная память и механизм подкачки появились в ранних версиях Unix и исследовательских ОС 1960-х. В Linux swap поддерживается с версии 0.01 (1991). Swap-файлы (вместо отдельных разделов) появились как полноценная функция в Linux 2.6.x. На SSD активный swap значительно снижает ресурс накопителя из-за большого числа операций записи.
На что обращать внимание
Если мониторинг показывает постоянное использование swap — приложение потребляет больше RAM, чем доступно. Swap не заменяет RAM: запись на SSD в 100–1000 раз медленнее чтения из RAM. При высоком использовании swap увеличьте RAM VPS или оптимизируйте приложение. Свап в контексте памяти JVM (Java/Elasticsearch) особенно критичен — рекомендуется отключить swap на серверах с heap >4 ГБ.
Создание swap-файла
Swap-файл удобнее swap-раздела: не требует переразметки диска и создаётся за минуты:
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
Для постоянного монтирования добавить в /etc/fstab: /swapfile swap swap defaults 0 0. На SSD swap-файл работает быстрее традиционного HDD-раздела и уместен даже при достаточном количестве RAM как страховка.
Swappiness и настройка
Параметр vm.swappiness (0-100) определяет агрессивность ядра при использовании swap. Значение 60 по умолчанию — ядро начинает выгружать страницы при 40% свободной RAM. Для серверов с базами данных рекомендуется vm.swappiness=10: MariaDB и PostgreSQL предпочитают держать данные в RAM.
Установить временно: sysctl vm.swappiness=10. Постоянно — добавить в /etc/sysctl.conf. Мониторинг использования swap: free -h или vmstat 1.