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