zswap - andyceo/documentation GitHub Wiki

zswap

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

Протестировано на версии 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.

Ссылки:

⚠️ **GitHub.com Fallback** ⚠️