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
Нужна помощь?Наши инженеры бесплатно помогут с любым вопросом за считанные минутыНаписать нам