Зачем swap на сервере с 8 ГБ памяти

Совет «отключить swap, памяти же хватает» стоит людям упавших процессов. Разбираем, что делает ядро.

Все материалыОпубликовано
linuxпроизводительность

Совет «памяти много, swap не нужен» встречается часто и звучит логично. На практике он приводит к тому, что вместо замедления вы получаете убитый процесс.

Что произойдёт без swap

Когда память кончается, ядро не тормозит — оно вызывает OOM killer, который выбирает жертву по эвристике и завершает её сигналом KILL. Чаще всего жертвой оказывается самый крупный процесс, то есть ваша база данных.

С swap у системы появляется запас: редко используемые страницы уезжают на диск, приложение продолжает работать, пусть и медленнее. Медленно — это состояние, которое вы заметите и почините. Убитый процесс — это простой.

Сколько выделять

Для сервера с 8 ГБ разумно 2–4 ГБ. Цель не «удвоить память», а дать ядру пространство для манёвра.

fallocate -l 4G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

Чтобы swap подключался после перезагрузки, добавьте строку в /etc/fstab:

/swapfile none swap sw 0 0

Настройте swappiness

Значение по умолчанию 60 слишком охотно выгружает страницы на сервере с NVMe. Разумнее 10:

sysctl vm.swappiness=10

Это означает «используй swap, только когда действительно припёрло» — ровно то поведение, которое нужно.