ZSWAP と ZRAM のメモ.ZSWAP は SWAP のための compressed cache で,ZRAM は Compressed RAM block device.ともに圧縮を用いてメモリ/SWAPの効率化を図るもの,だと思う.
CONFIG_ZRAM: Compressed RAM block device supportCONFIG_ZSWAP: Compressed cache for swap pages (EXPERIMENTAL)
ZRAM
CONFIG_ZRAM で設定する.モジュール化可.CONFIG_ZSMALLOCに依存し,CONFIG_ZSMALLOC_STAT=y としておくと debugfs 経由で stat が確認できる./sys/kernel/debug/zsmalloc/zram0/classes 等.
Debian の場合は特に package は提供されておらず,https://wiki.debian.org/ZRam のように /etc/init.d/zram を用意して利用する.
SWAP する際にこの圧縮された block device が利用されるイメージ.とはいえこの compressed block device 自体も RAM であるという,不思議な状況になる.
ZSWAP
SWAP する際にそれを圧縮して RAM 上に CACHE する,というアプローチ.こちらは別途 SWAP 用の HDD/SDD などの存在が想定される.
CONFIG_ZSWAP で設定,モジュール化不可.CONFIG_ZPOOL に依存するとともに,Default の mm/zswap.c で #define ZSWAP_ZPOOL_DEFAULT "zbud" となっているので,CONFIG_ZBUD=y (Low (Up to 2x) density storage for compressed pages)も組み込む必要があるっぽい.
# echo 1 > /sys/module/zswap/parameters/enabled で enable する.max_pool_percent, zpool, compressor を設定可能./sys/kernel/debug/zswap/ 以下に stat がある.sudo grep -R . /sys/kernel/debug/zswap とかで参照.
参考にしたページ: https://web.archive.org/web/20170311013437/http://gnu.hatenablog.com/entry/2016/01/12/072154