索尼工程師再次幫助微軟大幅度提升exFAT在Linux上的效能刪除速度提高172倍

#系統資訊 在索尼工程師的幫助下微軟 exFAT 檔案系統在 Linux 上的效能將再次大幅度提升,在 2022 年這位索尼工程師已經幫助微軟提升 exFAT 在 Linux 上的效能。此次提交補丁的旨在啟用丟棄掛載選項,大幅度縮短檔案簇刪除時間從而減少因為刪除簇導致的軟鎖定和效能降低問題。檢視全文:https://ourl.co/108596
微軟在 2006 年推出 exFAT (擴充套件檔案分配表) 檔案系統用於最佳化快閃記憶體儲存效能,到 2012 年微軟推出 64 位版 exFAT 檔案系統作為 FAT32 的後繼者,7 年後的 2019 年微軟宣佈在 Linux 系統中支援 exFAT 格式。
到 2022 年索尼工程師 Yuezhang Mo 注意到減少目錄條目的重複遍歷可以讓 exFAT 檔案系統的效能提升高達 57%,改進後的版本在 Linux Kernel 6.2 版 (釋出於 2023 年 2 月) 中得到實現。
現在這名工程師再次幫助微軟提升 exFAT 檔案系統的效能,最新的拉取請求包含大量與 exFAT 相關的改進,其中就包括關於繼續提升 exFAT 在 Linux 中的效能的改進。

在拉取請求中索尼工程師提到:
  • 修復 exfat_get_block () 中的隨機堆疊損壞和不正確的錯誤返回
  • 透過改進檢查極端情況來最佳化 exfat_get_block ()
  • 修復 exfat_find_last_cluster 中自連結 (self-linked) 造成的無限迴圈
  • 刪除無效的 EXFAT_CLUSTERS_UNTRACKED 程式碼
  • 新增缺失的關機檢查
  • 使用丟棄掛載選項提高刪除效能
丟棄掛載指的是通知底層儲存裝置不再使用的塊的操作,因此當使用丟棄選項掛載檔案系統時,該功能會啟用即時丟棄操作,每次當塊從已使用轉換為空閒狀態時,這些操作都會自動通知儲存裝置。
索尼工程師在補丁說明中寫道:
如果啟用丟棄掛載選項則在釋放簇時就會丟棄檔案的簇,逐個丟棄簇會顯著降低效能,當釋放大量簇時效能不佳還會造成軟鎖定,此提交透過批次丟連續簇來提高效能。
作為測試使用 80GB 的檔案用來對比,刪除該檔案原本在 exFAT 中需要 4 分 46 秒,透過此次最佳化後只需要 2 秒就可以完成,相當於這個補丁給檔案檔案刪除的效能提高了 172 倍,當然具體檔案體積和數量可能會有些效能方面的差異。
下面是衡量指標:
# truncate -s 80G /mnt/file
# time rm /mnt/file
如果沒有這個補丁:
實際花費時間為 4 分 46.183 秒
使用者操作時間為 0 秒
系統操作時間為 12.863 秒
有了這個補丁後:
實際花費時間為 1.661 秒
使用者操作時間為 0 秒
系統操作時間為 0.017 秒
最後雖然補丁是提交了但合併到 Linux Kernel 可能還需要很長時間,一方面這需要微軟檢查並測試,另一方面也需要核心團隊後續的確認,所以短時間應該不會合併到 Linux Kernel 即將釋出的新版本中。

相關文章