![/proc/meminfo 中的总可用物理内存未加起来](https://linux22.com/image/98435/%2Fproc%2Fmeminfo%20%E4%B8%AD%E7%9A%84%E6%80%BB%E5%8F%AF%E7%94%A8%E7%89%A9%E7%90%86%E5%86%85%E5%AD%98%E6%9C%AA%E5%8A%A0%E8%B5%B7%E6%9D%A5.png)
我试图通过/proc/meminfo
(下面提供的输出)来解释 Linux 机器上的可用物理内存。考虑到当前的可用内存、用户空间物理使用情况、内核数据结构(包括 vmalloc 编辑、大页面等),我还差 5 GB。这就是 meminfo 目前给我的:
# cat /proc/meminfo
MemTotal: 362816744 kB
MemFree: 2230348 kB
Buffers: 433636 kB
Cached: 814628 kB
SwapCached: 20688 kB
Active: 723172 kB
Inactive: 539364 kB
Active(anon): 369736 kB
Inactive(anon): 14936 kB
Active(file): 353436 kB
Inactive(file): 524428 kB
Unevictable: 2080 kB
Noswap 292435456 kB
Mlocked: 2080 kB
SwapTotal: 4190964 kB
SwapFree: 4072560 kB
Dirty: 640 kB
Writeback: 0 kB
AnonPages: 292440380 kB
Mapped: 144904 kB
Shmem: 129772 kB
Slab: 568552 kB
SReclaimable: 483816 kB
SUnreclaim: 84736 kB
KernelStack: 13776 kB
PageTables: 785532 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 156197224 kB
Committed_AS: 402420112 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 17872740 kB
VmallocChunk: 34142133244 kB
HardwareCorrupted: 0 kB
HugePages_Total: 28713
HugePages_Free: 14352
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 6144 kB
DirectMap2M: 2017280 kB
DirectMap1G: 367001600 kB
我如何解释当前内存状态:MemFree + Buffers + Cached + SwapCached + AnonPages + Mapped + Slab + KernelStack + PageTables + vmalloced 内存 + 大页面
由于除了物理内存之外,VmallocUsed 还会抛出重新映射(使用 ioremap)的外部物理设备的内存使用情况,为了获取实际的物理内存组件,我执行了以下操作:
echo "( $(cat /proc/vmallocinfo | grep vmalloc | awk '{print $2}' | paste -s -d "+") )/ 1024" | bc
(按照建议这里)。
因此 vmalloc 物理内存消耗为 826376 KB。
大页 = 28713 * 2048 Kb = 58804224 KB
有了这一切,我就得到了大约 5G 的未解释内存(与 MemTotal 相比)。
如果有什么我在这里没有考虑到并且可以解释差距的地方,请告诉我。