Передовые виртуальные и выделенные серверы для проектов любой сложности и структуры.
 Подписывайтесь на Telegram канал!

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 и ZSWAP

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

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

ZSWAP — тличается от ZRAM тем, что использует существующий swap-раздел на диске, а в ОЗУ создаётся пул со сжатыми данными (кэшем). После того как пул до отказа забьётся сжатыми данными, он сбросит их в раздел подкачки и снова начнёт принимать и сжимать данные.  По утверждению разработчиков, в их конфигурации при компиляции ядра в ситуации когда происходит своппинг, выигрыш по объему ввода/вывода составил 76%, а время выполнения операции сократилось на 53%. При использовании ZSWAP, используется раздел swap на диске, в ОЗУ хранится только сжатый кэш.

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

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

swapon -s

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

Можно проверить используя утилиту htop.

Создание 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 -s
=вывод команды=
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 -s
=вывод команды=
Filename Type Size Used Priority
/etc/swap file 3999996 0 -1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Значительное увеличение vfs_cache_pressure за пределы 100 может отрицательно сказаться на производительности. Для восстановления кода необходимо использовать различные блокировки для поиска свободных каталогов и объектов inode. При vfs_cache_pressure = 1000 он будет искать в десять раз больше свободных объектов, чем есть.

Вывод

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

Понравилась статья? Поделитесь ей с друзьями!
Пожалуйста, оставляйте свои комментарии

Читая их я получаю информацию которая позволяет мне улучшить качество написания статей. Кроме того, оставляя комментарии вы помогаете сайту получить более высокий рейтинг у поисковых систем. Давайте общаться.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *