調整寫磁碟快取刷新演算法

調整寫磁碟快取刷新演算法

我想將空閒記憶體用於寫入快取。 Linux 會自動執行此操作,但它有一些奇怪的刷新演算法,我希望對其進行調整以供我使用。

我最近用來ddrescue複製磁碟。它讀取一個區塊並將該區塊寫入磁碟。

我想要的是讓讀取盡可能多地讀取,直到沒有更多可用空間,然後阻塞直到釋放一些空間,同時寫入盡可能快地寫入以釋放記憶體。

因此,如果寫入磁碟比讀取磁碟快,則不會使用內存,如果寫入磁碟比讀取磁碟慢,則所有內存將保持使用狀態,直到複製完成。

在這兩種情況下,記憶體使用量保持不變(除非其他程式佔用一些可用記憶體)。

但我看到的是這樣的:

寫緩存

讀取會填滿快取(而幾乎沒有寫入),並且當快取達到限制(或在一段時間後)時,讀取將被阻止全部快取被寫入磁碟。這幾乎就像一個巨魔時不時地運行“同步”。

我嘗試更改 /proc/sys/vm/dirty_* 但無濟於事:我能夠引起的唯一變化是頂部有多高。因此,提到 /proc/sys/vm/dirty_* 的答案必須提供可測量地壓平鋸齒圖的測試值。

告訴 Linux 盡快開始寫入但如果有可用空間則永遠不會阻止讀取或寫入的調整很可能適合我的目的。

我知道像mbuffer.它們會使圖形變平,但它們不是動態的(即,當可用記憶體較低時釋放記憶體),而且它們不允許查找,因此它們不能與類似的程式一起使用ddrescue(必須來回查找)。

相關內容