Привет, выходные пролетают со скоростью света и так по кругу. Порой задумываешься — а что дальше? А дальше поговорим про особенность ядра linux как zram.
ZRAM эта такая штуковина, которая позволяет сжимать оперативную память на лету и таким образом увеличить ее объём. Нет, это реально работает. А то бывают такие приколы - скачай 1гиг памяти бесплатно. Встречал в гуголплее такую хреновину для андроидов.
При включении zram, сжатие переносит часть нагрузки на процессор, но использование zram действительно может улучшить производительность. Особенно на серваках/пекарнях с малым объемом оперативки.
Также есть zswap, которая сжимает данные в разделе подкачки. И которая по умолчанию включена почти во всех официальных ядрах.
Проблема zswap заключается в том, что его приоритет выше чем у zram, который остается неиспользуемым. Чтобы решить эту проблему, нужно задизейблить zswap в ядре.
Но чтобы применить эту опцию, нужно пересобрать ядро. А оно нам нафиг не всралось. Поэтому пойдем легким путем и задизейблим zswap через загрузчик grub.
Редактируем файл /etc/default/grub
Не забываем перегенирировать конфиг grub:
Перезагружаем машину и проверяем отключение zswap:
Если вывелась буква N значит ты все сделал правильно.
Кстати можешь изначально проверить, возможно zswap у тебя по умолчанию выключен. У меня в Selectel сразу выводит букву N, возможно по причине, что у меня вообще swap отсутствует.
Ну и наконец включаем zram. Для этого пишем bash скрипт и кидаем его в автозагрузку:
1. Загружаем модуль zram
2. Выбираем алгоритм сжатия lz4 (либо zstd)
3. Объем zram, у меня 1гиг физической оперативки
4. 2 это количество потоков сжатия (потоки процессора)
5. Создаем блочное устройство и включаем его
Запускаем скрипт и проверяем включение командой: zramctl. Если на экран что-то вывелось, значит всё ок и сжатие начало работать.
Если заморачиваться с bash скриптами не хочется, ставим утилиту которая будет работать через systemd.
Правим конфиг /etc/systemd/zram-generator.conf
Активируем и запускаем:
Всё! Теперь оно само будет запускаться без лишних движений.
Ну и не забываем про минус использования zram. При включении ты теряешь возможность использовать нативный swap раздел. По крайней мере так написано в мануале. Но это не точно.
Надо будет ради интереса бенчмарки снять. Хотя тут наверное проще гуглануть, всяко кто-то уже снимал.
Ладно пойду дальше кубернейтсы шатать. Увидимся!
tags: #linux
—
💩 @bashdays
ZRAM эта такая штуковина, которая позволяет сжимать оперативную память на лету и таким образом увеличить ее объём. Нет, это реально работает. А то бывают такие приколы - скачай 1гиг памяти бесплатно. Встречал в гуголплее такую хреновину для андроидов.
При включении zram, сжатие переносит часть нагрузки на процессор, но использование zram действительно может улучшить производительность. Особенно на серваках/пекарнях с малым объемом оперативки.
Также есть zswap, которая сжимает данные в разделе подкачки. И которая по умолчанию включена почти во всех официальных ядрах.
Проблема zswap заключается в том, что его приоритет выше чем у zram, который остается неиспользуемым. Чтобы решить эту проблему, нужно задизейблить zswap в ядре.
CONFIG_ZSWAP_DEFAULT_ON=N
Но чтобы применить эту опцию, нужно пересобрать ядро. А оно нам нафиг не всралось. Поэтому пойдем легким путем и задизейблим zswap через загрузчик grub.
Редактируем файл /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="zswap.enabled=0" loglevel=3 quiet "
Не забываем перегенирировать конфиг grub:
grub-mkconfig -o /boot/grub/grub.cfg
Перезагружаем машину и проверяем отключение zswap:
cat /sys/module/zswap/parameters/enabled
Если вывелась буква N значит ты все сделал правильно.
Кстати можешь изначально проверить, возможно zswap у тебя по умолчанию выключен. У меня в Selectel сразу выводит букву N, возможно по причине, что у меня вообще swap отсутствует.
Ну и наконец включаем zram. Для этого пишем bash скрипт и кидаем его в автозагрузку:
#!/bin/bash
modprobe zram
mkdir /sys/block/zram0
echo lz4 > /sys/block/zram0/comp_algorithm
echo 1G > /sys/block/zram0/disksize
echo 2 > /sys/block/zram0/max_comp_streams
mkswap --label zram0 /dev/zram0
swapon --priority 100 /dev/zram0
1. Загружаем модуль zram
2. Выбираем алгоритм сжатия lz4 (либо zstd)
3. Объем zram, у меня 1гиг физической оперативки
4. 2 это количество потоков сжатия (потоки процессора)
5. Создаем блочное устройство и включаем его
Запускаем скрипт и проверяем включение командой: zramctl. Если на экран что-то вывелось, значит всё ок и сжатие начало работать.
Если заморачиваться с bash скриптами не хочется, ставим утилиту которая будет работать через systemd.
apt install systemd-zram-generator
Правим конфиг /etc/systemd/zram-generator.conf
[zram0]
zram-size = ram
compression-algorithm = lz4
Активируем и запускаем:
systemctl daemon-reload
systemctl start /dev/zram0
Всё! Теперь оно само будет запускаться без лишних движений.
Ну и не забываем про минус использования zram. При включении ты теряешь возможность использовать нативный swap раздел. По крайней мере так написано в мануале. Но это не точно.
Надо будет ради интереса бенчмарки снять. Хотя тут наверное проще гуглануть, всяко кто-то уже снимал.
Ладно пойду дальше кубернейтсы шатать. Увидимся!
tags: #linux
—