1. 程式人生 > >文件系統緩存dirty_ratio與dirty_background_ratio兩個參數區別

文件系統緩存dirty_ratio與dirty_background_ratio兩個參數區別

們的 dirty 文件 pan 參數 回寫 不可 指定 ack

這兩天在調優數據庫性能的過程中需要降低操作系統文件Cache對數據庫性能的影響,故調研了一些降低文件系統緩存大小的方法,其中一種是通過修改/proc/sys/vm/dirty_background_ration以及/proc/sys/vm/dirty_ratio兩個參數的大小來實現。看了不少相關博文的介紹,不過一直弄不清楚這兩個參數的區別在哪裏,後來看了下面的一篇英文博客才大致了解了它們的不同。

vm.dirty_background_ratio:這個參數指定了當文件系統緩存臟頁數量達到系統內存百分之多少時(如5%)就會觸發pdflush/flush/kdmflush等後臺回寫進程運行,將一定緩存的臟頁異步地刷入外存;
vm.dirty_ratio:而這個參數則指定了當文件系統緩存臟頁數量達到系統內存百分之多少時(如10%),系統不得不開始處理緩存臟頁(因為此時臟頁數量已經比較多,為了避免數據丟失需要將一定臟頁刷入外存);在此過程中很多應用進程可能會因為系統轉而處理文件IO而阻塞。 之前一直錯誤的一位dirty_ratio的觸發條件不可能達到,因為每次肯定會先達到vm.dirty_background_ratio的條件,後來才知道自己理解錯了。確實是先達到vm.dirty_background_ratio的條件然後觸發flush進程進行異步的回寫操作,但是這一過程中應用進程仍然可以進行寫操作,如果多個應用進程寫入的量大於flush進程刷出的量那自然會達到vm.dirty_ratio這個參數所設定的坎,此時操作系統會轉入同步地處理臟頁的過程,阻塞應用進程

內核選項調整
- vm.dirty_ratio ≤ 5
- vm.dirty_background_ratio ≤ 10

文件系統緩存dirty_ratio與dirty_background_ratio兩個參數區別