Linus Torvalds 為核心的記憶體管理子系統準備了一系列修補程式。 Linux此次更新實現了從頁面快取讀取小塊資料的最佳化,避免原子性地改變頁碼結構中的引用計數(refcount)。提交文本指出,這些更改、相關測試以及草稿註釋文本均由 Claude Code AI 助手在 Torvalds 的指導下完成。此變更已新增至單獨的核心分支 noref-filemap-read-with-llm 中,目前尚不清楚它是否會被移植到主分支,或只是一項內部實驗。
測試期間,這些補丁將8線程配置下讀取小檔案的吞吐量從每秒990萬至1040萬次操作提升至每秒3000萬至3300萬次操作(提升3倍),4線程配置下從每秒8 90萬至1160萬次操作提升至每秒2500萬至2600萬次操作(提升2倍),單執行緒配置下從每秒790萬至810萬次操作提升至每秒880萬至890萬次操作。效能提升的原因在於,同時存取頁面快取會導致執行緒間在存取快取時出現嚴重的競爭。例如,當8個執行緒嘗試同時讀取16位元組的資料時,99.92%的時間並非用於讀取本身,而是用於等待存取引用計數器。
為了確保資料正確性,該補丁採用了一種變通方法,即利用讀取-複製-更新 (RCU) 機制進行同步,並延遲釋放內存,而不是獲取單獨的鎖、更改引用計數器或使用中間緩衝。這種方法保證了在讀取線程完成資料複製之前,記憶體頁不會被物理釋放。
來源: opennet.ru
