Linux 内核 7.3 版本的合并窗口已于 8 月 17 日正式开启。在首个开发周,x86 架构和调度器迎来多项重要更新,其中最受关注的是为 AMD 即将推出的低功耗核心做准备,同时统一了 Intel 与 AMD 的 CPU 核心类型处理方式。
此次更新还包含针对老旧硬件游戏性能的大幅优化,以及多项调度器改进,涉及混合架构处理器、调度延迟等多个方面。
AMD 低功耗核心类型正式纳入
7.3 版本的 x86/cpu 相关代码已进入合并窗口,其中新增了 AMD_CPU_TYPE_LOW_POWER 类型,用于识别 AMD 即将推出的低功耗 CPU 核心。此前,内核只能将这类尚未识别的核心归为“未知”类型。
除了新增 AMD 核心类型,7.3 版本还统一了 CPU 核心类型的处理机制。此前 Intel 和 AMD 分别使用厂商自有的核心类型编号,内核现在会将这些厂商特定类型映射到通用 CPU 核心类型,从而减少不同厂商之间的处理差异。
这一调整与 Sashiko AI 机器人发现的代码问题有关。该机器人注意到不同 CPU 厂商的核心类型编号存在差异,容易造成代码理解和处理上的混淆,相关开发工作因此进一步推动了通用核心类型机制的建立。
老旧硬件性能优化与接口调整
7.3 版本的 x86/core 部分还合并了针对老旧 AMD 处理器的一项优化。对于支持 SSE 但不支持 SSE2 的 AMD Athlon XP 时代处理器,内核现在可以在写内存屏障代码中使用 SFENCE 指令。
相关代码还加入了一项 KCFI 优化,可改善较老 Intel 处理器上的相关处理。KCFI 即内核控制流完整性(Kernel Control-Flow Integrity),用于限制内核控制流遭到异常修改。
7.3 版本还对 MSR(Model Specific Register)接口进行了调整。内核将停止使用 32 位 MSR 接口,转而统一采用 64 位接口,以进一步简化代码。32 位 MSR 接口预计会在 7.4 开发周期中正式移除。
调度器多项改进:游戏性能与延迟优化
在调度器方面,7.3 版本同样合并了多项改进。其中一项重点工作针对老旧硬件上的游戏性能,通过调整 cgroup 调度机制改善处理器任务调度。
这组补丁由英特尔工程师 Peter Zijlstra 负责,测试平台采用英特尔 Sandy Bridge 处理器搭配 AMD Radeon RX 580 显卡。开发人员通过调整 cgroup 调度机制,改善了任务权重分配以及运行队列处理方式。
这项工作被称为“flatten the pick”,目标之一是解决 cgroup 调度长期存在的调度行为问题,包括 renice 任务处理不当等情况。新的机制提供 up、max、concur 和 tasks 等 cgroup 权重分配模式,其中默认使用 concur 模式,以获得更精确的权重分配,同时也会带来更高的处理开销。
相关改动还将 cgroup 调度调整为单一运行队列。开发人员公布的测试结果显示,这套机制在老旧硬件平台上的游戏场景中具有一定性能改善。
7.3 版本调度器还针对短时间片任务降低调度延迟。开发人员 Vincent Guittot 公布的 cyclictest 测试结果显示,相关改动可以显著改善部分调度延迟指标。
针对英特尔混合架构处理器,7.3 版本还修复了集群调度中的一个重要问题。由于 P 核和 E 核性能存在区别,系统需要考虑 CPU 核心之间的非对称算力。此次更新进一步改善了这类处理器上的集群负载均衡。
此外,在 NOHZ 负载均衡过程中,7.3 版本现在会优先选择完全空闲的 CPU 核心进行负载均衡,以进一步改善任务分配。NOHZ 机制允许空闲 CPU 减少周期性时钟中断,从而降低不必要的功耗和处理开销。
热门跟贴