htop 和 /proc/meminfo 中的值之间存在差异

htop 和 /proc/meminfo 中的值之间存在差异

来自htops作者的回答 https://stackoverflow.com/questions/41224738/how-to-calculate-system-memory-usage-from-proc-meminfo-like-htop/41251290#41251290

我知道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 值是如何计算的

相关内容