linux 内存中Buffer和Cache的区别

linux 内存中Buffer和Cache的区别

通过man proc(或者 man procfs),搜索关键词meminfo:
在这里插入图片描述

  • Buffers %lu
    Relatively temporary storage for raw disk blocks that shouldn’t get tremendously large (20MB or so).

  • Cached %lu
    In-memory cache for files read from the disk (the page cache). Doesn’t include SwapCached.

具体怎么理解?

通过实验发现,
比较写数据到文件和写数据到磁盘

  • 写数据到文件:Buffer 基本保持不变,Cache 在不停地增长
  • 写数据到磁盘:Buffer 和 Cache都在增长,但明显Buffer 的增长快得多。这说明,写磁盘用到了大量的 Buffer

比较从文件中读取数据和从磁盘中读数据:

  • 从文件中读取数据:Buffer保持不变,Cache增长
  • 从磁盘中读取数据:Buffer 和 Cache 都在增长,但明显Buffer的增长快很多。这说明读磁盘时,数据缓存到了 Buffer 中。

实验数据参考:https://time.geekbang.org/column/article/74633

简单理解:Buffer 是对磁盘数据的缓存,而 Cache 是文件数据的缓存。

同学@Geek_5258f8 的解答:

理论上,一个文件读首先到Block Buffer, 然后到Page Cache。有了文件系统才有了Page Cache。在老的Linux上这两个Cache是分开的。那这样对于文件数据,会被Cache两次。这种方案虽然简单,

但低效。后期Linux把这两个Cache统一了。对于文件,Page Cache指向Block Buffer,对于非文件则是Block Buffer。这样就如文件实验的结果,文件操作,只影响Page Cache,而Raw操作,则只影响Buffer. 比如一此VM虚拟机,则会越过File System,只接操作 Disk, 常说的Direct IO.

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值