Zram linux что это

Настройка zRam в Linux

Технология zRam ранее известная как compcache — реализована в виде модуля ядра Linux и позволяет сжимать содержимое оперативной памяти, и таким образом увеличивать ее объем в несколько раз. Работает это так: модуль zRam создает сжатое блочное устройство в ОЗУ которое чаще всего используется как swap или монтируется в tmp.

При этом степень сжатия данных получается в среднем 3:1. Это означает что на 1 гигабайт подкачки будет использовано в 333 мегабайт физической памяти. Сейчас оперативная память стоит не так уж дорого, но использование zRam вместо файла подкачки на диске может быть полезным для старых ноутбуков и компьютеров, а также для виртуализации. В этой статье мы рассмотрим как выполняется настройка zRam Linux на примере Ubuntu.

Настройка zRam в Linux

Шаг 1. Модуль ядра

Это модуль ядра, а следовательно, важно, чтобы ваше ядро его поддерживало. zRam включен в стандартную поставку начиная с ядра версии 3.14. Вы можете посмотреть вашу версию ядра командой:

Проверка информации о модуле ядра:

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

Device Drivers —>
[*] Block devices —>
Compressed RAM block device support

Шаг 2. Настройка Grub

Когда модуль загружен надо установить параметр ядра zram.num_devices который указывает максимальное количество сжатых устройств. Например для двух блочных устройств используйте добавьте в переменную GRUB_CMDLINE_LINUX_DEFAULT следующий параметр:

Затем обновите конфигурацию Grub и перезагрузите компьютер:

Шаг 3. Скрипт запуска и остановки

Чтобы автоматизировать запуск zram желательно написать скрипт, который будет выполнять все необходимые действия. Давайте создадим скрипт, который запускает четыре zRam устройства и подключает их в качестве swap:

sudo vi /usr/local/bin/zram-start.sh

#!/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

Рассмотрим подробнее что означают строчки скрипта. Первая строчка с modprobe активирует модуля ядра на два блочных устройства. Следующие две строчки устанавливают размер для этих устройств в 1 Гб. Размер устанавливается в мегабайтах. Затем, для каждого блочного устройства создаем файловую систему подкачки командой mkswap и активируем его с помощью команды swapon. Теперь создадим скрипт, который выгружает всё это и отключает zram:

Читайте также:  Rdp через браузер linux

sudo vi /usr/local/bin/zram-stop.sh

#!/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

Обоим скриптам надо дать права на выполнение:

sudo chmod ugo+x /usr/local/bin/zram-start.sh
sudo chmod ugo+x /usr/local/bin/zram-stop.sh

Шаг 4. Тестирование zRam

Теперь надо всё протестировать. Запустите zRam выполнив скрипт запуска:

Теперь вы можете убедится, что количество подкачки увеличилось на 2 Гб:

Всё работает, теперь можно проверить работает ли скрипт отключения:

Шаг 5. Настройка сервиса systemd

Чтобы запускать zram по умолчанию нужно создать для него юнит файл systemd. Создайте файл со следующим содержимым:

sudo systemctl edit —full —force zram.service

[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

После этого выполните команду daemon-reload, чтобы перечитать конфигурацию systemd:

sudo systemctl daemon-reload

Запустите сервис systemd и добавьте его в автозагрузку:

sudo systemctl start zram
sudo systemctl enable zram

Выводы

В этой небольшой статье мы рассмотрели как включить zram ubuntu. Как видите, в современных версиях дистрибутива, где модуль уже включён в ядро в этом нет ничего сложного. А пользуетесь ли вы какими-либо технологиями сжатия памяти? Напишите в комментариях!

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

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

Оцените статью

Об авторе

Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.

16 комментариев к “Настройка zRam в Linux”

Как то пробовал примерно все так делать, но реального ускорения не заметил — потом просто докупил памяти! Ответить

Да, память это идеальное решение, но если нет возможности или средств приходится что-то придумывать) Ответить

