この記事は1年以上前の古い記事です。現状に即していない記述の場合があります。あらかじめご了承ください。
Zswapを有効にして少ないメモリを乗り切ろう

nogajun
以前、書いたZramを有効にして少ないメモリを乗り切ろうの続編です。
某所で少ないメモリのマシンをなんとか頑張って使う話が出てたので書いておきます。
参考
- Enable ZSwap to increase performance - Tips, Tricks and Tutorials / Tips & Tricks - Ubuntu MATE Community: https://ubuntu-mate.community/t/enable-zswap-to-increase-performance/11302
- Zswap - ArchWiki: https://wiki.archlinux.jp/index.php/Zswap
Zswapの設定方法
まずはカーネルがZswapに対応しているか調べます。「CONFIG_ZSWAP=y」と表示されれば有効になっています。
$ cat /boot/config-`uname -r` | grep -i zswap
CONFIG_ZSWAP=y
grubにZswapを有効にするカーネルパラメータ設定を書き込みます。
$ sudo editor /etc/default/grub
# quietのあとにzswap.enabled=1 zswap.compressor=lz4を追記
GRUB_CMDLINE_LINUX_DEFAULT="quiet zswap.enabled=1 zswap.compressor=lz4"
パラメータは「zswap.enabled=1」はZswapを有効にする、「zswap.compressor=lz4」は圧縮形式をlz4に指定するという意味です。 追記したらgrubの設定をアップデートします。
$ sudo /usr/sbin/update-grub
続いてinitramfsでlz4カーネルモジュールを読み込む設定を追記します。 こちらも追記したらupdate-initramfsでアップデートします。
$ sudo sh -c "echo lz4 >> /etc/initramfs-tools/modules"
$ sudo sh -c "echo lz4_compress >> /etc/initramfs-tools/modules"
$ sudo /usr/sbin/update-initramfs -u
これでマシンを再起動すれば終わりです。
設定の確認
再起動してsysfsの/sys/module/zswap/parameters/enabledにYと出ていれば有効になっています。
$ cat /sys/module/zswap/parameters/enabled
Y
dmesgかjournalctlに、こんな感じの行が出ていればlz4が使われています。
# journalctl -k | grep -i zswap
2月 06 14:30:48 mate kernel: zswap: loaded using pool lz4/zbud
まとめ
当たり前の話ですがZswapを有効にしたからといってメモリが増えるわけでもなく、メモリが少なくなったらいきなり落とされたりや固まってしまうのが、操作できるぐらいで緩やかに耐えてくれる感じになるだけです。
とはいえ、最近はメモリも高騰してて買うのも躊躇しますしやっておくと安心感にはつながるので試してみてはいかがでしょうか。