Zram 및 Swap 번호 설명

Zram 및 Swap 번호 설명

좋습니다. 두 가지 질문이 있습니다. 내 디스크 스왑이 사용되는 이유는 무엇입니까? 내 스왑 영역의 압축이 정말 그렇게 좋은가요? 그럴 것 같지는 않지만 애플리케이션(예: JVM)이 메모리를 예약했지만 실제로는 사용하지 않을 수도 있습니다.

Linux manjaro 5.10.59-1-MANJARO #1 SMP PREEMPT Sun Aug 15 13:11:32 UTC 2021 x86_64 GNU/Linux

내 예비 측정은 다음과 같습니다.

❯ swapon
NAME           TYPE       SIZE USED PRIO
/dev/nvme0n1p6 partition 32.2G 2.4G   -2
/dev/zram0     partition    4G 3.5G  100
❯ zramctl
NAME       ALGORITHM DISKSIZE  DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 zstd            4G 42.4M 42.4M 42.4M       8 [SWAP]
MemTotal:       16138912 kB
MemFree:          506156 kB
MemAvailable:    1338368 kB
Buffers:              32 kB
Cached:          3733980 kB
SwapCached:      2874732 kB
Active:          6357760 kB
Inactive:        7098592 kB
Active(anon):    5746908 kB
Inactive(anon):  6665988 kB
Active(file):     610852 kB
Inactive(file):   432604 kB
Unevictable:      367084 kB
Mlocked:             224 kB
SwapTotal:      37986296 kB
SwapFree:       31745392 kB
Dirty:              2172 kB
Writeback:             0 kB
AnonPages:       7635524 kB
Mapped:           628752 kB
Shmem:           2692308 kB
KReclaimable:     104768 kB
Slab:             330300 kB
SReclaimable:     104768 kB
SUnreclaim:       225532 kB
KernelStack:       25600 kB
PageTables:        81764 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    46055752 kB
Committed_AS:   24622488 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      110656 kB
VmallocChunk:          0 kB
Percpu:             7552 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
FileHugePages:         0 kB
FilePmdMapped:         0 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:      813792 kB
DirectMap2M:    15714304 kB
DirectMap1G:           0 kB
❯ free -h
               total        used        free      shared  buff/cache   available
Mem:            15Gi        11Gi       274Mi       2.5Gi       3.9Gi       1.4Gi
Swap:           36Gi       6.0Gi        30Gi

❯ sudo swapoff /dev/nvme0n1p6

뒤쪽에swapoff

❯ zramctl
NAME       ALGORITHM DISKSIZE  DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 zstd            4G 42.9M 42.9M 42.9M       8 [SWAP]
❯ swapon
NAME       TYPE      SIZE USED PRIO
/dev/zram0 partition   4G 3.5G  100
❯ cat /proc/meminfo
MemTotal:       16138912 kB
MemFree:          450240 kB
MemAvailable:    1018456 kB
Buffers:              28 kB
Cached:          3643988 kB
SwapCached:      1249912 kB
Active:          6562884 kB
Inactive:        7350540 kB
Active(anon):    5994940 kB
Inactive(anon):  7018496 kB
Active(file):     567944 kB
Inactive(file):   332044 kB
Unevictable:      168744 kB
Mlocked:             224 kB
SwapTotal:       4194300 kB
SwapFree:         115892 kB
Dirty:               696 kB
Writeback:             0 kB
AnonPages:       9229592 kB
Mapped:           477084 kB
Shmem:           2744240 kB
KReclaimable:     105376 kB
Slab:             326216 kB
SReclaimable:     105376 kB
SUnreclaim:       220840 kB
KernelStack:       26096 kB
PageTables:        83560 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    12263756 kB
Committed_AS:   25151912 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      115640 kB
VmallocChunk:          0 kB
Percpu:             7552 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
FileHugePages:         0 kB
FilePmdMapped:         0 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:      821984 kB
DirectMap2M:    15706112 kB
DirectMap1G:           0 kB
❯ cat /proc/swaps
Filename                Type        Size        Used        Priority
/dev/zram0                              partition   4194300     4086744     100
❯ free -h
               total        used        free      shared  buff/cache   available
Mem:            15Gi        10Gi       1.0Gi       2.6Gi       4.1Gi       2.1Gi
Swap:          4.0Gi       3.9Gi        97Mi

그렇다면 왜 zram은 42M에 불과합니까? 이게 정말 3.5G에서 압축된 건가요? 이것이 사실이라면 내 스왑 파티션이 사용되는 이유는 무엇입니까? 그들 모두가 거기 있어야 하지 않나요 zram?

답변1

커널이 zswap을 사용 중일 수 있습니다. ~에서www.kernel.org:

Zswap은 경량 스왑 페이지 압축 캐시입니다. 스왑 아웃되는 페이지를 가져와 이를 동적으로 할당된 RAM 기반 메모리 풀로 압축하려고 시도합니다.

약 3.5GB의 데이터가 "스왑"되었지만 압축된 zswap 풀에 있으며 아직 백업 스왑 장치(zram)로 제거되지 않았으므로 zramctl.

zswap을 비활성화하고 zram 스왑 장치를 제거하고 다시 추가하여 풀을 비우도록 하면 이를 확인할 수 있습니다.

# echo 0 > /sys/module/zswap/parameters/enabled
# swapoff /dev/zram0
# swapon /dev/zram0

관련 정보