ZRAM/ZSWAP: различия между версиями
Дым (обсуждение | вклад) (Новая страница: «Заготовка заметки. == =ZSWAP= Для работы этой технологии необходим подмонтированный своп-раздел: именно в него zswap скидывает сжатые страницы памяти. =ZRAM= Для этой технологии своп-рездел не обязателен, но если таковой наличествует, то по заполнению сжатого с...») |
Дым (обсуждение | вклад) (→ZRAM) |
||
Строка 10: | Строка 10: | ||
*не учитывает возможно уже задействованной и несовместимой с ним технологии <code>zswap</code> (см. п. выше). | *не учитывает возможно уже задействованной и несовместимой с ним технологии <code>zswap</code> (см. п. выше). | ||
Пакет, в общем-то, и не нужен: достаточно всего пары файлов — скрипта и юнита. | Пакет, в общем-то, и не нужен: достаточно всего пары файлов — скрипта и юнита. | ||
==Юнит ''''/lib/systemd/system/zram-swap.service''''== | |||
Юнит ''''/lib/systemd/system/zram-swap.service'''' | |||
<source lang=ini> | <source lang=ini> | ||
[Unit] | [Unit] | ||
Строка 27: | Строка 26: | ||
WantedBy = swap.target | WantedBy = swap.target | ||
</source> | </source> | ||
Скрипт '''/usr/bin/zram-swap''' | ==Скрипт '''/usr/bin/zram-swap'''== | ||
<source lang=ini> | <source lang=ini> | ||
#!/bin/sh | #!/bin/sh | ||
Строка 76: | Строка 75: | ||
esac | esac | ||
</source> | </source> | ||
Переменные из шапки скрипта про долю отжираемой под своп оперативки '''COEFF''' и алгоритм сжатия '''COMPRESS''' можно вынести в отдельный конфиг < | Переменные из шапки скрипта про долю отжираемой под своп оперативки '''COEFF''' и алгоритм сжатия '''COMPRESS''' можно вынести в отдельный конфиг <code>/etc/sysconfig/zram-swap</code> и рулить ими оттуда. |
Версия от 07:33, 11 октября 2022
Заготовка заметки. ==
ZSWAP
Для работы этой технологии необходим подмонтированный своп-раздел: именно в него zswap скидывает сжатые страницы памяти.
ZRAM
Для этой технологии своп-рездел не обязателен, но если таковой наличествует, то по заполнению сжатого свопа в памяти всё остальное начнёт свопиться уже на накопитель.
В дистрибутиве уже есть пакет по фамилии alterator-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
COEFF=512
#COEFF=1024
COMPRESS=lz4
DEV=zram0
ZSWAP=/sys/module/zswap/parameters/enabled
start(){
SYSDIR=/sys/block/$DEV
ALGO=$SYSDIR/comp_algorithm
echo N >$ZSWAP
modprobe -q zram
grep -q $COMPRESS $ALGO && echo $COMPRESS >$ALGO
echo $[COEFF*`awk '/MemTotal/{print $2}' /proc/meminfo`] >$SYSDIR/disksize
mkswap /dev/$DEV -L $DEV &>/dev/null
swapon -p 100 /dev/$DEV
}
stop(){
# DEVZRAM=`awk '/^\/dev\/zram/{print $1}' /proc/swaps`
DEVZRAM=`awk '/zram/{print $1}' /proc/swaps`
[ -z "$DEVZRAM" ] || {
for i in $DEVZRAM; do
swapoff "$i"
done
rmmod zram
}
echo Y >$ZSWAP
}
restart(){
stop
start
}
status(){
swapon
}
case $1 in
start|stop|restart|status) $1;;
*) restart
esac
Переменные из шапки скрипта про долю отжираемой под своп оперативки COEFF и алгоритм сжатия COMPRESS можно вынести в отдельный конфиг /etc/sysconfig/zram-swap
и рулить ими оттуда.