Ubuntu メモリ圧縮 zswap で少ないメモリを何とかする

いま使っているMacbook2,1は最大搭載量が2Gといういまだとかなり格安ノートでも備えている容量しか持っていません。
実際問題ブラウジングしてすこしプログラム書いてという程度であれば実際十分なのですがそれでもたまに固まります(スワップしている)

❯❯❯ free
              total        used        free      shared  buff/cache   available
Mem:        2028328     1045384      115460      174816      867484      890260
Swap:       2063356           0     2063356

という状況なので zswap を有効にしてみます。

zswap とは、仮想メモリ圧縮(英語版)を実現する Linux カーネルの機能で、スワップされたページを圧縮されたライトバックキャッシュ上に保持する。メモリページ(英語版)がスワップアウトされる際にスワップデバイス上に移動させるのではなく、システム RAM 上に動的に確保されるメモリプール(英語版)内に圧縮して保存する。実スワップデバイスへのライトバックは延期されるか完全に回避されるので、スワップが必要とされる Linux システム上の I/O を大きく低減させることができる。トレードオフとして、圧縮を実行するために CPU サイクルの消費は増加する – https://ja.wikipedia.org/wiki/Zswap

すでに今回のUbuntu18.04(32bit)ではカーネル上は利用可能になっています。

❯❯❯ cat /boot/config-`uname -r` | grep -i zswap
CONFIG_ZSWAP=y

設定としてカーネルモジュールの設定をします。

$ 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

Grubの起動パラメータと、/etc/default/grunbに以下を追記しています。

GRUB_CMDLINE_LINUX_DEFAULT="text zswap.enabled=1 zswap.compressor=lz4"

これで再起動すれば利用可能になります。

❯❯❯ cat /sys/module/zswap/parameters/enabled
Y
❯❯❯ journalctl -k | grep -i zswap
 6月 21 07:24:10 child kernel: Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.17.2-041702-generic root=UUID=22564c24-a485-4cc2-9fd8-af65d431da9d ro text zswap.enabled=1 zswap.compressor=lz4
 6月 21 07:24:10 child kernel: zswap: loaded using pool lz4/zbud

入れたからと言って急にメモリが増えるわけでもないし挙動が早くなるわけではないですがメモリ不足で急激に落ちるというようなことはなくなったような気がします。おまじない程度で。

上部へスクロール