zswapを有効化する

参考リンク

UbuntuにおけるSwapのFAQはここ https://help.ubuntu.com/community/SwapFaq

zswapについてはこちら https://www.kernel.org/doc/html/v5.13/vm/zswap.html#

ここのBlogを参考にzswapの設定をする https://ubuntu.com/blog/how-low-can-you-go-running-ubuntu-desktop-on-a-2gb-raspberry-pi-4

設定手順

/boot/firmware/cmdline.txtに設定を追加する

最初に現在の内容

ubuntu@ubuntu:~$ cat /boot/firmware/cmdline.txt
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=LABEL=writable rootfstype=ext4 elevator=deadline rootwait fixrtc quiet splash

追加

ubuntu@ubuntu:~$  sudo sed -i -e 's/$/ zswap.enabled=1/' /boot/firmware/cmdline.txt

追加後

ubuntu@ubuntu:~$ cat /boot/firmware/cmdline.txt
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=LABEL=writable rootfstype=ext4 elevator=deadline rootwait fixrtc quiet splash zswap.enabled=1

再起動して設定を反映

有効時のパラメータ

ubuntu@ubuntu:~$ grep -R . /sys/module/zswap/parameters
/sys/module/zswap/parameters/same_filled_pages_enabled:Y
/sys/module/zswap/parameters/enabled:Y
/sys/module/zswap/parameters/max_pool_percent:20
/sys/module/zswap/parameters/compressor:lzo
/sys/module/zswap/parameters/zpool:zbud
/sys/module/zswap/parameters/accept_threshold_percent:90

圧縮形式とアロケータの変更

圧縮形式はデフォルトのlzoだと軽いが代わりに圧縮率が低いので変更する。圧縮率がいいのはzstdだが重いので、lzoより圧縮率が高くてzstdより軽量なlz4にする。 アロケータはデフォルトのzbudだとページごとに2つのオブジェクトを格納する。圧縮率を高めるためにページごとに3つのオブジェクトを格納できるz3foldに変更。

sudo -i
echo lz4 >> /etc/initramfs-tools/modules
echo z3fold >> /etc/initramfs-tools/modules

変更したらinitramfsを更新

update-initramfs -u

cmdline.txtにも追加

sudo sed -i -e 's/$/ zswap.compressor=lz4/' /boot/firmware/cmdline.txt
sudo sed -i -e 's/$/ zswap.zpool=z3fold/' /boot/firmware/cmdline.txt

再起動して設定が正しく反映されているかチェック

ubuntu@ubuntu:~$  grep -R . /sys/module/zswap/parameters
/sys/module/zswap/parameters/same_filled_pages_enabled:Y
/sys/module/zswap/parameters/enabled:Y
/sys/module/zswap/parameters/max_pool_percent:20
/sys/module/zswap/parameters/compressor:lz4
/sys/module/zswap/parameters/zpool:z3fold
/sys/module/zswap/parameters/accept_threshold_percent:90