# 菜鸟求教：为什么free命令显示的内存，总是要比硬件实际安装的内存小一些呢？

## al_alexander

每次用free命令（或者通过/proc/meminfo）查看内存总量的时候，得到的数字总是比主板上接的内存总量要少一些。虽然很早就注意到这个问题，但一直没有深究。直到今天突然被别人问题才发现完全给不出解释。

比如说我的一个台式机，安装了4G的内存条，系统是3.2.12-gentoo(64位)，查看到的内存是：

  MemTotal:        3934312 kB

比4G的理论值少了约254M，占总内存的6.2%。

另一台服务器上是rhel-2.6.9_5-9-0-0（64位），安装了48G的内存，查看到的内存是：

  MemTotal:     49429304 kB

比理论值少了约881M，占总内存的1.8%。

还有一台虚拟机，系统是3.0.6-gentoo（32位），分配了1G的内存，系统是(32位)，查看到的内存是：

  MemTotal:        1031720 kB

比理论值少了约16.5M，占总内存的1.6%。

接触到的其他一些linux机器（包括笔记本、台式机、服务器）都是这样，内存总量越大，“丢失”的内存量越大，但同时相对于硬件内存的总量的百分比就各不相同。

如果说是BIOS占用了部分低端地址，那应该远小于这些数量；内核本身也就是几M级别的尺寸，不应该占这么多，而且不应该随着总内存大小不同而剧烈变化。

会不会是内核需要一定比例的内存来做页面管理呢？有没有什么方法能在系统中看见内存的硬件总大小呢？

在网上搜了半天，也没找到答案，还请高手赐教！

----------

