我知道htop中的总内存是根据/proc/meminfo计算的。我想我也可以在代码中交叉检查它并检查出来。然而与htop中的内存条相比。我发现 /proc/meminfo 中显示的内存值存在重大差异。
在我的 /proc/meminfo 中,内存消耗显示
MemTotal: 4144807288 kB
MemFree: 3513532764 kB
MemAvailable: 3936769368 kB
Buffers: 1119392 kB
因此,我认为由内存条表示的总已用内存应该是 MemTotal-MemFree(以 GB 为单位),据我所知,应该是 (4144807288-3513532764)/1024^2=602Gb。然而对我来说这个值显示几乎 180Gb。谁能解释一下 /proc/meminfo 中的值和 htop 中的值如何变得不同。
答案1
我猜测这些值不同的原因如下:
htop“180G”值不包括系统缓冲区和操作系统使用的其他内存,而 /proc/meminfo 将其报告为已分配
深入挖掘https://github.com/htop-dev/htop/blob/541c17c975bc8a4f1f243e568006b0e26ae52c47/linux/LinuxMachine.c#L130可以帮助理解 htop 值是如何计算的