Linux Free命令各数字含义及Buffer和Cache的区别

Free 命令的各数字含义

命令演示

[root@vm1 ~]# free
             total       used       free     shared    buffers     cached
Mem:        502276     119160     383116          0      11040      46588
-/+ buffers/cache:      61532     440744
Swap:       835576          0     835576

加上参数m,显示的单位为MB

[root@vm1 ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           490        116        374          0         10         45
-/+ buffers/cache:         60        430
Swap:          815          0        815

按行详解

  • total :物理内存的实际总量
  • used :总计分配给缓存(buffer+cache)的使用的数量,但是其中部分可能并未实际使用(注意:这里不是实际使用了的内存)
  • free :未被分配的内存(真正的空闲,未被任何程序占用)
  • shared:多个进程共享的内存总额
  • buffers:磁盘缓存(buffer cache)的大小(可提高I/O调用的性能),系统分配的,但是未被使用的buffer剩余量。
  • cached:磁盘缓存(page cache)的大小(可提高I/O调用的性能),系统分配的,但是未被使用的cache剩余量。
  • -buffers/cache:表示已被我们程序使用的内存数,计算方法:used-buffers-cached(注意:这里才是内存的实际使用量)
  • +buffers/cache:表示还可被我们使用的内存数,计算方法:free+buffers+cached
  • swap:交换分区总量,使用量,剩余量

内存相关参数计算-数字取自上述结果

操作系统总的内存数量:total=used+free=116+374=490MB
操作系统目前内存实际使用量:used-buffers-cached=116-10-45=61MB
操作系统目前可用内存总量=free+buffers+cached=374+10+45=429MB

cache和buffer的区别

1.cache:高速缓存,是位于CPU与主内存之间的一种容量较小但是速度较高的存储器,由于CPU的速度远高于主内存,CPU直接从内存中存取数据需要等待一定的时间周期。cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。
cache又分为一级cache(L1 cache)和二级cache(L2 cache),L1集成在CPU内部,L2早期一般时焊在主板上的,现在也都即成在CPU内部,常见L2 cache的容量有256KB或512KB。
2.buffer:缓冲区,一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。通过缓冲区,可以使进程之间的相互等待变少。速度快的设备可以利用buffer不间断的进行写操作,速度慢的设备可以直接从buffer中读取数据,减少速度快的设备的等待时间,提高效率。

那么,Free中的cache和buffer用途就显而易见啦!
cache:文件系统的缓冲(page cache)
buuffer:块设备的读写缓冲区(buffer cache)

相关推荐