ZRAM

Настройка zRam в Arch/Manjaro Linux

Как-то в бло­ге я уже писал о том, как настро­ить zRam на Raspberry Pi 3. Что это такое и чем оно полез­но, мож­но узнать на Вики­пе­дии. В этом мате­ри­а­ле речь пой­дёт о том, как настро­ить zRam в Arch Linux или его вари­ан­те для нович­ков – Manjaro Linux.

Простая установка и настройка с помощью ezzram из AUR

В AUR есть сце­на­рий уста­нов­ки паке­та ezzram, кото­рый пред­став­ля­ет из себя python-скрипт с про­стым кон­фи­гу­ра­ци­он­ным фай­лом и фай­лом сер­ви­са для systemd. Уста­нав­ли­ва­ет­ся как обыч­но любым AUR-хел­пе­ром, напри­мер yay:

yay -Sa ezzram 

После уста­нов­ки нуж­но доба­вить а вто­за­пуск и запу­стить сер­вис ezzram:

sudo systemctl enable ezzram.service && sudo systemctl start ezzram.service

Кон­фи­гу­ра­ци­он­ный файл лежит по пути /etc/ezzram.conf. В нём все­го три пора­мет­ра:

  • size – раз­мер раз­де­ла zram в мега­бай­тах
  • algorithm – алго­ритм сжа­тия дан­ных в zram раз­де­ле
  • cores – коли­че­ство исполь­зу­е­мых ядер ЦП

Алго­ритм сжа­тия по-умол­ча­нию явля­ет­ся опти­маль­ным для абсо­лют­но­го боль­шин­ства поль­зо­ва­те­лей, раз­мер zram разум­но уста­но­вить в пре­де­лах 30–50% от пол­но­го объ­ё­ма ОЗУ, ну а в «cores» ука­зы­ва­ем коли­че­ство физи­че­ских ядер сво­е­го цен­траль­но­го про­цес­со­ра. После вне­се­ния изме­не­ний сохра­ня­ем файл и акти­ви­ру­ем новую кон­фи­гу­ра­цию пере­за­пус­ком сер­ви­са:

sudo systemctl restart ezzram.service

Ручная настройка с помощью zramctl

Для тех, кто любит делать всё «вруч­ную».

Zramctl – это скрипт на bash, кото­рый помо­жет в созда­нии и настрой­ке раз­де­лов zRam. Уста­но­вить его мож­но из AUR, пакет назы­ва­ет­ся zramswap. С помо­щью yay это мож­но сде­лать так:

yay -Sa zramswap

Создание разделов, настройка и включение zRam

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

swapoff -a #Отключаем весь swap в системе
modprobe zram num_devices=1 #Загружаем модуль zram
zramctl -r /dev/zram* #Сбрасываем все (возможно) существующие виртуальные устройства zram
zramctl --find --size 512M #Создаем новое виртуальное устройство zram необходимого размера (в этом примере 512 МБ)
mkswap /dev/zram0 #создаём swap в устройстве
swapon -p 15 /dev/zram0 #Включаем zram как swap с приоритетом 15

Про­ве­рить вклю­чен ли zRam мож­но коман­дой:

swapon -s

В ответ долж­ны полу­чить такой вывод:

Имя файла                               Тип             Размер  Исп-но  Приоритет
/dev/zram0                              partition       2097148 36608   15

Если так, то всё рабо­та­ет нор­маль­но и zRam в систе­ме вклю­чен и настро­ен пра­виль­но.

Теперь мож­но сде­лать так, что­бы zRam авто­ма­ти­че­ски вклю­чал­ся и настра­и­вал­ся при запус­ке систе­мы. Один из спо­со­бов – исполь­зо­вать систем­ный пла­ни­ров­щик зада­ний cron. Т.к. по умол­ча­нию в Arch Linux коман­ды crontab ‑e, с помо­щью кото­рой редак­ти­ру­ют­ся зада­чи cron нет, мы доба­вим её в систе­му уста­но­вив пакет cronie.

sudo pacman -S cronie

Теперь при­выч­ным обра­зом с помо­щью crontab созда­ём зада­чу cron, кото­рая будет выпол­нять­ся при каж­дой загруз­ке систе­мы. Я редак­ти­рую кон­фи­ги с помо­щью nano, так что в моём слу­чае коман­да редак­ти­ро­ва­ния crontab будет выгля­деть так:

sudo EDITOR=nano crontab -e

Созда­ём зада­ние cron, выпол­ня­ю­ще­е­ся при загруз­ке систе­мы путём встав­ки сле­ду­ю­щей стро­ки:

@reboot swapoff -a && modprobe zram num_devices=1 && zramctl --find --size 2048M && mkswap /dev/zram0 && swapon -p 15 /dev/zram0

Не забы­ва­ем изме­нить пара­метр «–size 2048M» на нуж­ный Вам раз­мер раз­де­ла zRam. Сохра­ня­ем изме­не­ния ком­би­на­ци­ей кла­виш CTRL+O и закры­ва­ем nano – CTRL+X.

Настрой­ка закон­че­на.