$ 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