近期,Linux內核社區迎來了一次意外的性能挑戰與迅速解決的事件。故事的起因是一位英偉達工程師在內核代碼中實施的一項改動,初衷是為了提升大內存環境下的系統性能,卻不料給AMD的GPU帶來了性能倒退的問題。
據Phoronix報道,這位工程師嘗試擴展PCI基地址寄存器(BAR)空間至超過10TiB的范圍,旨在挖掘大內存系統的潛力。然而,這一改動意外地觸發了AMD GPU的性能問題,將它們錯誤地歸類為“受限”設備,顯著影響了其性能發揮。
問題的根源在于,這次改動不僅提升了系統性能潛力,同時也影響了內核地址空間布局隨機化(KASLR)的熵值,這是保護系統安全的一項重要機制。內核可訪問的物理內存范圍被人為擴大至64TiB,這在消費級x86設備上并不常見。
在Linux系統中,內存被劃分為多個區域,其中設備區域與GPU緊密相關。當內核為Radeon GPU分配設備區域內存時,一個關鍵變量“max_pfn”被錯誤地設置為了64TiB,這遠超過了GPU實際能夠訪問的地址范圍。因此,系統錯誤地將GPU標記為DMA地址空間受限,僅允許其使用4GB的DMA32區域,從而導致了性能的顯著下降。
幸運的是,這一性能問題很快就被開源社區的成員發現并報告。英偉達工程師迅速響應,提交了一個修復補丁,旨在糾正這一錯誤并恢復AMD GPU的性能。根據Linux內核的開發流程,這個修復補丁預計將在Linux 6.15-rc1版本發布前被合并。
這一事件不僅凸顯了開源社區在問題發現和解決方面的高效協作,也展現了不同技術陣營之間在開源項目上的合作精神。盡管AMD和英偉達在GPU市場上是競爭對手,但在Linux內核這一開源項目中,他們共同遵循“誰破壞,誰修復”的原則,共同維護代碼的質量和系統的穩定性。
Linux內核作為全球開發者共同參與的開源項目,通過嚴格的代碼審查機制確保了代碼的質量。這種合作模式不僅推動了技術的快速發展,也促進了不同技術陣營之間的交流與理解。
隨著修復補丁的合并,Linux 6.15穩定版的發布指日可待,預計在五月底或六月初與用戶見面。屆時,用戶將能夠體驗到修復后的系統性能,而AMD和英偉達的GPU也將更加穩定地運行在Linux平臺上。