Buffer和Cache的区别

1. Buffer和Cache的区别

  • 缓存cached:是把读取过的数据保存起来,重新读取时若命中(找到需要的数据),就不去读硬盘了,若没有命中就读硬盘,其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除
  • 缓冲buffer:是根据磁盘的读写设计的,把分散的写操作集中进行,此少磁盘碎片和硬盘的反复寻道,从而提高性能。Linux有一个守护进程定期清空缓冲内容(即写入磁盘),也可以通过sync命令手动清空缓冲。

    举个例子:从网上下载电影,不能下载一点就写一下硬盘,而是几类一定量的数据以后一整块一起写,不然硬盘要被玩坏

简单的说:buffer是即将要被写入磁盘的,而cache是被从磁盘中读取出来的

2. Cache

  • cache是为了弥补告诉设备和低速设备的鸿沟而引入的中间层,最终起到加快访问速度的作用,核心作用是加快读取速度。比如一个很复杂的计算昨晚了,下次还要用结果,就把结果放在一个好拿的地方存着,下次就不要再算了,加快数据读取速度。

  • cache:京杭被用在磁盘的I/O请求上,如果有多个进程都要访问某个文件,于是该文件被做成cache以方便下次被访问,这样可以提供系统性能

3. Buffer

  • buffer主要目的是流量整形,把突发的大数据量较小规模的I/O整理成平稳的小数量较大规模的I/O,以减少相应次数,核心作用是缓冲。
  • buffer是由各种进程分配的,被用在如输入队列等方面。

4. 扩展

  1. Mem:表示无力内存统计
  1. Total:

    • Mem/total: 表示无力内存总量
    • Mem/used: 表示分配给缓存(包含buffers与cache)使用的数量,但其中可能部分缓存并未实际使用
    • Mem/free: 未被分配的内存
    • Mem/shared: 共享内存,一般系统不会用到
    • Mem/buffers: 系统分配但未被使用的buffers数量
    • Mem/cached: 系统分配但未被使用的cache数量
  2. Swap: 表示硬盘上交换分区的使用情况

5. 补充

  1. 不要误解buffer就是用来写的,Cache就是用来读的。 读也可以使用Buffer,比如你想一批一批低处理读取而费用啥处理啥的使用,就可以用到读Buffer;写当然也可以用cache,比如写入很高的随机行的使用
  1. 不要误解Cache或buffer就一定是内存或者存在什么告诉媒介上的东西。只要相对高速即可。比如预编译也是一种cache;Buffer也同理,例如NTFS文件系统就有自己的Logging Buffer