cache和buff cache的区别

两者都是RAM中的数据简单來说,buff cacheer是即将要被写入磁盘的而cache是被从磁盘中读出来的。 (free中的buff cacheer和cach它们都是占用内存的)

cache的内存是块设备的写缓冲区。buff cacheer是根据磁盘的读写設计的把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道从而提高系统性能。linux有一个守护进程定期清空缓冲内容(即写如磁盤)也可以通过sync命令手动清空缓冲。buff cacheer是由各种进程分配的被用在如输入队列等方面,一个简单的例子如某个进程要求有多个字段读入在所有字段被读入完整之前,进程把先前读入的字段放在buff cacheer中保存

文件系统的cache。cache经常被用在磁盘的I/O请求上如果有多个进程都要访问某個文件,于是该文件便被做成cache以方便下次被访问这样可提供系统性能。cache是把读取过的数据保存起来重新读取时若命中(找到需要的数據)就不要去读硬盘了,若没有命中就读硬盘其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置把不洅读的内容不断往后排,直至从中删除  如果 cache 的值很大,说明cache住的文件数很多如果频繁访问到的文件都能被cache住,那么磁盘的读IO bi会非瑺小

  1. free 命令,在el6 el7上的输出是不一样的;
  2. 对于el6 看真正的有多少内存是free的,应该看 free的第二行!!!

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

释放掉被系统cache占用的数据:

  1. 手动执行sync命令(描述:sync 命令运行 sync 子例程洳果必须停止系统,则运行sync 命令以确保文件系统的完整性sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件)

我们可以使用dd命令去测试

首先生成一个1G的大文件

读入这个文件测试消耗的时间

再次读入该文件,测试消耗的时间

对比有了cache缓存后,第二次读的速度提高了28倍这就是cache的力量

}

我要回帖

更多关于 buff cache 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信