Buffer和Cache的區別

shiri512003發表於2008-09-05
[@more@]

Buffer和Cache的區別

快取(cached)是把讀取過的資料儲存起來,重新讀取時若命中(找到需要的資料)就不要去讀硬碟了,若沒有命中就讀硬碟。其中的資料會根據讀取頻率進行組織,把最頻繁讀取的內容放在最容易找到的位置,把不再讀的內容不斷往後排,直至從中刪除。

緩衝(buffers)是根據磁碟的讀寫設計的,把分散的寫操作集中進行,減少磁碟碎片和硬碟的反覆尋道,從而提高系統效能。linux有一個守護程式定期清空緩衝內容(即寫如磁碟),也可以透過sync命令手動清空緩衝。舉個例子吧:我這裡有一個ext2的隨身碟,我往裡面cp一個3M的MP3,但隨身碟的燈沒有跳動,過了一會兒(或者手動輸入sync)隨身碟的燈就跳動起來了。解除安裝裝置時會清空緩衝,所以有些時候解除安裝一個裝置時要等上幾秒鐘。

修改/etc/sysctl.conf中的vm.swappiness右邊的數字可以在下次開機時調節swap使用策略。該數字範圍是0~100,數字越大越傾向於使用swap。預設為60,可以改一下試試。
--
兩者都是RAM中的資料。簡單來說,buffer是即將要被寫入磁碟的,而cache是被從磁碟中讀出來的。
buffer是由各種程式分配的,被用在如輸入佇列等方面,一個簡單的例子如某個程式要求有多個欄位讀入,在所有欄位被讀入完整之前,程式把先前讀入的欄位放在buffer中儲存。
cache經常被用在磁碟的I/O請求上,如果有多個程式都要訪問某個檔案,於是該檔案便被做成cache以方便下次被訪問,這樣可提供系統效能。
--

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7591490/viewspace-1010171/,如需轉載,請註明出處,否則將追究法律責任。

相關文章