$ free -h
total used free shared buff/cache available
Mem: 7.7Gi 4.5Gi 692Mi 305Mi 2.5Gi 2.6Gi
Swap: 2.0Gi 25Mi 2.0Gi
MemAvailable
내 시스템이 왜 이렇게 높아졌나요?
내가 읽을 때커널 코드, 내 생각엔 MemAvailable
비슷한 공식으로 대략적으로 계산할 수 있을 것 같아요 MemFree + (Buffers + Cached - Shmem)/2 + SReclaimable/2
. 따라서 MemAvailable은 1.8G와 비슷할 것 같습니다.
나는 100M만 가지고 있기 때문에 0.8G 차이가 Reclaimable Slabs 부분 때문이라고 생각하지 않습니다.
$ grep SReclaimable /proc/meminfo
SReclaimable: 106492 kB
$ uname -r
4.20.3-200.fc29.x86_64
$ cat /proc/meminfo
MemTotal: 8042592 kB
MemFree: 708864 kB
MemAvailable: 2740432 kB
Buffers: 225472 kB
Cached: 2289436 kB
SwapCached: 1768 kB
Active: 4367844 kB
Inactive: 2538636 kB
Active(anon): 3443868 kB
Inactive(anon): 1265012 kB
Active(file): 923976 kB
Inactive(file): 1273624 kB
Unevictable: 11528 kB
Mlocked: 11528 kB
SwapTotal: 2097148 kB
SwapFree: 2071412 kB
Dirty: 80 kB
Writeback: 44 kB
AnonPages: 4402684 kB
Mapped: 554452 kB
Shmem: 313044 kB
KReclaimable: 106492 kB
Slab: 249164 kB
SReclaimable: 106492 kB
SUnreclaim: 142672 kB
KernelStack: 17888 kB
PageTables: 37020 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 6118444 kB
Committed_AS: 12077056 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
Percpu: 2688 kB
HardwareCorrupted: 0 kB
AnonHugePages: 2160640 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 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: 297524 kB
DirectMap2M: 7968768 kB
DirectMap1G: 1048576 kB
답변1
어떻게 MemAvailable
계산 되나요?. 여기서 최저 워터마크를 빼야 하지만 사용 가능한 메모리 는 /proc/zoneinfo
놀랄 일이 아니며 MemFree
, 이는 3012956 KiB를 제공합니다.Active(file)
Inactive(file)
SReclaimable