free结果输出中的-/+ buffers/cache是什么意思

638 阅读1分钟

假设:执行free命令显示如下:

[root@Linux /tmp]# free  
             total       used       free     shared    buffers     cached  
Mem:       4149156    4130412      18744          0      13220    2720160  
-/+ buffers/cache:    1397032    2752124  
Swap:      6289408        144    6289264
  • 第1行
    total 内存总数: 4149156
    used 已经使用的内存数: 4130412
    free 空闲的内存数: 18744
    shared 当前已经废弃不用,总是0
    buffers Buffer Cache内存数: 13220
    cached Page Cache内存数: 2720160

    关系:total = used + free

  • 第2行:
    -/+ buffers/cache的意思相当于:
    -buffers/cache 的内存数:1397032 (等于第1行的 used - buffers - cached)
    +buffers/cache 的内存数: 2752124 (等于第1行的 free + buffers + cached)

    可见-buffers/cache反映的是被程序实实在在吃掉的内存,
    而+buffers/cache反映的是可以挪用的内存总数。

  • 第三行单独针对交换分区, 就不用再说了.

为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。