开源新闻短文资讯

Linux准备混合SMP修复程序,以避免即将推出的笔记本电脑出现为11个Socket Monsters情况

正在为主线Linux 6.4内核制定修复程序,并标记为回溯到现有稳定内核系列,以修复英特尔混合系统的x86拓扑报告。内核中的拓扑错误在Meteor Lake笔记本电脑中变得更加明显,目前内部英特尔测试笔记本电脑会报告系统具有11个CPU插槽,而不是所有核心都包含在一个CPU插槽内的正确核心数。

虽然英特尔混合CPU设计自2021年末以来已经很常见,但Linux内核到目前为止还没有正确处理“smp_num_siblings”变量,而这个变量又会传播到用户空间,并可能报告不正确的信息。在即将推出的英特尔Meteor Lake P平台的情况下,使用常见的lscpu命令的Linux内核将报告系统具有11个CPU插槽,每个插槽内仅有一个核心。实际上,这是一款单插槽笔记本电脑,具有16个总核心。

除了将错误的信息传播到用户空间以供信息目的之外,这种不正确的smp_num_siblings处理可能会对Linux内核调度器决策产生影响。正如英特尔工程师张锐所评论的那样,“这也预计会使调度器做一些奇怪的事情。”

他进一步解释了这个挂起的补丁

“传统上,系统中的所有CPU都具有相同数量的SMT兄弟线程。这在混合处理器中发生了变化,其中一些逻辑CPU具有兄弟线程,而其他逻辑CPU则没有。

今天,当每个CPU线程被启动时,CPU引导代码会设置全局变量smp_num_siblings。最后一个启动的线程将使用线程的兄弟线程数来覆盖它。最后一个启动的线程将“获胜”。如果线程是Pcore,则smp_num_siblings == 2。如果它是Ecore,则smp_num_siblings == 1。

smp_num_siblings描述了系统是否支持SMT。它应该指定所有核心中最大的SMT线程数。

通过始终增加其值,确保smp_num_siblings表示系统范围内的最大兄弟线程数。永远不要允许它减少。

在MeteorLake-P平台上,这解决了Ecore CPU在探测Ecore CPU时不在任何CPU兄弟映射中更新的问题,因为当探测Ecore CPU时,系统被视为UP系统。”

该补丁昨天被TIP的x86/urgent分支采用。随后,这将作为紧急修复程序提交给Linux 6.4内核,很可能在周末完成。该补丁还标记为回溯到现有的Linux内核稳定版本,以确保在英特尔混合平台上正确报告SMP兄弟计数。

对这篇文章感觉如何?

太棒了
0
不错
0
爱死了
0
不太好
0
感觉很糟
0

You may also like

Leave a reply

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

More in:开源新闻