zRAM - это такой хитрый механизм, который создаёт сжатое блочное устройство в оперативной памяти. Чем оно полезно для Raspberry Pi? В него можно засунуть swap-раздел и ценой небольшого уменьшения доступной оперативной памяти значительно увеличить ресурс карты памяти, на которой этот самый раздел и располагается. На старых моделях Raspberry Pi от zRAM польза была довольно сомнительная, потому что они обладали одноядерным процессором, который и так производительностью не отличался.
Еще zRAM в последнее время довольно часто используют производители мобильный устройств на ОС Android.
Итак, механизм этот задействовать довольно просто.
Достаточно подгрузить модуль ядра, задать размер, отформатировать как swap-раздел и подключить этот самый swap-раздел.
Чтобы не городить свой велосипед, будем использовать средства системы. Сначала надо загрузить модуль:
sudo modprobe zram
А для того, чтобы он каждый раз сам загружался, пропишем его имя в файл "/etc/modules". Без указания дополнительных параметров модуль создаёт одно блочное устройство "/dev/zram0" нулевого размера.
Устройство есть, теперь надо задать его размер. Делается это следующим образом:
echo размер_в_байтах > /sys/block/zram0/disksize
Теперь надо сделать из этого блочного устройства swap и подключить.
mkswap /dev/zram0 swapon /dev/zram0 -p 10
Делать подобное каждый раз руками - это себя не уважать, поэтому возложим всё на систему.
Загрузку модуля уже автоматизировали, осталось автоматизировать форматирование и подключение. Мне больше понравился вариант с использованием udev. Достаточно создать файл "/etc/udev/rules.d/10-zram.rules" с такой строкой:
KERNEL=="zram0", SUBSYSTEM=="block", DRIVER=="", ACTION=="add", ATTR{disksize}=="0", ATTR{disksize}="128M", RUN+="/sbin/mkswap $env{DEVNAME}"
Здесь 128M - это размер блочного устройства в мегабайтах.
Для подключения swap при загрузке системы пропишем в "/etc/fstab":
/dev/zram0 none swap defaults 0 0
Если всё сделано правильно, то в системном журнале можно увидеть примерно такие записи:
[ 7.583494] zram: Created 1 device(s) ... [ 7.584840] zram0: detected capacity change from 0 to 134217728 [ 9.572654] Adding 131068k swap on /dev/zram0. Priority:-1 extents:1 across:131068k SSFS