首页 > 代码库 > Linux常用工具介绍——free

Linux常用工具介绍——free

在Linux系统中,我们查看、监控系统内存使用情况,一般最常用的命令就是free,

关于free的实现,其实是调用linux下的/proc/meminfo文件。
[root@web02 /]# free -V
free from procps-ng 3.3.9

[root@web02 /]# free
             total       used       free     shared    buffers     cached
Mem:       1010884     935560      75324       1560          0      22996
-/+ buffers/cache:     912564      98320
Swap:      2129916     565404    1564512

指 标

指 标 意 义

total

总的物理内存大小。total=used + free

used

已经使用的物理内存。一般情况这个值比较大。used=buffers + cached (maybe add shared also)+ -buffers/cache(used)

free

完全未使用的物理内存

shared

应用程序共享的物理内存

buffers

缓存,主要用于块设备缓存,例如用户目录、inode值等(ls大目录可以看到这个值增加)

cached

缓存,主要用于缓存文件。

 

指 标

指 标 意 义

前个值表示-buffers/cache

应用程序使用的内存大小,used减去缓存值:-buffers/cache=used-buffers-cached

后个值表示+buffers/cache

所有可供应用程序使用的内存大小,free加上缓存值:+buffers/cache=free+buffers+cached

 

下面是对buffers和cached具体价绍下。

buffers:是指用来给块设备做的缓冲大小,它只记录文件系统的metadata以及 tracking in-flight pages.

cached:是用来给文件做缓冲。 

那就是说:buffers是用来存储目录里面有什么内容,权限等等。而cached直接用来缓存我们打开的文件

也就是说buffers是用于存放要输出到disk的块设备数据的,而cache是存放从disk上读出的数据。这二者是为了提高IO性能的,并由OS管理。

total = used + free 

1010884 =  936044 + 74840

-/+buffers/cache(used) 表示第三行的used列的值。-/+buffers/cache(free) 表示第三行free列的值

-/+buffers/cache(used) = used -  buffers - cached

911656 = 936044 - 0 - 24388

-/+buffers/cache(free) = free + buffers + cached

99228 = 74840 + 0 + 24388

 

二、现在我们来看新版,

[root@web04 /]# free -V
free from procps-ng 3.3.10

[root@web04 /]# free
              total        used        free      shared  buff/cache   available
Mem:        1009304      598164      252724        6796      158416      257044
Swap:       2097148           0     2097148

2016年之后发布的内核, "-/+ buffers/cache" 例被取代了。

内存分配改为total = used + free + cache

可用内存直接看available了。

 

参考:http://www.linuxatemyram.com/

本文出自 “59090939” 博客,请务必保留此出处http://59090939.blog.51cto.com/6338052/1947093

Linux常用工具介绍——free