IT之家 8 月 22 日消息,Linux 内核 7.3 版本的合并窗口已于 8 月 17 日正式开启。在首个开发周,x86 架构和调度器迎来了多项重要更新,包括为 AMD 即将推出的低功耗核心做准备、统一 Intel 与 AMD 的 CPU 核心类型处理,以及针对老旧硬件游戏性能的大幅优化。
例如,Linux 7.3 内核合并了 AMD 新型“低功耗”CPU 核心类型支持,同时统一了英特尔与 AMD 不同 CPU 核心类型的处理方式,并针对游戏性能、混合架构处理器以及调度延迟等方面加入多项调度器改进。

Linux 7.3 的 x86/cpu 相关代码已经进入合并窗口,其中新增了 AMD_CPU_TYPE_LOW_POWER 类型,用于识别 AMD 即将推出的低功耗 CPU 核心。此前 Linux 只能将这类尚未识别的核心归为“未知”类型。
除了增加新的 AMD 核心类型,Linux 7.3 还统一了 CPU 核心类型的处理机制。此前英特尔和 AMD 分别使用厂商自有的核心类型编号,Linux 现在会将这些厂商特定类型映射到通用 CPU 核心类型,从而减少不同厂商之间的处理差异。
这一调整与此前 Sashiko AI 机器人发现的代码问题有关。该机器人注意到不同 CPU 厂商的核心类型编号存在差异,容易造成代码理解和处理上的混淆,因此相关开发工作进一步推动了通用核心类型机制的建立。
Linux 7.3 的 x86/core 部分还合并了针对老旧 AMD 处理器的一项优化。对于支持 SSE 但不支持 SSE2 的 AMD Athlon XP 时代处理器,内核现在可以在写内存屏障代码中使用 SFENCE 指令。
IT之家注意到,相关代码还加入了一项 KCFI 优化,可以改善较老英特尔处理器上的相关处理。KCFI 即内核控制流完整性(Kernel Control-Flow Integrity),用于限制内核控制流遭到异常修改。
Linux 7.3 还对 MSR(Model Specific Register)接口进行了调整。内核将停止使用 32 位 MSR 接口,转而统一采用 64 位接口,以进一步简化代码。32 位 MSR 接口预计会在 Linux 7.4 开发周期中正式移除。

在调度器方面,Linux 7.3 同样合并了多项改进。其中一项重点工作针对老旧硬件上的游戏性能,通过调整 cgroup 调度机制改善处理器任务调度。
这组补丁由英特尔工程师 Peter Zijlstra 负责,测试平台采用英特尔 Sandy Bridge 处理器搭配 AMD Radeon RX 580 显卡。开发人员通过调整 cgroup 调度机制,改善了任务权重分配以及运行队列处理方式。
这项工作被称为“flatten the pick”,目标之一是解决 cgroup 调度长期存在的调度行为问题,包括 renice 任务处理不当等情况。新的机制提供 up、max、concur 和 tasks 等 cgroup 权重分配模式,其中默认使用 concur 模式,以获得更精确的权重分配,同时也会带来更高的处理开销。

相关改动还将 cgroup 调度调整为单一运行队列。开发人员公布的测试结果显示,这套机制在老旧硬件平台上的游戏场景中具有一定性能改善。
Linux 7.3 调度器还针对短时间片任务降低调度延迟。开发人员 Vincent Guittot 公布的 cyclictest 测试结果显示,相关改动可以显著改善部分调度延迟指标。
针对英特尔混合架构处理器,Linux 7.3 还修复了集群调度中的一个重要问题。由于 P 核和 E 核性能存在区别,系统需要考虑 CPU 核心之间的非对称算力。此次更新进一步改善了这类处理器上的集群负载均衡。
此外,在 NOHZ 负载均衡过程中,Linux 7.3 现在会优先选择完全空闲的 CPU 核心进行负载均衡,以进一步改善任务分配。NOHZ 机制允许空闲 CPU 减少周期性时钟中断,从而降低不必要的功耗和处理开销。