free命令的正确读取方式

关于free命令的各参数网上有好多的资料,我们来看看正确的解读方式是怎样的。
现在linux上面的free命令有两个版本,比如centos 6 用的是旧版本,centos 7 用的是新版本,如下
centos 6

[root@centos-6-2 ~]# uname -r
2.6.32-573.22.1.el6.x86_64

[root@centos-6-2 ~]# free
             total       used       free     shared    buffers     cached
Mem:       1906904     168440    1738464       3280       6916      47040
-/+ buffers/cache:     114484    1792420 
Swap:      1048572          0    1048572 

centos 7

root:~/ # uname -r
3.10.0-514.26.2.el7.x86_64

root:~/ # free
              total        used        free      shared  buff/cache   available
Mem:         999948      168956      451588       31848      379404      618400
Swap:       4063228           0     4063228

旧版free

旧版的free命令(centos6)有三行内容:Mem,-/+ buffers/cache,Swap,代表的内容如下:

名称 代表的内容
Mem 物理内存
-/+ buffers/cache 表示物理内存已用多少,可用多少
Swap 交换空间

列的内容是total,used,free,shared,buffers,cached,代表的内容如下:

名称 代表的内容
total 总量
used 已使用的
free 空闲的
shared 共享的,在linux里面有很多共享内存,比如一个libc库,很多程序调用,但实际只存一份
buffers 缓存,可回收
cached 缓存,可回收

这里有个地方要注意,关于buffers和cached的区别。cached和buffers都可以读写,它们唯一的区别就是一个以裸设备或分区为背景,一个以文件系统里的文件为背景。比如你cat /dev/sda1 > /dev/null,那/dev/sda1的内容进入buffers,如果你cat /opt/test.py > /dev/null,则/opt/test.py的内容进入cached。

看下Mem和Swap的total的计算公式
total = used + free

比如本例中,Mem的used是168440free1738464,加起来刚好是total的1906904

接下来看下中间-/+ buffers/cache的used和free是怎么计算的。
-/+ buffers/cache的used = 第一行的used - 第一行的buffers - 第一行的cached

比如本例中,-/+ buffers/cache的used是114484,这个值是由第一行的used 168440,减去第一行的buffers 6916 ,再减去第一行的cached 47040

-/+ buffers/cache的free = 第一行的free + 第一行的buffers + 第一行的cached

比如本例中,-/+ buffers/cache的free1792420,这个值是由第一行的free 1738464,加上第一行的buffers 6916 ,再加上第一行的cached 47040

估算空闲的物理内存时可参考-/+ buffers/cache的free的值,但实际的可用内存要小于这个值,因为不能所有的buffers和cached都释放。

新版free

新版free相比旧版,删除了-/+ buffers/cache这行内容,把buffers和cached放一起了,增加了available值。
通过刚才的分析可以看下这样更改更合理,因为buffe和cache本质是一样的,没必要区分出来。
查看可用内存时,直接看available即可,不需要再计算。
available = free + (buff/cache通过一个算法后产生的值)
详细可以看内核的commit
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=34e431b0ae398fc54ea69ff85ec700722c9da773

参考:
https://blog.csdn.net/jus3ve/article/details/79191634

猜你喜欢

转载自blog.csdn.net/u012375924/article/details/79721211