IT之家4月7日消息,一名英伟达工程师近日在Linux内核中提交了一个修复补丁,解决了AMD集成和独立GPU硬件上出现的性能倒退问题。然而令人意外的是,这位工程师正是最初引入这一问题的“始作俑者”。
据Phoronix报道,这位英伟达工程师上周对Linux内核进行了修改,试图将PCI基地址寄存器(BAR)空间扩展至超过10TiB。然而,这一旨在提升拥有大内存空间的系统性能的改动,却意外地将AMD的GPU错误地标记为“受限”,从而严重影响了其性能表现。所幸的是,这一问题很快被社区发现并得到修复。
据悉,此次性能衰退的根本原因是上周提交的一个旨在扩展PCIBAR空间的commit。该commit在提升大内存系统潜力的同时,也间接降低了消费级x86设备上的内核地址空间布局随机化(KASLR)熵值。KASLR是一项重要的安全特性,它通过在每次启动时随机化内核数据加载到内存中的位置来增强系统安全性。与此同时,该commit还人为地扩大了内核可访问的物理内存范围(direct_map_physmem_end),通常会扩展至64TiB。
在Linux系统中,内存被划分为不同的区域(zone),其中一种是设备区域(zonedevice),可以与GPU相关联。此次问题的关键在于,当内核为RadeonGPU初始化设备区域内存时,一个名为“max_pfn”的关联变量(代表内核可寻址的总RAM)被人为地增加到了64TiB。
由于GPU很可能无法访问整个64TiB的地址范围,这导致系统错误地将“dma_addressing_limited”标记为True。该变量实际上限制了GPU只能使用DMA32区域,该区域仅提供4GB的内存,这就解释了性能大幅下降的原因。
幸运的是,这一问题很快被发现并得到了修复。英伟达工程师迅速提交了修复补丁,解决了这一性能倒退问题。根据Linux内核的开发流程,该修复补丁预计将在Linux6.15-rc1合并窗口关闭前(即今日)被合并。
这一事件也体现了开源社区的协作精神。尽管AMD和Nvidia在GPU市场上是竞争对手,但在开源领域,他们共同遵循“谁破坏,谁修复”的原则。据IT之家了解,Linux内核作为开源项目,接受来自全球开发者的贡献,并通过严格的代码审查机制确保代码质量。这种合作模式不仅推动了技术的进步,也促进了不同技术阵营之间的交流与合作。
随着修复补丁的合并,预计Linux6.15稳定版将在六到八周后发布,大约在5月底或6月初。届时,用户将能够体验到修复后的系统性能,而AMD和Nvidia的GPU硬件也将更加稳定地运行在Linux平台上。
Alysa?
商战不光有尔虞我诈,还有偷偷拔你网线[doge]
huos520 回复 04-08 11:06
给发财树浇热水
鲜奶青稞
没写过bug的程序员不是个好程序员
无声狂啸
NV经常搞这类路数,当年中关村在线各种拿开了物理计算的THE WAY游戏《镜之边缘》证明亮机卡240比AMD旗舰还强
金鱼
所以如果没人发现,英伟达工程师的“bug小心思”坑害AMD就成功啦
花毒。
就跟辉瑞药物治病特有效一样![抠鼻][呲牙笑]
迷迷糊糊就走到了这个岁数
感觉Linux快搞不下去了。
元月拾肆
这就说明lunix 底层内核也是不安全的
qzuser
“通过严格的代码审核机制确保代码质量”,那上个代码审核的啥?属于是没有审核啊[笑着哭]
拳击手
为什么刻意强调amd的性能受损,x86架构不是intel的吗
ノリ.
我破坏我就不修 送你走