linux Page cache和buffer cache正解

來源:互聯網
上載者:User


linux Page cache和buffer cache正解 Page cache和buffer cache一直以來是兩個比較容易混淆的概念,在網上也有很多人在爭辯和猜想這兩個cache到底有什麼區別,討論到最後也一直沒有一個統一和正確的結論,在我工作的這一段時間,page cache和buffer cache的概念曾經困擾過我,但是仔細分析一下,這兩個概念實際上非常的清晰。如果能夠瞭解到這兩個cache的本質,那麼我們在分析io問題的時候可能會更加得心應手。 www.2cto.com     Page cache實際上是針對檔案系統的,是檔案的緩衝,在檔案層面上的資料會緩衝到page cache。檔案的邏輯層需要映射到實際的物理磁碟,這種映射關係由檔案系統來完成。當page cache的資料需要重新整理時,page cache中的資料交給buffer cache,但是這種處理在2.6版本的核心之後就變的很簡單了,沒有真正意義上的cache操作。    Buffer cache是針對磁碟塊的緩衝,也就是在沒有檔案系統的情況下,直接對磁碟進行操作的資料會緩衝到buffer cache中,例如,檔案系統的中繼資料都會緩衝到buffer cache中。    簡單說來,page cache用來快取檔案資料,buffer cache用來緩衝磁碟資料。在有檔案系統的情況下,對檔案操作,那麼資料會緩衝到page cache,如果直接採用dd等工具對磁碟進行讀寫,那麼資料會緩衝到buffer cache。    補充一點,在檔案系統層每個裝置都會分配一個def_blk_ops的檔案操作方法,這是裝置的操作方法,在每個裝置的inode下面會存在一個radix tree,這個radix tree下面將會放置快取資料的page頁。這個page的數量將會在top程式的buffer一欄中顯示。如果裝置做了檔案系統,那麼會產生一個inode,這個inode會分配ext3_ops之類的操作方法,這些方法是檔案系統的方法,在這個inode下面同樣存在一個radix tree,這裡會快取檔案的page頁,快取頁面的數量在top程式的cache一欄進行統計。從上面的分析可以看出,2.6核心中的buffer cache和page cache在處理上是保持一致的,但是存在概念上的差別,page cache針對檔案的cache,buffer是針對磁碟塊資料的cache,僅此而已。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.