答案1
檢查檔案系統是否出現在grep -w sync /proc/mounts
.劇透:答案是否定的。透過立即同步掛載檔案系統非常緩慢。 (此外,它還會導致大量小寫入,從而縮短快閃記憶體設備的使用壽命。)
一些應用程式透過呼叫將資料刷新到磁碟fdatasync
。不幸的是,Unix API 在彈性方面設計得不夠好。從應用程式的角度來看,某些變更需要具有彈性,因為應用程式已將資料傳輸到遠端計算機,表示變更已儲存。在這種情況下fdatasync
是正確的介面。但很多應用程式需要不同的東西,即保證如果他們先進行更改1,然後進行更改2,並且系統中途崩潰,那麼重新啟動後就不會出現沒有更改1的更改2。新版本檔案系統,更改 2 = 刪除舊版本。通常這對應用程式是不可見的,因為它只涉及檔案系統快取/緩衝區和磁碟之間發生的事情,而不涉及應用程式可見的任何內容。但在系統崩潰的情況下,磁碟內容反映實際磁碟寫入的順序。沒有 API 規定“此更改必須在該更改之前發生”,因此應用程式用作fdatasync
窮人的後備(執行更改 1,調用fdatasync
以確保它已傳播到磁碟,然後執行更改 2)。這可能會對效能產生負面影響,尤其是對於寫入速度慢的媒體(例如快閃記憶體)。
如果某個應用程式因過度使用fdatasync
或其同類而在您的系統上速度過慢fsync
,您可以使用吃我的數據使fsync
/fdatasync
呼叫無效。但請注意,如果您的系統中途崩潰,您可能會留下不一致的數據。
我不確定我的答案是否與 recoll 或更改 Firefox 插件的設定相關。這些操作很可能是閱讀從磁碟。尤其是回想一下——它的工作是讀取大量數據!
此外,即使變更沒有立即同步到磁碟,您也可以預期會寫入一些資料。如果資料沒有寫入磁碟,它必須保留在記憶體中,同時記憶體不能用於其他更有用的事情。此外,不讓磁碟保持忙碌也是一種浪費:如果有資料要寫入,核心將開始寫入,而應用程式繼續執行並產生更多資料。
1在檔案系統設計的背景下,彈性是指在系統崩潰時是否保留對檔案系統的變更的問題。