SWAP в Linux
Руководство по созданию SWAP раздела на Linux
SWAP (своп) — это механизм виртуальной памяти, при котором часть данных из оперативной памяти (ОЗУ) переносится на хранение на HDD (жёсткий диск) или SSD (твёрдотельный накопитель).
В Linux оперативная память (RAM, random access memory) делится на разделы, называемые страницами (pages). Swapping («подкачка») — это процесс, во время которого страницы памяти копируются в специально выделенную область диска, называемую swap space (раздел подкачки, который может быть как отдельным файлом, так и разделом жёсткого диска). Совокупный объём физической памяти и раздела подкачки образует доступную виртуальную память.
Зачем нужен своппинг
-
когда системе требуется больше памяти, чем доступно в данный момент, ядро выгружает наименее используемые страницы в swap, а освободившееся место выделяет текущему приложению или процессу;
-
многие страницы, задействованные приложениями на этапе запуска, больше не используются. Система может выгрузить их в swap, тем самым разгрузив ОЗУ.
Недостатки SWAP
- По сравнению с ОЗУ работа с жёстким диском происходит значительно медленнее: в оперативной памяти операции измеряются наносекундами, а в случае диска — миллисекундами. То есть одни и те же действия на диске занимают в десятки тысяч раз больше времени. Следовательно, чем больше страниц выгружается в swap, тем медленнее работает система.
Примечание
Когда приложения начинают активно использовать своп, это заметно замедляет работу. В таких случаях стоит задуматься об увеличении объёма оперативной памяти. Один из вариантов — перенос проекта на VPS или выделенный сервер, где можно гибко настраивать ресурсы.
Зачастую от нехватки памяти первой страдает база данных. Возможные симптомы:
- постоянное падение сайта с ошибкой соединения с базой данных (например, из-за сбоя MySQL);
- в логах
/var/log/mysql.log
появляется сообщение InnoDB: Fatal error: cannot allocate memory for the buffer pool, которое указывает на нехватку памяти для создания буфера.
Если swap находится на SSD, нужно учитывать, что операции всё равно проходят через дисковую подсистему, что увеличивает время отклика.
Проверка наличия swap в системе
swapon -s
Filename Type Size Used Priority
/swapfile file 40956 40956 -1
Дополнительно:
free -m
total used free shared buff/cache available
Mem: 488 160 7 40 320 259
Swap: 39 39 0
Мы видим, что swap настроен и будет использоваться при необходимости.
Как создать файл подкачки, если он отсутствует
Создадим файл размером 512 МБ:
dd if=/dev/zero of=/swap.file bs=1M count=512
Чтобы изменить размер, скорректируйте значение count
.
Выставляем права доступа, чтобы только root мог читать и писать этот файл:
chmod 600 /swap.file
Форматируем файл под swap:
mkswap /swap.file
Редактируем /etc/fstab
, чтобы swap включался при загрузке:
/swap.file swap swap defaults 0 0
После перезагрузки можно проверить наличие swap командой:
free -m