Zram в качестве swap файла в Linux

Zram — это технология, которая позволяет создать блочное устройство в оперативной памяти, данные на котором при сохранении сжимаются одним из выбранных алгоритмов. Доступно их несколько, в зависимости от версии операционной системы. Например, в последней версии Proxmox — это lzo, lz4, lz4hc, deflate. По умолчанию используется lzo. Вероятно, т.к. он был добавлен в модуль ядра ранее и сохранён в качестве стандартной настройки в целях совместимости. Наиболее оптимальным на данный момент будет выбор в пользу lz4. Он обладает оптимальным соотношением скорости и коэффициента сжатия и очень быстр в распаковке. Кроме того, lz4 доступен практически во всех актуальных дистрибутивах linux. Для наглядности можно обратиться к таблице:

Чем может быть полезен swap в оперативной памяти:

  1. Если в системе стоят обычные диски (не ssd)? это существенно ускорит сброс памяти в раздел подкачки
  2. Для ssd дисков можно таким образом сократить объём записываемых данных на диск и продлить срок службы ssd
  3. Более эффективное использование памяти

Тут стоит отметить, нет смысла создавать раздел zram swap больше чем размер памяти умноженный на 2, т.к. ожидаемый коэффициент сжатия у нас 2:1. На практике, если система станет настолько сильно своппить, что займёт удвоенный размер памяти в zram, то, скорее всего, и работать на ней будет уже не возможно, т.к. процесс отправки и извлечения данных из swap станет непрерывным. Не стоит доводить до такого состояния, лучше добавить памяти. Поэтому, мы не рекомендуем создавать zram раздел больше, чем объём физической памяти.  Также очень полезным может оказаться использование backing_dev — сброс несжимаемых данных на физическое устройство, но это тема отдельной статьи.

Далее рассмотрим настройку zram в качестве swap файла в Proxmox VE. Данным пример должен сработать также в свежих версиях Debian (9, 10) и Ubuntu (начиная с 18-й версии). В данном примере 32G нужно заменить на Ваш размер раздела zram.

modprobe zram 
zramctl -s 32G -a lz4 /dev/zram0 
mkswap /dev/zram0 
swapon /dev/zram0 -p 10 

# настройка автоматического создания zram swap при старте системы 
echo "zram" > /etc/modules-load.d/zram.conf 
echo 'KERNEL=="zram0", ATTR{disksize}="32G" RUN="/sbin/mkswap /dev/zram0", TAG+="systemd"' > /etc/udev/rules.d/99-zram.rules 
echo "/dev/zram0 none swap defaults,pri=10 0 0" >> /etc/fstab

Посмотреть статистику использования раздела можно при помощи команды zramctl без параметров:

zramctl
NAME       ALGORITHM DISKSIZE  DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 lz4            32G 48.7M 20.1M 21.5M      16 [SWAP]

Вы должны быть авторизованы, чтобы оставить комментарий.

Нам доверили свои сайты

Image
Image
Image
Image
Image
Image
Навигация

8 (800) 77-55-7718 (800) 77-55-771

8 (800) 77-55-771