hostprofi.ru
Подобрать хостинг
Термин·буква С

Своп (swap)

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

Область на диске, используемая как расширение RAM. Активируется когда физическая память заполнена.

Своп (Swap) — это область на диске, которую операционная система использует как расширение оперативной памяти. Когда RAM заполняется, ядро Linux перемещает («вытесняет») наименее используемые страницы памяти из RAM на своп-раздел или своп-файл, освобождая место для активных процессов.

Как работает своп

Ядро Linux управляет свопом через механизм виртуальной памяти. Параметр swappiness (0–100) определяет агрессивность вытеснения: значение 10 означает «свопировать только при крайней необходимости», 60 — системный дефолт, 100 — активное использование свопа.

Создание своп-файла на современных системах:

# Создать файл 2 ГБ
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
# Сделать постоянным
echo '/swapfile swap swap defaults 0 0' >> /etc/fstab

Для уменьшения aggressiveness на сервере: sysctl vm.swappiness=10. Текущее использование своп: free -h или swapon --show.

Своп бывает двух видов: swap partition — выделенный раздел диска (быстрее, создаётся при установке ОС) и swap file — обычный файл на существующем разделе (гибче, можно добавить без переразметки).

История

Концепция свопа появилась в 1960-х в системах с виртуальной памятью. В Unix-системах своп стал стандартной практикой с 1970-х — выделенный своп-раздел позволял запускать больше процессов, чем влезало в физическую RAM. С удешевлением RAM роль свопа изменилась: теперь это страховка от OOM (Out of Memory), а не основная рабочая площадка.

На что обращать внимание

Высокое использование свопа — симптом нехватки оперативной памяти. Своп на HDD медленнее RAM в сотни раз, что приводит к «трешингу» — ситуации, когда система тратит больше времени на перемещение страниц, чем на работу. На SSD своп быстрее, но всё равно на порядок медленнее RAM и изнашивает диск.

Для VPS рекомендации по объёму свопа: при RAM до 2 ГБ — своп = объём RAM; 2–8 ГБ — 50% RAM; свыше 8 ГБ — 10–25% RAM. Мониторинг своп-активности через vmstat 1: если столбцы si (swap in) и so (swap out) постоянно ненулевые — пора расширять RAM или оптимизировать приложение.

Своп и производительность приложений

Интенсивное использование свопа резко ухудшает производительность приложений. Время доступа к данным в RAM — единицы наносекунд; на SSD NVMe — единицы микросекунд (в 1000 раз медленнее); на HDD — миллисекунды (в миллион раз медленнее). Когда приложение начинает активно свопировать — это «thrashing», система тратит больше времени на перемещение страниц, чем на полезную работу.

Для разных типов приложений рекомендации по свопу различаются. Базы данных (MySQL, PostgreSQL) критически зависят от скорости I/O; для них рекомендуется установить vm.swappiness=1 — своп только как последний резерв. Веб-серверы и приложения на интерпретируемых языках (PHP, Python) терпимее к свопу, но всё равно теряют производительность.

Мониторинг свопа через команды:

# Текущее использование
free -h
# Подробная статистика
vmstat 1 5
# Какие процессы используют своп
for pid in /proc/*/status; do
  awk '/VmSwap|Name/{printf $2 " " $3 "
"}' $pid;
done | sort -k 2 -n -r | head

Если своп занят более 50% — сигнал для увеличения оперативной памяти. На VPS с тарифами от 1 ГБ RAM своп объёмом 1–2 ГБ — разумная страховка для запуска дополнительных сервисов без OOM killer.

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