Buffer和Cache的區別

BufferCache的區別 linux

buffercache操做的對象就不同。 緩存

buffer(緩衝)是爲了提升內存和硬盤(或其餘I/0設備)之間的數據交換的速度而設計的。 app

cache(緩存)是爲了提升cpu和內存之間的數據交換速度而設計,也就是日常見到的一級緩存、二級緩存、三級緩存。 性能

cpu在執行程序所用的指令和讀數據都是針對內存的,也就是從內存中取得的。因爲內存讀寫速度慢,爲了提升cpu和內存之間數據交換的速度,在 cpu和內存之間增長了cache,它的速度比內存快,可是造價高,又因爲在cpu內不能集成太多集成電路,因此通常cache比較小,之後intel等 公司爲了進一步提升速度,又增長了二級cache,甚至三級cache,它是根據程序的局部性原理而設計的,就是cpu執行的指令和訪問的數據每每在集中 的某一塊,因此把這塊內容放入cache後,cpu就不用在訪問內存了,這就提升了訪問速度。固然若cache中沒有cpu所須要的內容,仍是要訪問內存的。 spa

緩衝(buffers)是根據磁盤的讀寫設計的,把分散的寫操做集中進行,減小磁盤碎片和硬盤的反覆尋道,從而提升系統性能。linux有一個守護 進程按期清空緩衝內容(即寫入磁盤),也能夠經過sync命令手動清空緩衝。舉個例子吧:我這裏有一個ext2U盤,我往裏面cp一個3MMP3,但 U盤的燈沒有跳動,過了一下子(或者手動輸入syncU盤的燈就跳動起來了。卸載設備時會清空緩衝,因此有些時候卸載一個設備時要等上幾秒鐘。 設計

修改/etc/sysctl.conf中的vm.swappiness右邊的數字能夠在下次開機時調節swap使用策略。該數字範圍是0100,數字越大越傾向於使用swap。默認爲60,能夠改一下試試。二者都是RAM中的數據。 對象

簡單來講,buffer是即將要被寫入磁盤的,而cache是被從磁盤中讀出來的。 隊列

buffer是由各類進程分配的,被用在如輸入隊列等方面。一個簡單的例子如某個進程要求有多個字段讀入,在全部字段被讀入完整以前,進程把先前讀入的字段放在buffer中保存。 進程

cache常常被用在磁盤的I/O請求上,若是有多個進程都要訪問某個文件,因而該文件便被作成cache以方便下次被訪問,這樣可提升系統性能。 內存

相關文章
相關標籤/搜索