電腦底層知識拾遺(七)頁快取資料同步和頁回收機制

來源:互聯網
上載者:User

標籤:頁緩衝   資料同步   頁交換   頁回收   swap   

這篇說說Linux的頁快取資料同步和頁回收機制。資料同步和頁回收是兩個獨立的概念,資料同步處理的是記憶體/緩衝的資料和後備裝置的資料一致問題,頁回收處理的是在記憶體空間不足時如何回收已指派的實體記憶體頁,來獲得足夠空間分配乾淨頁,支援優先順序更高的工作。資料同步在任意時刻都有可能觸發,頁回收則是在實體記憶體使用達到一定閥值的時候觸發。


資料同步就是把實體記憶體和頁緩衝中的髒頁寫回到後備裝置的檔案中去。有兩種方式可以調用資料同步

1. 周期性的調用,主要是pdflush機制

2. 強制調用,比如調用sync, fsync系統調用。當髒頁數量很多時,核心也會強制進行資料同步,來控制髒頁的數量,使資料同步造成的IO盡量平滑


pdflush是一組核心線程,相當於核心維護了一個pdflush線程池,根據資料同步的負載來分配pdflush線程,一個pdflush線程可以對應一個塊裝置,這樣多個pdflush線程對應多個塊裝置,可以避免單個塊裝置的IO負載過大影響其他塊裝置的資料同步。

cat /proc/sys/vm/nr_pdflush_threads   可以查看當前系統啟動的pdflush線程數量


給出了sync等系統調用觸發的資料完整性同步(即同步所有的髒頁),以及pdflush觸發的周期性刷出同步所調用的核心功能

1. 可以看到資料同步的目標主要是檔案系統的對象,比如檔案系統超級塊,檔案inode中繼資料,檔案inode資料區塊。

2. 不管是資料完整性同步,還是flush同步,最後的調用路徑都彙集到了sync_sb_inodes函數,這個函數會同步給定超級塊的所有髒inodes


同步一個超級塊的所有髒inodes 如果每次都要遍曆所有的inode鏈表去過濾髒inode,那效率是相當低下的。實際上核心專門維護了一個髒inode鏈表,通過超級塊的super_block --> s_dirty指標指向這個髒inode鏈表,這樣只要依次對這個鏈表的inode進行同步即可。


對一個inode同步包括兩部分,中繼資料同步和資料區塊同步,核心提供了很多標誌位來細化資料同步的操作細節。


比較幾個強制同步的系統調用

sync:同步所有的髒頁,是資料完整性同步。當IO請求發送到請求隊列後就返回,不等待磁碟操作的完成。當磁碟發生故障時可能造成資料丟失

fsync: 對單個檔案的中繼資料和資料區塊同步,等待直到磁碟操作完成後才返回,保證了資料的可靠性

fdatasync: 對單個檔案的資料區塊同步,等待直到磁碟操作完成後才返回,保證了資料的可靠性

msync:對mmap產生的髒頁進行同步


頁回收機制包含了三部分,資料刷出flush, 交換swap, 釋放release.

資料刷出flush和資料同步是類似的,就是把有後備檔案的頁緩衝都同步到磁碟,從而可以回收這些頁面

交換swap主要是對匿名映射,私人映射,malloc動態分配的記憶體這些沒有後備檔案的記憶體頁進行回收,把他們交換到位於磁碟的交換區,從而可以回收這些頁面

釋放release主要是一些針對一些LRU的唯讀記憶體頁,在壓力大的情況下直接釋放,從而可以回收這樣頁面


核心的頁面回收機制主要要解決幾個問題:

1. 採用何種回收演算法來保證最大的收益

2. 回收哪些頁

3. 如何組織交換區,如何存取交換區中頁

4. 在回收壓力大的情況下如何避免頁顛簸


電腦底層知識拾遺(七)頁快取資料同步和頁回收機制

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.