Привет, Есть общество Odroid — это устройство работает под Ubuntu 16.04, можешь нам помочь и написать пару статей для него? Например о том как ускорить его, как перенести часть папок на другой диск и как обновить ядро линукс.. Очень нуждаемся в твоей помощи Ответить

А нужно-ли использовать ZRam вкупе с Profile Sync Daemon? Не будут-ли эти приложения мешать друг другу? Или что-то одно лучше выбрать? И что лучше? Ответить

для ubuntu 16.04 нужно перезагрузиться чтобы systemd запустил службу настройки или в консоли от рута запустить:
# systemctl start zram-config.service
проверить можно:
# swapon -s Ответить

Добрый день!
Пытался запустить zram-config на виртуальном сервере OVH, но не вышло. Оказалось, что нет модуля zram, хотя ядро свежее:
root@vps576854:~# uname -a
Linux vps576854 4.15.0-43-generic #46-Ubuntu SMP Thu Dec 6 14:45:28 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
root@vps576854:~# modinfo zram
modinfo: ERROR: Module zram not found.
Устанавливал Ubuntu Server 18.04.1 автоматически из панели управления. Не знаю, может на этом хостинге специально модуль zram отключают. Может подскажите, как самому поставить недостающий модуль на виртуальном сервере? Ответить

Читайте также:  В linux файл samba

Здравствуйте.
У вас во втором способе настройки zram в файле udev/rules.d/10-zram.rules два одинаковых параметра подряд:
ATTR==»0″, ATTR=»512M»
Это так и надо?
Просто когда вы говорите про /tmp со сжатием, то там сначала ATTR, а потом ATTR, в первом случае такого не было? Ответить

Не будет лишним прибавить, что ZRAM не сочетается с родственным ему механизмом ZSWAP, и поскольку последний задействован по умолчанию в некоторых дистрибутивах, то в качестве подготовки к настройке ZRAM его, наряду с традиционным swap, хорошо бы нейтрализовать: https://wiki.archlinux.org/title/Zswap_(Русский)#Включение_и_выключение_zswap Что касается самого ZRAM, то простейший путь постановить его себе на службу — это загрузить пакет systemd-zram-generator из официального репозитория Ubuntu (на других дистрибутивах он же именуется просто zram-generator):
https://github.com/systemd/zram-generator Ответить

Для работы zram-swap, в отличие от zswap, передача каких-либо параметров ядру бессмысленна: всё делается в запущенной системе, для чего достаточно всего пары файлов — юнита и собственно скрипта.
——————————————————
/lib/systemd/system/zram-swap.service:
——————————————————
[Unit]
Description = Enable and configure zram-swap module
DefaultDependencies = no
After = multi-user.target [Service]
ExecStop = /usr/bin/zram-swap stop
ExecStart = /usr/bin/zram-swap start
ExecReload = /usr/bin/zram-swap restart
RemainAfterExit = yes [Install]
WantedBy = swap.target
—————————
/usr/bin/zram-swap:
—————————
#!/bin/sh DEV=zram0
COEFF=512
#COEFF=1024
COMPRESS=lz4 start() SYSDIR=/sys/block/$DEV
ALGO=$SYSDIR/comp_algorithm
MEMSIZE=$[COEFF*`awk ‘/MemTotal/’ /proc/meminfo`]
modprobe -q zram
grep -q $COMPRESS $ALGO && echo $COMPRESS >$ALGO
echo $MEMSIZE >$SYSDIR/disksize
mkswap /dev/zram0 -L zram0 &>/dev/null
swapon -p 100 /dev/$DEV
> stop() DEVZRAM=`awk ‘/^\/dev\/zram/’ /proc/swaps`
[ -z «$DEVZRAM» ] || for i in $DEVZRAM; do
swapoff «$i»
done
rmmod zram
>
> restart() stop
start
> status() swapon
> case $1 in
start|stop|restart|status) $1;;
*) restart
esac
——————————————————
Переменные из шапки скрипта можно вынести в отдельный конфиг и подставлять его вместо определения их прямо в скрипте. Ответить

