IT时代网8月23日消息,Linux内核7.3版本的合并窗口已经在8月17日正式开启。在首个开发周里,x86架构和调度器迎来一批重要改动,重点包括为AMD即将推出的低功耗核心做准备、统一英特尔与AMD的CPU核心类型处理,以及对老旧硬件上的游戏性能做大幅优化。
这次合并新增了AMD新型“低功耗”CPU核心类型支持,内核里对应的标识是AMD_CPU_TYPE_LOW_POWER,专门用来识别AMD将要推出的低功耗核心。在此之前,Linux只能把这类尚未识别的核心笼统归为“未知”类型。除了增加新类型,7.3还统一了CPU核心类型的处理机制——过去英特尔和AMD各用厂商自有的核心类型编号,现在Linux会把它们映射到一套通用的核心类型上,减少不同厂商之间的处理差异。
这套调整和一个名为Sashiko的AI机器人发现的代码问题有关。它注意到不同CPU厂商的核心类型编号存在不一致,容易在代码理解和处理上造成混淆,相关开发工作由此进一步推动了通用核心类型机制的建立。
在x86/core部分,7.3还合并了一项针对老旧AMD处理器的优化。对于支持SSE却不支持SSE2的Athlon XP时代处理器,内核现在可以在写内存屏障代码时使用SFENCE指令;同时加入的KCFI优化,也能改善较老英特尔处理器上的相关处理。KCFI即内核控制流完整性,作用是限制内核控制流被异常修改。MSR接口这边也有变动,内核将停用32位MSR接口、统一改用64位,32位接口预计在7.4开发周期里正式移除。
调度器方面的改动同样不少。其中一组由英特尔工程师Peter Zijlstra负责、面向老旧硬件游戏性能的补丁,通过调整cgroup调度机制改善了处理器任务调度。测试平台采用英特尔Sandy Bridge处理器搭配AMD Radeon RX 580显卡,新机制提供up、max、concur和tasks等cgroup权重分配模式,默认使用concur以获得更精确的权重分配,代价是更高的处理开销;改动还将cgroup调度调整为单一运行队列。开发人员公布的测试结果显示,这套机制在老旧硬件平台的游戏场景里具有一定性能改善。
针对短时间片任务,7.3也降低了调度延迟,Vincent Guittot公布的cyclictest测试显示部分调度延迟指标有显著改善。对于英特尔混合架构处理器,这次更新修复了集群调度里的一个重要问题——由于P核和E核性能不同,系统需要考虑核心之间的非对称算力,更新进一步改善了这类处理器上的集群负载均衡。此外在NOHZ负载均衡过程中,7.3现在会优先挑选完全空闲的核心来分担任务,让分配更合理。
注:本文综合自IT之家等,文中包含AI辅助创作的内容。