• 售前

  • 售后

热门帖子
入门百科

linux page buffer cache深入明白

[复制链接]
醉于山水 显示全部楼层 发表于 2021-10-26 14:08:20 |阅读模式 打印 上一主题 下一主题
Page cache和buffer cache一直以来是两个比力容易肴杂的概念,在网上也有许多人在争辩和料想这两个cache到底有什么区别,讨论到末了也一直没有一个同一和准确的结论,在我工作的这一段时间,page cache和buffer cache的概念曾经困扰过我,但是细致分析一下,这两个概念现实上非常的清晰。如果可以大概了解到这两个cache的本质,那么我们在分析io问题的时间大概会更加得心应手。
Page cache现实上是针对文件系统的,是文件的缓存,在文件层面上的数据会缓存到page cache。文件的逻辑层需要映射到现实的物理磁盘,这种映射关系由文件系统来完成。当page cache的数据需要革新时,page cache中的数据交给buffer cache,但是这种处置处罚在2.6版本的内核之后就变的很简朴了,没有真正意义上的cache操纵。

Buffer cache是针对磁盘块的缓存,也就是在没有文件系统的情况下,直接对磁盘举行操纵的数据会缓存到buffer cache中,比方,文件系统的元数据都会缓存到buffer cache中。
简朴说来,page cache用来缓存文件数据,buffer cache用来缓存磁盘数据。在有文件系统的情况下,对文件操纵,那么数据会缓存到page cache,如果直接采取dd等工具对磁盘举行读写,那么数据会缓存到buffer cache。

补充一点,在文件系统层每个装备都会分配一个def_blk_ops的文件操纵方法,这是装备的操纵方法,在每个装备的inode下面会存在一个radix tree,这个radix tree下面将会放置缓存数据的page页。这个page的数量将会在top步调的buffer一栏中表现。如果装备做了文件系统,那么会天生一个inode,这个inode会分配ext3_ops之类的操纵方法,这些方法是文件系统的方法,在这个inode下面同样存在一个radix tree,这里会缓存文件的page页,缓存页的数量在top步调的cache一栏举行统计。从上面的分析可以看出,2.6内核中的buffer cache和page cache在处置处罚上是保持划一的,但是存在概念上的差别,page cache针对文件的cache,buffer是针对磁盘块数据的cache,仅此而已。

buffer 与cache 的区别
A buffer is something that has yet to be “written” to disk. A cache is something that has been “read” from the disk and stored for later use.
更详细的表明参考:Difference Between Buffer and Cache
对于共享内存(Shared memory),重要用于在UNIX 情况下不同进程之间共享数据,是进程间通讯的一种方法,一般的应用步调不会申请使用共享内存,笔者也没有去验证共享内存对上面等式的影响。如果你有爱好,请参考:What is Shared Memory?

cache 和 buffer的区别:
Cache:高速缓存,是位于CPU与主内存间的一种容量较小但速度很高的存储器。由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等候肯定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,如许就减少了CPU的等候时间,进步了系统的服从。Cache又分为一级Cache(L1 Cache)和二级Cache(L2 Cache),L1 Cache集成在CPU内部,L2 Cache早期一般是焊在主板上,现在也都集成在CPU内部,常见的容量有256KB或512KB L2 Cache.
Buffer:缓冲区,一个用于存储速度不同步的装备或优先级不同的装备之间传输数据的地区。通过缓冲区,可以使进程之间的相互等候变少,从而使从速度慢的装备读入数据时,速度快的装备的操纵进程不发生间断。

Free中的buffer和cache:(它们都是占用内存):
buffer :作为buffer cache的内存,是块装备的读写缓冲区
cache:作为page cache的内存, 文件系统的cache
如果 cache 的值很大,阐明cache住的文件数许多。如果频仍访问到的文件都能被cache住,那么磁盘的读IO 必会非常小。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作