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

MemTotal的/ proc / meminfo中的值没有意义。 作为一个人,眼睛看起来似乎大致对应于安装的RAM,但是用它来从一个自动化工具显示安装的RAM看起来是不精确的,并且是不一致的。

对于具有1G RAM的系统,我期望MemTotal行的值为1048576 – 1024 * 1024。 但是,我看到的是1029392.在另外一个4G盒子里,我看到3870172,它不是1024的倍数,甚至不接近1029392 * 4。 在一个8G的盒子上,我得到了8128204,它似乎与其他值没有关系,也不是1024的倍数。

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

有人可以填补我在这里失踪的东西吗?

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

参考可以在这里find。

这个页面也是我感兴趣的,这个解释了不一致的地方,这个位是:

meminfo中:

提供有关内存分配和使用的信息。 这因体系结构和编译选项而异。 …

Documentation/filesystems/proc.txt

 MemTotal: Total usable ram (ie 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中的所有内容都至less有粗略的文档logging,所以当你有类似的问题时,这是一个很好的第一站。