
英特尔 Linux 工程师正在为 Linux 内核中的英特尔热管理驱动程序(Intel Thermal driver)做准备,以支持“定向封装热中断”(Directed Package Thermal Interrupts)这一新功能,该功能是近期英特尔 CPU 的一项新增特性。
与以往将封装级别的热中断广播给所有 CPU 核心不同,较新的英特尔 CPU 允许仅将此类中断发送给一个被指定负责处理整个封装事件的 CPU 核心。这减少了资源争用,并可避免无谓地唤醒可能处于空闲状态的 CPU 核心。
目前这些 Linux 补丁并未明确指出哪些新型英特尔 CPU 核心支持这一“定向封装热中断”功能。但该功能上个月刚刚被加入《英特尔软件开发人员手册》(Intel Software Developer Manual),可能意味着它将随 Nova Lake ~ Diamond Rapids 架构一同推出。不过补丁的说明信中仅提到“较新的”英特尔 CPU 支持此功能,因此最终哪些处理器会具备该支持,还需在实践中进一步验证。
该补丁系列对该新英特尔热管理功能的说明如下:
“目前,封装级别的热中断会被广播到封装内的所有 CPU。实际上,只需一个 CPU 即可处理封装范围内的事件。此外,广播机制可能导致资源争用。例如,在硬件反馈接口(Hardware Feedback Interface)更新时触发的热中断:封装内所有 CPU 都会接收到中断,然后竞相获取锁,以更新一个所有 CPU 共享的数据结构。而原本处于空闲状态的 CPU 也因此被无谓地唤醒。
较新的英特尔处理器允许将封装级别的热中断仅定向发送给那些明确请求接收的 CPU。CPU 可通过设置 IA32_THERM_INTERRUPT 寄存器的第 25 位来“注册”接收。硬件则通过设置 IA32_PACKAGE_THERM_STATUS 寄存器的第 25 位来确认该请求。
本补丁系列启用了定向封装热中断功能,并利用 CPU 热插拔基础设施(CPU hotplug infrastructure)为每个封装指定一个处理核心(handler CPU)。若当前处理核心下线(offline),则会自动选择一个新的 CPU 接替。”
所有这些微小的改进不断累积,持续提升着 Linux 上英特尔 CPU 的整体运行体验。
转自 Intel Preps Linux For Directed Package Thermal Interrupts – Phoronix
Linuxeden开源社区