Buffer和Cache的區別 linux
buffer與cache操做的對象就不同。 緩存
buffer(緩衝)是爲了提升內存和硬盤(或其餘I/0設備)之間的數據交換的速度而設計的。 app
cache(緩存)是爲了提升cpu和內存之間的數據交換速度而設計,也就是日常見到的一級緩存、二級緩存、三級緩存。 性能
cpu在執行程序所用的指令和讀數據都是針對內存的,也就是從內存中取得的。因爲內存讀寫速度慢,爲了提升cpu和內存之間數據交換的速度,在 cpu和內存之間增長了cache,它的速度比內存快,可是造價高,又因爲在cpu內不能集成太多集成電路,因此通常cache比較小,之後intel等 公司爲了進一步提升速度,又增長了二級cache,甚至三級cache,它是根據程序的局部性原理而設計的,就是cpu執行的指令和訪問的數據每每在集中 的某一塊,因此把這塊內容放入cache後,cpu就不用在訪問內存了,這就提升了訪問速度。固然若cache中沒有cpu所須要的內容,仍是要訪問內存的。 spa
緩衝(buffers)是根據磁盤的讀寫設計的,把分散的寫操做集中進行,減小磁盤碎片和硬盤的反覆尋道,從而提升系統性能。linux有一個守護 進程按期清空緩衝內容(即寫入磁盤),也能夠經過sync命令手動清空緩衝。舉個例子吧:我這裏有一個ext2的U盤,我往裏面cp一個3M的MP3,但 U盤的燈沒有跳動,過了一下子(或者手動輸入sync)U盤的燈就跳動起來了。卸載設備時會清空緩衝,因此有些時候卸載一個設備時要等上幾秒鐘。 設計
修改/etc/sysctl.conf中的vm.swappiness右邊的數字能夠在下次開機時調節swap使用策略。該數字範圍是0~100,數字越大越傾向於使用swap。默認爲60,能夠改一下試試。–二者都是RAM中的數據。 對象
簡單來講,buffer是即將要被寫入磁盤的,而cache是被從磁盤中讀出來的。 隊列
buffer是由各類進程分配的,被用在如輸入隊列等方面。一個簡單的例子如某個進程要求有多個字段讀入,在全部字段被讀入完整以前,進程把先前讀入的字段放在buffer中保存。 進程
cache常常被用在磁盤的I/O請求上,若是有多個進程都要訪問某個文件,因而該文件便被作成cache以方便下次被訪問,這樣可提升系統性能。 內存