centos7でzramが使いたい場合
- zswapというのが標準搭載されているのでそちらを使ったほうがいい
- この記事ではzswapの設定方法を記載する
- githubにそれっぽいのがあるが使えるかわからない→github
カーネル設定
1.設定の追加
/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="zswap.enabled=1"
2.設定を反映して再起動
# grub2-mkconfig -o /boot/grub2/grub.cfg
# reboot
確認
起動ログに以下のようにzswapが有効になったというログが出ていればok
$ dmesg|grep zswap
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-3.10.0-327.4.5.el7.x86_64 root=UUID=dd8f0afe-5a00-40ff-b538-5fa0a351cdba ro crashkernel=auto console=tty0 console=ttyS0,115200 zswap.enabled=1
[ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.10.0-327.4.5.el7.x86_64 root=UUID=dd8f0afe-5a00-40ff-b538-5fa0a351cdba ro crashkernel=auto console=tty0 console=ttyS0,115200 zswap.enabled=1
[ 1.562101] zswap: loading zswap
[ 1.571151] zswap: using zbud pool
[ 1.573786] zswap: using lzo compressor
チューニング
容量
容量は最初からフルで確保されるわけではない。最大の割合を指定する
デフォルトは20
/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="zswap.enabled=1 zswap.max_pool_percent=20"
圧縮方式
以下の方式から選べる
デフォルトはlzo
- lzo
- lz4
- deflate
lz4は別途カーネルモジュールを入れる必要がある
カーネル再コンパイル無しで入ってくれるかどうかまだ調べていない
カーネルモジュールが存在しない場合はlzoにフォールバックされる
/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="zswap.enabled=1 zswap.compressor=lzo"