Настройка zswap в Debian

Современные браузеры увеличивают свои требования к объёму оперативной памяти темпами, за которыми сложно поспевать. Я лично не часто меняю компьютер, да и добавить в систему ещё немного модулей оперативной памяти иногда оказывается не самым дешёвым решением, особенно если на материнской плате уже заняты все слоты, а устаревшие модули памяти в магазинах продаются по цене выше, чем модули памяти для новых компьютеров.

Одним из возможных выходов из этой непростой ситуации может быть использование модуля ядра zswap, который перед выгрузкой страниц в раздел подкачки сначала старается сжать их и оставить в оперативной памяти. Внешне этот эффект проявляется так, что оперативной памяти как будто стало больше и выгрузка страниц в раздел подкачки осуществляется гораздо реже.

Для сжатия страниц памяти воспользуемся новым алгоритмом сжатия LZ4, который обладает более высокой производительностью по сравнению с предлагаемым по умолчанию алгоритмом сжатия LZO. Несмотря на то, что LZ4 сжимает чуть хуже, он меньше грузит процессор. Таким образом соблюдается более приемлемый баланс между экономией памяти и нагрузкой на процессор.

1. Модули ядра для поддержки LZ4

Для начала впишем в файл /etc/initramfs-tools/modules модули ядра, реализующие быстрый алгоритм сжатия LZ:

lz4
lz4_compress

И пересоберём образ загрузочной файловой системы, чтобы в него попали добавленные нами модули:

# update-initramfs -u -k all

2. Модуль ядра для сжатия страниц подкачки

Теперь прописываем автоматическое включение zswap при загрузке ядра в конфигурации загрузчика GRUB в файле /etc/default/grub. Для этого добавим ряд новых настроек в GRUB_CMDLINE_LINUX_DEFAULT:

zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=80

Значение настроек:

После изменения конфигурации загрузчика обновим его автоматически генерируемые файлы с настройками:

# update-grub

Всё готово, теперь нужно перезагрузить систему. Очень редкое действие, но этом случае перезагрузка действительно необходимо, т.к. загрузить модули без перезагрузки мне лично не удалось:

# reboot

3. Проверка

После перезагрузки можно проверить, работает ли модуль и какой алгоритм сжатия используется:

$ dmesg | grep zswap:
[    0.830940] zswap: loading zswap
[    0.835122] zswap: using lz4 compressor

4. Использованные материалы

Написать автору