SWAP один из важных параметров для стабильной работы операционной системы Linux. Споров о том как правильно использовать в интернете существует масса. Для правильной настройки надо иметь понимание для чего используется ваша система.

Введение

Постараюсь  коротко рассказать основные моменты которые надо учитывать и дать практические советы проверенные на личном опыте.

Нужен SWAP или нет?

Однозначно нужен! Можно обойтись и без него, но тогда имейте в виду, что:

  1. SWAP используется при организации режима сна и при его отсутствии про этот режим можно забыть,
  2. Если SWAP отсутствует и память будет исчерпана тогда компьютер зависнет и потребуется выполнять полный сброс (hard reset). У меня был случай когда браузер Chrome скушал всю память и повесил систему.

Если в первом случае вы можете оказаться от использования режима сна, то во втором ни кто и никогда не даст вам гарантии что какая то используемая вами программа не даст сбой и заполнив всю память не повесит систему.

Размер SWAP

Советов по размеру множество, но мы остановимся на советах разработчиков Red Hat (CentOS):

  • Если памяти < 2G то необходимый объем S = M *2
  • Если памяти > 2G то необходимый объем S = M + 2

При современных объемах жестких дисков я бы не стал жалеть места на размер SWAP и уверяю вас что экономия места в данном случае может привести к гораздо большим проблемам.

Варианты размещения SWAP

Вариантов несколько:

  • на разделе диска,
  • в файле,
  • или в оперативной памяти использую zRAM.

Исторически в Linux SWAP размещался на разделе, но в современных дистрибутивах производительность SWAP-файла не уступает SWAP-разделу и это весьма радует.

SWAP-раздел

Когда вы точно знаете, что размер оперативной памяти меняться не будет и вы точно уверены в размере SWAP разумно выделить раздел при установке системы.

Хочу заострить ваше внимание на установку систем Linux из готовых шаблонов которые предлагают хозяева ресурсов предоставляющих услуги VDS. Один из шаблонов при использовании 2 G памяти создал мне SWAP раздел размером 512 М. При таком размере он заполнился на стадии настройки системы. Устанавливайте OS Linux по возможности с минимального iso образа системы!

SWAP-файл

Использование файла очень удобно особенно когда нет точного понимания какие будут окончательные аппаратные параметры системы. Файл можно создать в любом удобном месте и необходимым вам размером. Ниже я расскажу как это сделать.

zRAM для SWAP

Вариант с использованием zRAM требует наличие хорошего опыт в использовании Linux систем. На мой взгляд данный способ имеет смысл использовать на новом производительном железе и с хорошим знанием системы на которой это будет работать.

zRAM – это модуль ядра Linux, позволяющий сжимать содержимое оперативной памяти, и таким образом увеличивать ее объем в несколько раз. zRAM создает сжатое блочное устройство в ОЗУ которое чаще всего используется как swap. При этом степень сжатия данных получается в среднем 3:1. Это означает что на 1 гигабайт подкачки будет использовано в 333 мегабайт физической памяти.

Проверка наличия SWAP

Проверка наличие:

swapon -as

Если пусто, значит его нет.

Создание SWAP-файла

Создадим файл c именем swap размером 4 G в папке /etc:

dd if=/dev/zero of=/etc/swap bs=1024 count=4000000
= вывод команды =
4000000+0 записей получено
4000000+0 записей отправлено
скопировано 4096000000 байт (4,1 GB), 176,33 c, 23,2 MB/

Форматируем файл в формат свопа:

mkswap /etc/swap
=вывод команды=
Setting up swapspace version 1, size = 3999996 KiB
no label, UUID=7db57287-a7c3-4973-9f89-0be098a493ac

Подключаем файл к системе:

swapon /etc/swap
=вывод команды=
swapon: /etc/swap: insecure permissions 0644, 0600 suggested.

Проверяем результат работы:

swapon -as
=вывод команды=
Filename Type Size Used Priority
/etc/swap file 3999996 0 -1

Сделаем чтобы swap монтировался при загрузке. Для этого добавляем в fstab необходимый параметр:

vim /etc/fstab
=необходимые дополнения=
# Подключим swap при загрузке
/etc/swap swap swap defaults 0 0

В конце файла делаем переход на новую строку!

Сохраняем файл и перезагружаемся.

reboot

Проверяем:

swapon -as
=вывод команды=
Filename Type Size Used Priority
/etc/swap file 3999996 0 -1

Оптимизация SWAP

Оптимизация сводится к настройке двух параметров.

Параметр ядра swappiness

Параметры от 0 до 100. При значениях близких к нулю, ядро не переносит данные на диск, если в этом нет крайней необходимости.

Определение используемого параметра swappiness:

cat /proc/sys/vm/swappiness
= вывод команды =
60

Исходя из действующего значения принимаете решение об изменении. Изменим значение до 10:

sysctl -w vm.swappiness=10
= вывод команды =
vm.swappiness=10

параметр -w для сохранения этой настройки после перезагрузки.

Параметр ядра vfs_cache_pressure

Показывает системе какое время нужно хранить открытые. Значение от 0 до 100. При значениях близких к нулю, ядро будет держать их в памяти как можно дольше.

Определение используемого параметра vfs_cache_pressure:

cat /proc/sys/vm/vfs_cache_pressure
= вывод команды= 
100

Исходя из действующего значения принимаете решение об изменении. Изменим значение до 50:

sysctl -w vm.vfs_cache_pressure=50
= вывод команды =
vm.vfs_cache_pressure=50

Вывод

Внимательней подходите к настройке SWAP так как в будущем будет меньше проблем при обслуживании системы. Не уделяя должного внимания на такой кажущийся пустяк я не раз получал сюрпризы  при работе Linux.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Хотите сказать денежное спасибо? Подарите денежку!

Похожие по теме записи