64位元ARM Linux核心團隊反對CPU特定最佳化因為這相當難以維護
在Linux x86_64 核心中,針對特定微體系結構的最佳化非常普遍,英特爾和AMD CPU 系列都採用了各種效能技巧,而ARM64 Linux 核心維護者卻反對引入新的特定微體系結構優化,因為這會影響到新的ARM 處理器。
Ampere Computing 發送了一組4 個補丁,為其新的AmpereOne 伺服器處理器提供最佳化。Ampere Computing 發現,當使用4K 頁面大小時,這些新的高核心數ARM 伺服器處理器可以從積極的預取中獲益。根據報告,在連續讀取效能測試中,使用HugeTLB 或Tmpfs 的收益”高達1.3 ~ 1.4 倍”。
測試結果顯示,在hugetlb 或tmpfs 中,我們可以將連續讀取效能大幅提升至1.3x ~ 1.4x。雖然這些提升對於增強AmpereOne Linux 效能來說令人興奮,但目前看來,這項工作不會被上傳到主線Linux 核心。
著名的ARM Linux 核心開發人員Will Deacon 就AmpereOne CPU 的效能增強補丁發表了自己的看法:
“我們傾向於迴避arm64 核心中針對微體系結構的最佳化,因為這些最佳化非常難以維護,難以正確測試,通常會導致臃腫,並為更新我們的函式庫例程增加額外的障礙。
誠然,我們在copy_page()(偽裝成ARM64_HAS_NO_HW_PREFETCH)中為Thunder-X1 提供了一些幫助,但坦白說,那台機器需要一切可以得到的幫助。
因此,我真的不希望合併;現代CPU 在複製資料方面應該做得更好。這是copy_to_user(),不是火箭科學。”
ARM 的馬克-拉特蘭(Mark Rutland)也同意Deacon的說法,並同意取消Thunder-X1 的針對性優化。核心開發人員Marc Zyngier 也表示同意,並已在開發一個補丁,以刪除Thunder-X1 的特定程式碼。
為了保持程式碼的可維護性,避免ARM64 Linux 核心程式碼過於複雜,他們不再追求CPU/微體系結構的特定最佳化。未來是否會有任何專注於ARM Linux 的發行版本身攜帶此類補丁,或任何經過AmpereOne 優化的Linux 發行版繼續向前發展值得關注。特別是考慮到Ampere 專注於高效能和高能效的ARM Linux 伺服器很可能不希望留下任何優化的痕跡,尤其是考慮到他們的目標是與AMD EPYC 和Intel Xeon 伺服器競爭。