Linux 開發者 Usama Arif 發現並解決了 Btrfs 檔案系統的 Zstd 解壓縮程式碼中的一項效率低下問題,從而提高了效能。此修補程式已排隊納入 Linux 7.4 核心週期,可減少解壓縮期間冗餘資料的寫入。
目前,Btrfs Zstd 解壓縮路徑會寫入每個傳遞的位元組兩次。根據 Arif 的說法,「zstd_decompress_bio() 為 zstd 提供一個大小為扇區的暫存緩衝區,而 btrfs_decompress_buf2page() 隨後將與讀取 bio 重疊的部分複製到目標 folios。每個傳遞的位元組都會寫入兩次。」建議的解決方案是透過為每個串流呼叫選擇輸出緩衝區,並使用 `zstd_map_dest()` 將目的地直接對應到頁面快取,以繞過此重複。
測試顯示,使用 4K 扇區大小的連續讀取時間減少了 7.8%,使用 16K 扇區減少了 3.6%,使用 64K 扇區減少了 6.8%。使用啟用 Zstd 壓縮的 Btrfs 時,隨機 4K 讀取也提高了約 3%。此修補程式目前位於「for-next」分支中,預計將包含在 Linux 7.4 核心版本中,該版本定於十月發布。開發人員也希望在同一版本中包含其他 Zstd 核心改進。
閱讀原始報道
💬 评论
📜 评论政策