Linux服务器内存使用Free命令结果解析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux服务器内存使用Free命令结果解析
By lixiangjing on 04 9月2012
这篇文章讲解很透彻,老李先前对于free命令的结果不是很明白,通过这篇文章我终于明白了Linux的内存机制,建议童鞋阅读。
查看Linux服务器下的内存使用情况,可以使用命令free -m。
#free -m
total used free shared buffers cached
Mem: 1002 769 232 0 62 421
-/+ buffers/cache: 286 715
Swap: 1153 0 1153
∙total:内存总数
∙used:已经使用的内存数
∙free:空闲的内存数
∙shared:多个进程共享的内存总额
∙-buffers/cache:(已用)的内存数,即used-buffers-cached
∙+buffers/cache:(可用)的内存数,即free+buffers+cached
∙可用内存的计算公式为:
∙可用内存=free+buffers+cached,即2551MB+268MB+917MB=3737MB
在第一部分Mem行中有如下参数:
total:内存总数,即1002MB
used:已经使用的内存数,即769MB
free:空闲的内存数,即232MB
shared:当前已经废弃不用,总是0
buffers Buffer:缓冲内存数,即62MB
cached Page:缓存内存数,即421MB
其中,内存总数与已使用内存数和空闲内存数的关系是:
total(1002MB)=used(769MB)+free(232MB)
在第二部分内容(-/+buffers/cache)中各参数如下所示。
(-buffers/cache):used内存数,即286MB(指的是第一部分Mem行中的used-buffers-cached)。
(+buffers/cache):free内存数,即715MB(指的是第一部分Mem行中的
free+buffers+cached)。
可见-buffers/cache反映的是被程序实实在在用掉的内存,而+buffers/cache反映的是可以挪用的内存总数。
第三部分是指交换(swap)分区,大家应该都明白。
有可能大家看了上面的解释还是不太明白。
比如:第一部分(Mem)与第二部分(-/+buffers/cache)的结果有关,used和free为什么这么奇怪?其实我们可以从两个方面来分析。
对操作系统来讲这两项是Mem的参数,buffers/cached都属于被使用,所以它认为free只有232MB;对应用程序来讲+buffers/cached等同于可用的内存,因为buffer/cached可提高程序执行的性能,当程序使用内存时,buffer/cached很快就会被使用。
所以从应用的角度来看,应以
(-/+buffers/cache)的free和used为主,即我们主要看与它相关的free和used 就可以了。
内幕:为了提高磁盘和内存的存取效率,对Linux做了很多精心的设计,除了对dentry进行缓存(用于VFS、加速文件路径名到inode的转换)外,还采取了两种主要Cache方式:Buffer Cache和Page Cache。
前者用
于针对磁盘块的读写,后者用于针对文件inode的读写。
这些Cache能有效地缩短I/O系统调用(比如read、write、getdents)的时间。
在Linux中,内存是拿来用的,不是拿来看的。
而在Windows中,无论你的真实物理内存有多少,它都会用硬盘交换文件来读,即使是内存还有一大部分。
这也就是Windows常常提示虚拟空间不足的原因。
可以想见,硬盘怎么会快过内存,所以我们在观察Linux的内存使用情况时,只要没发现用swap的交换空间,就不用担心自己的内存太少。
如果常常看到swap用了很多,那么你就要考虑加物理内存了。
这也是在Linux服务器上看内存是否够用的标准。