/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 中的几乎所有内容在该文件中均至少有粗略的文档,因此,当您有类似的问题时,它是一个很好的第一站。