zswap圧縮実行時のRAMとスワップ使用量を正確に監視します。

zswap圧縮実行時のRAMとスワップ使用量を正確に監視します。

私は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」として報告しますか?

基本的に直感的で報告可能なものをどのように取得できますか?

  1. 使用された合計物理RAM(圧縮されていません)
  2. 使用された物理的なRAMの総量(zswapで圧縮)
  3. 使用される総ディスクスワップ量
  4. 残り/使用可能な合計ディスクスワップ量

ここでも公開されました:https://www.reddit.com/r/kernel/comments/18iykle/accurately_monitoring_ram_and_swap_usage_while/

関連情報