运行 zswap 压缩时准确监控 RAM 和交换使用情况

运行 zswap 压缩时准确监控 RAM 和交换使用情况

我在 6.2.0-39-generic(Ubuntu 22.04,HWE)上运行 zswap。

我的理解是,zswap 拦截标记为交换的页面,压缩它们(如果可能)并将它们存储在物理 RAM 的压缩部分中,直到某个特定于用户的点。就我而言,zswap 设置为最多使用 25% 的 RAM。

但是,如果我对我的系统(具有 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/

相关内容