linux free 命令解释

 

linux系统内存实际使用率

 

Mem:表示物理内存统计

-/+ buffers/cached:表示物理内存的缓存统计

Swap:表示硬盘上交换分区的使用情况,这里我们不去关心。

系统的总物理内存:255268Kb(256M),但系统当前真正可用的内存b并不是第一行free 标记的 16936Kb,它仅代表未被分配的内存。

 

第1行 Mem: total:表示物理内存总量。

used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。

free:未被分配的内存。

shared:共享内存,一般系统不会用到,这里也不讨论。

buffers:系统分配但未被使用的buffers 数量。

cached:系统分配但未被使用的cache 数量。

 

第2行 -/+ buffers/cached:

used:第一行中的used - buffers-cached, 也是实际使用的内存总量。

free:未被使用的buffers 与cache 和未被分配的内存之和,这就是系统当前实际可用内存。

free2 = buffers1 + cached1 + free1 //free2为第二行、buffers1等为第一行

所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached.

 

buffer 与cache 的区别

A buffer is something that has yet to be “written” to disk. A cache is something that has been “read” from the disk and stored for later use 第3行: 第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。

更详细的解释参考:Difference Between Buffer and Cache

 

通过/proc/meminfo 获取内存信息

需要使用的指标有:MemTotal ,MemFree,Buffers,Cached

MemTotal:总内存大小

MemFree: 空闲内存大小

Buffers和Cached:磁盘缓存的大小

 

 

直观的看,此时free的内存会非常小,但并不代表可用的内存小,当一个程序需要申请较大的内存时,如果free的内存不够,内核会把部分cached的内存回收,回收的内存再分配给应用程序。所以对于linux系统,可用于分配的内存不只是free的内存,还包括cached的内存(其实还包括buffers)。

 

下面是我们一台文件服务器,可以看到92G的内存基本全被cache起来了,因为大量访问文件。



 

参考:

手工释放linux内存——/proc/sys/vm/drop_caches

http://www.linuxfly.org/post/320/

理解Linux的性能

http://www.linuxfly.org/post/114/

Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决

http://www.cnblogs.com/panfeng412/p/drop-caches-under-linux-system.html

Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决(续)

http://www.cnblogs.com/panfeng412/p/3478442.html

 

猜你喜欢

转载自san-yun.iteye.com/blog/2034801