В строчке:
mkswap /dev/zram0 -L zram0 &>/dev/null
следует заменить оба вхождения zram0 на $DEV Ответить

Источник

zram (Русский)

Состояние перевода: На этой странице представлен перевод статьи zram. Дата последней синхронизации: 28 марта 2023. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

zram, ранее известный как compcache, — это модуль ядра Linux, позволяющий создать сжатое блочное устройство в ОЗУ, то есть RAM-диск со сжатием на лету. Создаваемое этим модулем блочное устройство можно использовать в качестве подкачки или как обычный RAM-диск. Чаще всего zram используется для хранения временных файлов ( /tmp ) и для подкачки. Изначально zram выполнял только последнюю функцию, отсюда и первоначальное название «compcache» («compressed cache»).

Читайте также:  Yandex browser linux настройка

Использование в качестве подкачки

Отключение zswap

Так как zswap включен по умолчанию, перед включением zram его стоит отключить, чтобы он не работал как кэш подкачки перед zram. Включение их обоих также приводит к отображению некорректной статистики в zramctl(8) , и zram остаётся в основном неиспользуемым, потому что zswap перехватывает и сжимает страницы памяти до того как они попадут в zram.

Автоматически

zram-generator предоставляет юнит systemd-zram-setup@.service для автоматической инициализации устройства zram без необходимости включать/запускать шаблон или его экземпляры. Смотрите zram-generator(8) и zram-generator.conf(5) .

Например, чтобы создать подкачку в zram, использующую сжатие zstd и способную занимать всю доступную ОЗУ, установите пакет zram-generator и создайте такой файл:

/etc/systemd/zram-generator.conf
[zram0] zram-size = ram compression-algorithm = zstd

Затем перезагрузитесь и проверьте статус подкачки на настроенном вами устройстве /dev/zramN , посмотрев статус экземпляра юнита systemd-zram-setup@zramN.service или используя zramctl(8) .

В качестве альтернативы можно использовать пакет zramswap AUR , который предоставляет автоматический скрипт для настройки подкачки с высоким приоритетом и размером по умолчанию 20% от размера ОЗУ вашей системы. Чтобы делать это автоматически при каждой загрузке, включите службу zramswap.service . Также есть пакет zramd AUR , позволяющий автоматически настроить zram с использованием сжатия zstd по умолчанию, его конфигурацию можно изменить в /etc/default/zramd . Его можно запустить при загрузке системы, включив службу zramd.service .

Вручную

Пример: чтобы настроить одно устройство zram со сжатием lz4 с ёмкостью 32 ГиБ и приоритетом выше обычного (только для текущего сеанса):

# modprobe zram # echo lz4 > /sys/block/zram0/comp_algorithm # echo 32G > /sys/block/zram0/disksize # mkswap --label zram0 /dev/zram0 # swapon --priority 100 /dev/zram0

Для выключения можно перезагрузиться или выполнить

# swapoff /dev/zram0 # modprobe -r zram

Подробное объяснение всех шагов, опций и потенциальных проблем описано в официальной документации модуля zram.

Подкачка в zram с использованием правила udev

Пример ниже показывает, как настроить подкачку на zram автоматически при загрузке с помощью одного правила udev. Для этого не требуется дополнительных пакетов.

Сперва включите автоматическую загрузку модуля:

Настройте количество требуемых устройств /dev/zram :

options zram num_devices=2
ACTION=="add", KERNEL=="zram1", ATTR="zstd", ATTR="512M", RUN="/usr/bin/mkswap -U clear /dev/%k", TAG+="systemd"

Добавьте /dev/zram в ваш fstab.

/dev/zram0 none swap defaults 0 0 /dev/zram1 none swap defaults 0 0
  • This page was last edited on 29 March 2023, at 05:21.
  • Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.
  • Privacy policy
  • About ArchWiki
  • Disclaimers

Источник

Оцените статью
Adblock
detector