为什么 /proc/meminfo 中的值似乎没有准确映射到系统 RAM?

为什么 /proc/meminfo 中的值似乎没有准确映射到系统 RAM?

/proc/meminfo 中 MemTotal 的值没有意义。从人的角度来看,它似乎大致对应于已安装的 RAM,但对于使用它从自动化实用程序显示已安装的 RAM,它似乎不准确且不一致。

对于具有 1G RAM 的系统,我预计 MemTotal 行的值为 1048576 - 1024*1024。但我看到的却是 1029392。在另一个 4G 盒子上,我看到的是 3870172,它不是 1024 的倍数,甚至与 1029392*4 相差甚远。在 8G 盒子上,我得到的是 8128204,这似乎与其他值没有任何关联,也不是 1024 的倍数。

我正尝试使用此信息在状态网页上报告 RAM。我的解决方法是将其“四舍五入”到最接近的 1G 倍数,但我想了解为什么这些值看起来不一致且不符合我的预期。

有人可以告诉我这里缺少什么吗?

编辑:扩展下面接受的答案......

参考资料可以找到这里

该页面上的以下部分也引起了我的关注,它解释了这种不一致之处:

内存信息:

提供有关内存分配和利用率的信息。这因架构和编译选项而异。...

答案1

Documentation/filesystems/proc.txt

MemTotal: Total usable ram (i.e. physical ram minus a few reserved
          bits and the kernel binary code)

就这样。

附录:

dmesg|grep Memory:会给你更多:

$ dmesg|grep Memory:
Memory: 3934184k/5177344k available (4434k kernel code, 1091560k absent, 151600k reserved, 7433k data, 920k init)

附录二:

还值得补充的是,/proc 中的几乎所有内容在该文件中均至少有粗略的文档,因此,当您有类似的问题时,它是一个很好的第一站。

相关内容