zswap - andyceo/documentation GitHub Wiki
zswap это легковесный кеш для swap-страниц. Работает только при наличии хотя бы одного физического swap-устройства и является по сути кешем перед ним.
По умолчанию в Arch включен, в Debian и Ubuntu выключен.
Проверить текущую конфигурацию:
grep -r . /sys/module/zswap/parameters/
Проверить статистику:
sudo grep -r . /sys/kernel/debug/zswap
Можно включить/выключить (используйте 1/0) модуль в рантайме (действует до первой перезагрузки):
echo 1 > /sys/module/zswap/parameters/enabled
Самый простой способ включить этот модуль на постоянной основе это прописать его при запуске Linux:
# cat /etc/default/grub | grep GRUB_CMDLINE_LINUX_DEFAULT
GRUB_CMDLINE_LINUX_DEFAULT="quiet zswap.enabled=1 zswap.compressor=zstd zswap.max_pool_percent=20 zswap.zpool=zsmalloc zswap.shrinker_enabled=1"
И затем пересоздать конфигурацию Grub: sudo update-grub.
Протестировано на версии Debian 12 Bookworm с ядром 6.10.11-1~bpo12+1 из бекпортов.
-
добавим нужные модули ядра в
/etc/initramfs-tools/modules:cat /etc/initramfs-tools/modules zstd z3fold # если будете использовать именно этот аллокаторzsmallocиzbudуже есть в ядре. -
запустить пересборку
initramfsдля всех ядер:update-initramfs -k all -u
Коротко об аллокаторах памяти для zswap:
-
zbud: хранит две страницы на ядро, в реальной работе достигает степени сжатия примерно 1.7 -
z3fold: хранит три страницы на ядро, дальнейшее развитие zbud, в реальной работе достигает степени сжатия примерно 2.7 -
zsmalloc: в ядрах после 6.3 был добавлен аллокаторzsmalloc. Предполагается что он работает хорошо в условиях нехватки памяти и сохраняет больше памяти (принят по умолчанию в Arch), сжимает 3:1 / 5:1 / 7:1 / 12:1 - лучше чем все остальное, после патчей вzsmalloc.
Проверить, есть ли модуль zsmalloc в ядре по умолчанию или нет, можно следующей командой (другие модули проверяются аналогично):
cat /boot/config-`uname -r` | grep -i zsmalloc
Также можно использовать systemd.
- zswap - Wikipedia
- zswap - ArchWiki
- Zswap - Debian Wiki
- Zswap - LinuxReviews
-
zswap on Linux kernel docs: документация
zswapв ядре Linux -
The zswap compressed swap cache: статья от разработчика
zswapс объяснением принципа работы