我正在一個debian-64上運行一個專門的DB守護進程,內存64G,磁盤空間很大。它使用磁盤哈希表(mmaped),並使用正常的write()調用將實際數據寫入文件。當進行大量更新時,mmap的很大一部分會變髒,並且頁面緩存會嘗試將其刷新到磁盤,從而產生大量隨機寫入,從而降低對數據文件進行常規(順序)寫入的性能。如何優先write()通過mmap更新(或延遲mmap頁面緩存刷新)
如果有可能延遲頁面緩存刷新mmaped區域性能會提高(我認爲),因爲髒頁面的幾個(或全部)更改將一次寫入而不是每次更新一次(最差事實上,它當然會彙總很多變化)。
所以我的問題:是否有可能延遲頁面緩存刷新內存映射區域?或者有可能優先考慮正規寫作?還是有人有任何其他想法? madvise和posix_fadvise似乎沒有任何區別...
這聽起來很合理(儘管我認爲我也必須增加dirty_ratio),我會在接下來的幾周內嘗試一下,並讓你知道結果。謝謝! –
它的工作原理和減少磁盤I/O預期:) –
@HugoWalter:很高興聽到:) – Damon