Перейти к содержимому

SWAP для Linux

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 разумно выделить раздел при установке системы.

SWAP-файл

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

ZRAM и ZSWAP

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Проверяем:

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

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

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

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

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

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

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

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

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

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

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

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

Вывод

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

Опубликовано вLinux

Один комментарий

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

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