IT之家 4 月 7 日消息,一名英伟达工程师近日在 Linux 内核中提交了一个修复补丁,解决了 AMD 集成和独立 GPU 硬件上出现的性能倒退问题。然而令人意外的是,这位工程师正是最初引入这一问题的“始作俑者”。
据 Phoronix 报道,这位英伟达工程师上周对 Linux 内核进行了修改,试图将 PCI 基地址寄存器(BAR)空间扩展至超过 10TiB。然而,这一旨在提升拥有大内存空间的系统性能的改动,却意外地将 AMD 的 GPU 错误地标记为“受限”,从而严重影响了其性能表现。所幸的是,这一问题很快被社区发现并得到修复。
据悉,此次性能衰退的根本原因是上周提交的一个旨在扩展 PCI BAR 空间的 commit。该 commit 在提升大内存系统潜力的同时,也间接降低了消费级 x86 设备上的内核地址空间布局随机化(KASLR)熵值。KASLR 是一项重要的安全特性,它通过在每次启动时随机化内核数据加载到内存中的位置来增强系统安全性。与此同时,该 commit 还人为地扩大了内核可访问的物理内存范围(direct_map_physmem_end),通常会扩展至 64TiB。
在 Linux 系统中,内存被划分为不同的区域(zone),其中一种是设备区域(zone device),可以与 GPU 相关联。此次问题的关键在于,当内核为 Radeon GPU 初始化设备区域内存时,一个名为“max_pfn”的关联变量(代表内核可寻址的总 RAM)被人为地增加到了 64TiB。
由于 GPU 很可能无法访问整个 64TiB 的地址范围,这导致系统错误地将“dma_addressing_limited ()”标记为 True。该变量实际上限制了 GPU 只能使用 DMA32 区域,该区域仅提供 4GB 的内存,这就解释了性能大幅下降的原因。
幸运的是,这一问题很快被发现并得到了修复。英伟达工程师迅速提交了修复补丁,解决了这一性能倒退问题。根据 Linux 内核的开发流程,该修复补丁预计将在 Linux 6.15-rc1 合并窗口关闭前(即今日)被合并。
这一事件也体现了开源社区的协作精神。尽管 AMD 和 Nvidia 在 GPU 市场上是竞争对手,但在开源领域,他们共同遵循“谁破坏,谁修复”的原则。据IT之家了解,Linux 内核作为开源项目,接受来自全球开发者的贡献,并通过严格的代码审查机制确保代码质量。这种合作模式不仅推动了技术的进步,也促进了不同技术阵营之间的交流与合作。
随着修复补丁的合并,预计 Linux 6.15 稳定版将在六到八周后发布,大约在 5 月底或 6 月初。届时,用户将能够体验到修复后的系统性能,而 AMD 和 Nvidia 的 GPU 硬件也将更加稳定地运行在 Linux 平台上。
广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,IT之家所有文章均包含本声明。