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