我想了解字節從write()到物理磁盤的方式,以調整我的圖片服務器性能。ext4 commit =掛載選項和dirty_writeback_centisecs
一點我不明白的是的是這兩者之間的區別:提交=安裝選項和dirty_writeback_centisecs。看起來他們對於將更改寫入存儲設備的過程大致相同,但仍然不同。
我不清楚哪一個在我的字節到磁盤的路上先發生火災。
我想了解字節從write()到物理磁盤的方式,以調整我的圖片服務器性能。ext4 commit =掛載選項和dirty_writeback_centisecs
一點我不明白的是的是這兩者之間的區別:提交=安裝選項和dirty_writeback_centisecs。看起來他們對於將更改寫入存儲設備的過程大致相同,但仍然不同。
我不清楚哪一個在我的字節到磁盤的路上先發生火災。
是的,我剛剛在ARM Chromebook上遇到了針對SDCard Ubuntu安裝的這些調查掛載選項。這就是我能告訴你... 下面是如何看到髒和回寫金額:
[email protected]:~$ cat /proc/meminfo | grep "Dirty" -A1
Dirty: 14232 kB
Writeback: 4608 kB
(編輯:這髒和回寫是相當高的,我有一個編譯運行時,我跑了這一點)
所以要寫出的數據很髒。髒數據仍然可以被消除(如果說,臨時文件在寫回之前被創建,使用和刪除,它永遠不會被寫出)。由於髒數據被移入回寫,內核會嘗試將可能變爲髒的較小請求合併爲單個較大的I/O請求,這是爲什麼dirty_expire_centisecs通常不會設置得太低的原因之一。 a)通過緩存足夠的數據以達到vm.dirty_background_ratio,會將髒數據寫回寫入。 b)當數據變成vm.dirty_writeback_centisecs釐秒(3000缺省值爲30秒)時,它將被寫入回寫。 vm.dirty_writeback_centisecs,回寫守護程序默認每500釐秒(5秒)運行以實際刷新寫回的任何內容。
fsync將刷新一個單獨的文件(強制它從髒寫入回寫並等待,直到它被刷新回寫),並且sync會對所有內容進行同步處理。據我所知,它儘快完成了這一任務,繞過了嘗試平衡磁盤讀寫的任何嘗試,它會使設備進行100%寫操作,直到同步完成。
commit = 5默認情況下,ext4掛載選項實際上會在該文件系統上每5秒強制一次sync()。這是爲了確保在讀取活動過多時不會過度延遲寫入操作(理想情況下,如果斷電或斷電時會丟失最多5秒的數據)。我在SDCard(在Chromebook上)上安裝Ubuntu時發現,這實際上只會導致大規模的文件系統停頓,如果您爲卡寫入很多內容,ChromeOS會使用commit = 600,並且我將該端應用於Ubuntu端以達到良好效果。
dirty_writeback_centisecs,配置與虛擬內存相關的內核Linux的守護進程(這就是爲什麼虛擬內存)。它們負責從RAM內存寫回所有的存儲設備,所以如果你配置了dirty_writeback_centisecs,並且你有25個不同的存儲設備安裝在你的系統上,它將具有相同數量的回寫時間存儲系統。 雖然提交是每個存儲設備完成的(實際上是每個文件系統)並且與同步過程相關,而不是來自虛擬內存的守護進程。 所以,你可以把它看成:
dirty_writeback_centisecs 從RAM寫入所有文件系統
提交 每個文件系統從RAM
取