在 fstab 中增加“送出”的優點/缺點
powertop
過去我做過很多晦澀難懂的系統優化,但在告訴我應該將 USB 埠設置為autosuspend之後,我擺脫了大部分優化,這迫使它們永遠休眠,並且在我意識到更高交換性的好處之後.但是今天,在查看 時
/etc/fstab
,我注意到我已經commit=60
為*/和/home*設置了選項。我記得這是對筆記型電腦的優化,以減少對磁碟的寫入量,從而節省電池。但後來我開始擔心這可能會導致數據失去(有時我的電池斷開連接,然後在啟動時fsck
告訴我一些孤兒 inode)。在尋找這個選項的解釋時,我得出了以下解釋(第二個似乎與我之前的理解相矛盾):
$ man mount | awk '/commit=/,/^$/' commit=nrsec Sync all data and metadata every nrsec seconds. The default value is 5 seconds. Zero means default.
https://forums.gentoo.org/viewtopic-p-4088752.html
commit=60 停止“立即”(預設為 5 秒)寫入優先於讀取,將寫入記憶體幾秒鐘後。這在大量讀取和寫入混合在一起的情況下很好,使用者希望讀取優先,這樣處理器可以保持忙碌而不是在等待寫入完成之前暫停,然後才能繼續讀取。
我見過的一個真實的例子是等待幾秒鐘 Gnome 下拉菜單出現,似乎沒有任何原因。原因是磁碟正忙於寫入,因此 CPU 必須等待寫入完成才能從磁碟獲取所有數據才能顯示菜單。
送出的真正作用是什麼?增加它真的有好處嗎(比如響應速度和省電)?它真的會導致數據失去嗎?
送出的真正作用是什麼?
我認為allquixotic在這裡給出了最好的解釋之一。
增加它真的有好處嗎(比如響應速度和省電)?它真的會導致數據失去嗎?
根據ext4 官方文件:
可以告訴 Ext4 每隔 ’nrsec’ 秒同步一次它的所有數據和元數據。預設值為 5 秒。這意味著如果您失去 電源,您將失去最近 5 秒的工作 (不過,由於日誌記錄,您的文件系統不會損壞)。這個預設值(或任何低值)會損害 性能,但它有利於數據安全。將其設置為 0 與將其保留為預設值(5 秒)具有相同的效果。將其設置 為非常大的值將提高性能。
增加
commit
值意味著您可能會失去最近 N 秒的工作(其中 N = 送出間隔),儘管大多數情況下這不會發生*,因為軟體仍然可以呼叫 fsync() 並將其數據寫入磁碟,覆蓋送出設置。您可以將其視為“至少經常將所有內容寫入磁碟”*。1另一方面,這意味著更少的寫入(這使得它在 ssd 使用者中非常受歡迎)和更好的性能(多個寫入組合成一個更大的寫入,在送出時間範圍內對先前寫入的更新被取消)。
至於省電,根據這個頁面,事實證明,現在增加
commit
值並不能節省電力。