Настраиваем ZRAM модуль

0
(0)

Модуль ядра zram (или «compressed swap») представляет собой механизм в ядре Linux для создания сжатых блочных устройств в оперативной памяти (RAM). Он используется для уменьшения использования физической памяти за счет сжатия данных, которые обычно сохраняются в раздел подкачки (swap).

Работает это примерно так:

  1. Сжимает данные. Когда модуль zram активирован, он создает одно или несколько сжатых устройств в оперативной памяти (RAM). Когда операционная система Linux решает передавать страницы данных в раздел подкачки, они сначала сжимаются и затем сохраняются на устройствах zram вместо обычного раздела подкачки на диске.
  2. Освобождение RAM. Использование устройств zram помогает освободить физическую оперативную память, так как данные сжимаются и хранятся в более компактном виде. Это особенно полезно на системах с ограниченным объемом оперативной памяти.
  3. Дефрагментация раздела подкачки. Поскольку данные сжимаются и хранятся ближе друг к другу в оперативной памяти, устройства zram могут уменьшить фрагментацию раздела подкачки. Это может повысить производительность при обращении к данным в разделе подкачки.

Как итог — использование модуля ядра zram может значительно улучшить производительность системы при нехватке оперативной памяти, так как данные сжимаются и хранятся в более компактной форме, что позволяет сохранить больше данных в оперативной памяти и уменьшить зависимость от медленного раздела подкачки на диске.

Как подключить?

Модуль ядра доступен в ядре linux начиная с версии ядра 3.14. Например у меня Ubuntu 20.04, проверяем версию ядра.

Bash
uname -r

Также можно проверить информацию о нем:

Bash
modinfo zram

Включаем модуль в GRUB

В /etc/default/grub нужно дописать в переменную GRUB_CMDLINE_LINUX_DEFAULT строку zram.num_devices=2. Это число, указывает на количество сжатых устройств.

Обновляем конфигурацию grub и перезагружаемся

Bash
update-grub
shutdown -r now

Далее нам надо написать скрипт, который будет управлять запуском и остановкой zram модуля.

Сам скрипт

Bash
#!/bin/bash
modprobe zram num_devices=2
echo '1024M' > /sys/block/zram0/disksize
echo '1024M' > /sys/block/zram1/disksize
mkswap /dev/zram0
swapon /dev/zram0 -p 10
mkswap /dev/zram1
swapon /dev/zram1 -p 10

Тут мы активируем модуль ядра, устанавливаем для каждого устройства размер в 1024 МБ, создаем ФС подкачки и активируем файл подкачки.

Скрипт для остановки zram:

Bash
#!/bin/bash
swapoff /dev/zram0
swapoff /dev/zram1
echo 1 > /sys/block/zram0/reset
echo 1 > /sys/block/zram1/reset
sleep .5
modprobe -r zram

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

Давайте напишем systemd service для удобного управлением этим (/etc/systemd/system/zram.service):

Bash
[Unit]
Description=zRAM block devices swapping
[Service]
Type=oneshot
ExecStart=/usr/local/bin/zram-start.sh
ExecStop=/usr/local/bin/zram-stop.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target

Перезагружаем демон:

Bash
systemctl daemon-reload

Включаем zram через systemd:

Bash
systemctl start zram.service

Проверяем память, к swap должно прибавится еще 2 гигабайта.

Насколько статья полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Оставить комментарий