如何檢查我的 Linux 系統是否配置為立即將變更同步到磁碟?

如何檢查我的 Linux 系統是否配置為立即將變更同步到磁碟?

我注意到我的系統上有一個索引引擎,回憶起來工作時使用大量磁碟,並且每當我更改 Firefox 插件的設定時都會出現磁碟活動。我不知道這些應用程式是否旨在立即將更改同步到磁碟,或者是否是由於系統配置中的某些設定所致。

有沒有辦法查出來。

附言。我留下了一個問題軟體推薦關於 recoll/xapian 問題。

答案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在檔案系統設計的背景下,彈性是指在系統崩潰時是否保留對檔案系統的變更的問題。

相關內容