真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

linux中pagebuffercache的示例分析

小編給大家分享一下linux中page buffer cache的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

成都創(chuàng)新互聯(lián)公司專注于柞水企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),成都商城網(wǎng)站開發(fā)。柞水網(wǎng)站建設(shè)公司,為柞水等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站開發(fā),專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

Page cache和buffer cache一直以來是兩個比較容易混淆的概念,在網(wǎng)上也有很多人在爭辯和猜想這兩個cache到底有什么區(qū)別,討論到最后也一直沒有一個統(tǒng)一和正確的結(jié)論,在我工作的這一段時間,page cache和buffer cache的概念曾經(jīng)困擾過我,但是仔細(xì)分析一下,這兩個概念實際上非常的清晰。如果能夠了解到這兩個cache的本質(zhì),那么我們在分析io問題的時候可能會更加得心應(yīng)手。
Page cache實際上是針對文件系統(tǒng)的,是文件的緩存,在文件層面上的數(shù)據(jù)會緩存到page cache。文件的邏輯層需要映射到實際的物理磁盤,這種映射關(guān)系由文件系統(tǒng)來完成。當(dāng)page cache的數(shù)據(jù)需要刷新時,page cache中的數(shù)據(jù)交給buffer cache,但是這種處理在2.6版本的內(nèi)核之后就變的很簡單了,沒有真正意義上的cache操作。

Buffer cache是針對磁盤塊的緩存,也就是在沒有文件系統(tǒng)的情況下,直接對磁盤進行操作的數(shù)據(jù)會緩存到buffer cache中,例如,文件系統(tǒng)的元數(shù)據(jù)都會緩存到buffer cache中。
簡單說來,page cache用來緩存文件數(shù)據(jù),buffer cache用來緩存磁盤數(shù)據(jù)。在有文件系統(tǒng)的情況下,對文件操作,那么數(shù)據(jù)會緩存到page cache,如果直接采用dd等工具對磁盤進行讀寫,那么數(shù)據(jù)會緩存到buffer cache。

補充一點,在文件系統(tǒng)層每個設(shè)備都會分配一個def_blk_ops的文件操作方法,這是設(shè)備的操作方法,在每個設(shè)備的inode下面會存在一個radix tree,這個radix tree下面將會放置緩存數(shù)據(jù)的page頁。這個page的數(shù)量將會在top程序的buffer一欄中顯示。如果設(shè)備做了文件系統(tǒng),那么會生成一個inode,這個inode會分配ext3_ops之類的操作方法,這些方法是文件系統(tǒng)的方法,在這個inode下面同樣存在一個radix tree,這里會緩存文件的page頁,緩存頁的數(shù)量在top程序的cache一欄進行統(tǒng)計。從上面的分析可以看出,2.6內(nèi)核中的buffer cache和page cache在處理上是保持一致的,但是存在概念上的差別,page cache針對文件的cache,buffer是針對磁盤塊數(shù)據(jù)的cache,僅此而已。

buffer 與cache 的區(qū)別
A buffer is something that has yet to be “written” to disk. A cache is something that has been “read” from the disk and stored for later use.
更詳細(xì)的解釋參考:Difference Between Buffer and Cache
對于共享內(nèi)存(Shared memory),主要用于在UNIX 環(huán)境下不同進程之間共享數(shù)據(jù),是進程間通信的一種方法,一般的應(yīng)用程序不會申請使用共享內(nèi)存,筆者也沒有去驗證共享內(nèi)存對上面等式的影響。如果你有興趣,請參考:What is Shared Memory?

cache 和 buffer的區(qū)別:
Cache:高速緩存,是位于CPU與主內(nèi)存間的一種容量較小但速度很高的存儲器。由于CPU的速度遠(yuǎn)高于主內(nèi)存,CPU直接從內(nèi)存中存取數(shù)據(jù)要等待一定時間周期,Cache中保存著CPU剛用過或循環(huán)使用的一部分?jǐn)?shù)據(jù),當(dāng)CPU再次使用該部分?jǐn)?shù)據(jù)時可從Cache中直接調(diào)用,這樣就減少了CPU的等待時間,提高了系統(tǒng)的效率。Cache又分為一級Cache(L1 Cache)和二級Cache(L2 Cache),L1 Cache集成在CPU內(nèi)部,L2 Cache早期一般是焊在主板上,現(xiàn)在也都集成在CPU內(nèi)部,常見的容量有256KB或512KB L2 Cache.
Buffer:緩沖區(qū),一個用于存儲速度不同步的設(shè)備或優(yōu)先級不同的設(shè)備之間傳輸數(shù)據(jù)的區(qū)域。通過緩沖區(qū),可以使進程之間的相互等待變少,從而使從速度慢的設(shè)備讀入數(shù)據(jù)時,速度快的設(shè)備的操作進程不發(fā)生間斷。

Free中的buffer和cache:(它們都是占用內(nèi)存):
buffer :作為buffer cache的內(nèi)存,是塊設(shè)備的讀寫緩沖區(qū)
cache:作為page cache的內(nèi)存, 文件系統(tǒng)的cache
如果 cache 的值很大,說明cache住的文件數(shù)很多。如果頻繁訪問到的文件都能被cache住,那么磁盤的讀IO 必會非常小。

以上是“l(fā)inux中page buffer cache的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


分享名稱:linux中pagebuffercache的示例分析
網(wǎng)頁URL:http://weahome.cn/article/jiocdi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部