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. 扩展
Mem
:表示无力内存统计
Total
:Mem/total
: 表示无力内存总量Mem/used
: 表示分配给缓存(包含buffers与cache)使用的数量,但其中可能部分缓存并未实际使用Mem/free
: 未被分配的内存Mem/shared
: 共享内存,一般系统不会用到Mem/buffers
: 系统分配但未被使用的buffers数量Mem/cached
: 系统分配但未被使用的cache数量
Swap
: 表示硬盘上交换分区的使用情况
5. 补充
- 不要误解buffer就是用来写的,Cache就是用来读的。 读也可以使用Buffer,比如你想一批一批低处理读取而费用啥处理啥的使用,就可以用到读Buffer;写当然也可以用cache,比如写入很高的随机行的使用
- 不要误解Cache或buffer就一定是内存或者存在什么告诉媒介上的东西。只要相对高速即可。比如预编译也是一种cache;Buffer也同理,例如NTFS文件系统就有自己的Logging Buffer