在网上有一个朋友提出free命令显示的内存与实际不符,查看确实如此:
tonykorn97:/nsr/logs # free
total used free shared buffers cached
Mem: 6227240 6190480 36760 0 26232 5313076
-/+ buffers/cache: 851172 5376068
Swap: 1052248 37632 1014616
tonykorn97:/nsr/logs #
6GB的内存显示为:6227240
理论上应该是这样的:6*1024*1024=6291456
经过大家的指点,发现答案应该有一下两个方面:
一:这是因为操作系统没有计算给PCI资源的内存作为用户可用内存。PCI资源可能包括板载网卡设备,板载声卡设备,PCI/AGP显卡等。一般携带多个设备的机器将为这些设备的运作保留一部分内存。
注意物理内存和可用内存的区别,并且对于不同的机器即是配置了相同的物理内存也可能出现可用内存容量不一样的情况。
来自:
http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=TXIN-655B9X
二:用free命令显示的Total列不显示核心使用的物理内存(通常大约1MB)。只是显示的系统可以使用的内存。硬件驱动,内核等应该都包括在核心使用的内存中。
来自:
http://fanqiang.chinaunix.net/system/linux/2007-02-07/5045.shtml
引用部分:
1.在命令行使用“Free”命令监控内存使用情况 #free
total used free shared buffers cached
Mem: 256024 192284 63740 0 10676 101004
-/+ buffers/cache: 80604 75420
Swap: 522072 0 522072
上面代码给出了一个256MB的RAM和512MB交换空间的系统情况。第三行输出 (Mem:)显示物理内存。Total列不显示核心使用的物理内存(通常大约1MB)。Used列显示被使用的内存总额(第二行不计缓冲)。Free列显示全部没有使用的内存。Shared列显示多个进程共享的内存总额。Buffers列显示磁盘缓存的当前大小。第五行(Swap:)对换空间,显示的信息类似上面。如果这行为全0,那么就没有使用对换空间。在缺省的状态下,free命令以千字节(也就是1024字节为单位)来显示内存使用情况。使用-h参数,以字节为单位显内存使用情况;或者使用-m参数,以兆字节为单位显示内存使用情况。还可以通过-s参数,使用命令来不间断地监视内存使用情况: