Jump to content
Установка Программ Linux/Windows
Valstan

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

Recommended Posts

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

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

Для сжатия страниц памяти воспользуемся новым алгоритмом сжатия LZ4, который обладает более высокой производительностью по сравнению с предлагаемым по умолчанию алгоритмом сжатия LZO. Несмотря на то, что LZ4 сжимает чуть хуже, он меньше грузит процессор. Таким образом соблюдается более приемлемый баланс между экономией памяти и нагрузкой на процессор.
Модули ядра для поддержки LZ4
Для начала впишем в файл /etc/initramfs-tools/modules модули ядра, реализующие быстрый алгоритм сжатия LZ:
lz4
lz4_compress
И пересоберём образ загрузочной файловой системы, чтобы в него попали добавленные нами модули:
# update-initramfs -u -k all
Модуль ядра для сжатия страниц подкачки
Теперь прописываем автоматическое включение zswap при загрузке ядра в конфигурации загрузчика GRUB в файле /etc/default/grub. Для этого добавим ряд новых настроек в GRUB_CMDLINE_LINUX_DEFAULT:
zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=80
Значение настроек:
zswap.enabled=1 - включает использование zswap,
zswap.compressor=lz4 - выбирает более быстрый алгоритм сжатия lz4 вместо алгоритма сжатия по умолчанию lzo,
zswap.max_pool_percent=80 - разрешает использовать до 80 процентов оперативной памяти для хранения сжатых данных.
После изменения конфигурации загрузчика обновим его автоматически генерируемые файлы с настройками:
# update-grub
Всё готово, теперь нужно перезагрузить систему. Очень редкое действие, но этом случае перезагрузка действительно необходимо, т.к. загрузить модули без перезагрузки мне лично не удалось:
# reboot
Проверка
После перезагрузки можно проверить, работает ли модуль и какой алгоритм сжатия используется:
$ dmesg | grep zswap:
[    0.830940] zswap: loading zswap
[    0.835122] zswap: using lz4 compressor

Проверить сколько "лопает" zswap:

grep . -R /sys/kernel/debug/zswap/

команда выдаст что-то типа:

/sys/kernel/debug/zswap/stored_pages:261778
/sys/kernel/debug/zswap/pool_total_size:536121344
/sys/kernel/debug/zswap/duplicate_entry:0
/sys/kernel/debug/zswap/written_back_pages:0
/sys/kernel/debug/zswap/reject_compress_poor:415
/sys/kernel/debug/zswap/reject_kmemcache_fail:0
/sys/kernel/debug/zswap/reject_alloc_fail:0
/sys/kernel/debug/zswap/reject_reclaim_fail:0
/sys/kernel/debug/zswap/pool_limit_hit:0

Расшифровка выдачи:

stored_pages — показывает текущее количество страниц, помещенных в zswap

pool_total_size — размер аллоцированной zswap памяти в байтах

duplicate_entry — количество дублирующихся записей, как правило не должно превышать нуля

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×