Включаем технологию zswap на Debian jessie
Смысл технологии zswap сводится к тому, что при необходимости выгрузки страниц памяти на диск производится попытка сжать страницы, размещая их при этом в пуле в оперативной памяти. По мере возможности сжатые страницы не выгружаются на диск чтобы избежать операций ввода/вывода с медленным носителем.
Реализация такого подхода позволяет, при возникновении необходимости сброса памяти в раздел подкачки, сократить ввод-вывод и повысить скорость работы системы в целом, за счет того, что по возможности избегается использование медленного носителя. Ценой сокращения ввода/вывода является увеличение нагрузки на процессор, который тратит дополнительные ресурсы на сжатие и распаковку данных. По утверждению разработчиков, в их конфигурации при компиляции ядра в ситуации когда происходит своппинг, выигрыш по объему ввода/вывода составил 76%, а время выполнения операции сократилось на 53%.
Примечание: не следует путать zswap с похожей по смыслу технологией zRAM (ранее compcache), при которой в памяти создается блочное устройство на которое производится своппинг со сжатием.
Все описание выше взято с сайта opennet.ru из статьи Для Linux представлена технология Zswap для сжатого кеширования в системе подкачки
Проверка поддержки технологии zswap в ядре
cat /boot/config-`uname -r` | grep -i zswap
Если получаем вывод CONFIG_ZSWAP=y то все ОК можем юзать.
Включаем zswap
Для того что бы включить zswap необходимо в параметрах запуска ядра прописать:
- zswap.enabled=1
- zswap.compressor=lzo либо zswap.compressor=deflate либо zswap.compressor=lz4
- zswap.max_pool_percent=15 (15 говорят оптимально)
Если нужно ограничить максимальный объём памяти для zswap, то в параметрах загрузчика указываем ещё
- zswap.max_pool_percent=x
Эти параметры необходимо передать в загрузчик будем рассматривать GRUB2 (GRUB - загрузчик системы):
Открываем файл /etc/default/grub
В параметр GRUB_CMDLINE_LINUX_DEFAULT прописываем:
GRUB_CMDLINE_LINUX_DEFAULT = "zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=15"
GRUB_CMDLINE_LINUX_DEFAULT - уже может содержать некое значение типа "splash" тогда наши параметры дописываем через пробел. Например:
GRUB_CMDLINE_LINUX_DEFAULT = "splash zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=15"
Далее необходимо обновить конфигурацию загрузчика:
update-grub
Ну, либо, что тоже самое:
update-grub2
Затем нужно добавить модули lz4 и lz4_compress в initramfs (Оптимизация initramfs в Debian):
echo lz4 >> /etc/initramfs-tools/modules echo lz4_compress >> /etc/initramfs-tools/modules
Далее необходимо обновить образ initramfs (по сути файл /boot/initrd.img-*):
update-initramfs -u
Затем перезагружаем систему и после загрузки проверяем:
dmesg | grep -i zswap
Вывод должен получится такой:
[ 0.782491] zswap: loading zswap [ 0.784771] zswap: using lz4 compressor