内存资源(物理内存/虚拟内存)性能优化
linux内存中的cache和buffer
计算机硬件中cpu,内存和磁盘是主要的三大部分,其中cpu发展到今天执行速度非常快。而内存相对于cpu来说就慢多了,cpu执行的指令是从内存中取出的,计算的结果也要写回内存,但内存的响应速度如果跟不上cpu的话,再快的cpu也发挥不了效率。
然而,内存中的数据也要写回到磁盘,相对于机械硬盘,内存的速度可要快多了,那就又出现了问题,磁盘的低速读写速度,相比于内存条的二进制电压变化速度,那就是很大的差别,即使内存读写速度再快,还是要被磁盘的低速读写拖后退。
从字面意义上看 Cache 名为缓存,Buffer 名为缓 冲,
cache
cache提供的就是一种缓存能力,是为了弥补高速设备和低速设备之间的矛盾而设立的一个中间层,
buffer
buffer提供的是一种缓冲能力,他存在的目的适用于速度快的设备向速度慢的设备输出东西,
对比cache 和 buffer的功能
Cache是cpu与内存间的,Buffer是内存与磁盘间的,都是为了解决速度不对等的问题,
cache 是把读取过的数据保存起来,重新读取若命中,就不要去读取硬盘,若没有命中再读硬盘,其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直到其中删除,
buffer是即将要被写词磁盘的,而cache是被从磁盘中读取的。
在应用场景上,buffer是有各种进程分配的,被用在如输入队列等方面。一个简单的例子,如果进程要求有多个字段读入,在所有字段被读入完整之前,进程把先前读入的字段放在buffer中,
cache经常被用在磁盘的io请求上,如果多个进程都要访问某个文件,于是该文件便被做成cache以方便下次访问,这样可提高系统性能。