hostprofi.ru
Подобрать хостинг
Термин

Swap

краткое определение

Swap — область на диске, используемая как расширение RAM. Предотвращает OOM-killer при нехватке памяти, но медленнее RAM. Настраивается через swappiness для баланса производительности.

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

RAMSwap (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.

Другие термины