私は6.2.0-39-generic(Ubuntu 22.04、HWE)でzswapを実行しています。
私が理解しているのは、zswapがスワップ用にマークされたページを傍受して(可能であれば)それを圧縮し、ユーザー固有のポイントまで物理RAMの圧縮部分に保存することです。私の場合、zswapはRAMの最大25%を使用するように設定されています。
ただし、システムにストレスを与える場合(256GB RAMと256GB / swapfileを使用):
stress --vm-bytes 250G --vm-keep -m 1
アクティビティモニタやfree -hなどを見ると、まずRAMがいっぱいになり、その後は「スワップ」がいっぱいになります。これは、250GBを保存するのに必要なものよりもはるかに多いです。
free -h
レポート:
total used free shared buff/cache available
Mem: 251Gi 249Gi 1.9Gi 35Mi 523Mi 598Mi
Swap: 255Gi 128Gi 127Gi
しかし、sudo grep -R。 /sys/kernel/debug/zswap/ レポート:
sudo grep -R . /sys/kernel/debug/zswap/
/sys/kernel/debug/zswap/same_filled_pages:10982
/sys/kernel/debug/zswap/stored_pages:33556168
/sys/kernel/debug/zswap/pool_total_size:45804953600
/sys/kernel/debug/zswap/duplicate_entry:0
/sys/kernel/debug/zswap/written_back_pages:0
/sys/kernel/debug/zswap/reject_compress_poor:0
/sys/kernel/debug/zswap/reject_kmemcache_fail:0
/sys/kernel/debug/zswap/reject_alloc_fail:0
/sys/kernel/debug/zswap/reject_reclaim_fail:0
/sys/kernel/debug/zswap/pool_limit_hit:0
33556168*4096 = ~128GB - free -h によって報告されたスワップ使用量と一致します。
もしそうなら、zswapで圧縮され、まだRAMにある場合でも、システムは圧縮されていないファイルサイズを「swap」として報告しますか?
基本的に直感的で報告可能なものをどのように取得できますか?
- 使用された合計物理RAM(圧縮されていません)
- 使用された物理的なRAMの総量(zswapで圧縮)
- 使用される総ディスクスワップ量
- 残り/使用可能な合計ディスクスワップ量
ここでも公開されました:https://www.reddit.com/r/kernel/comments/18iykle/accurately_monitoring_ram_and_swap_usage_while/