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/

관련 정보