来自htops作者的回答 如何从 /proc/meminfo 计算系统内存使用情况(如 htop)
我知道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 中的值如何变得不同。
首先让我说天啊,这真是一个疯狂的内存量。
无论如何,这里有一些不明白的地方:
“内存空闲”是完全未使用的内存。
“可用内存”是“空闲内存”加上如果内核删除其文件系统缓存,可以立即释放的内存。一般来说,可用内存是你应该查看/关心的统计数据。
在我们的计算中使用“可用内存”统计数据,让我们计算一下:
numfmt --to=iec $(((4144807288-3936769368)*1024))
> 199G
更接近 180G
htop
显示为“已使用”RAM 的数量。
也尝试运行
free -h
并查看“可用”列。