Bios 中启用的 C 状态与 Intel_idle 中的相同状态之间有 20 瓦的差异吗?

Bios 中启用的 C 状态与 Intel_idle 中的相同状态之间有 20 瓦的差异吗?

我正在尝试降低英特尔生产的双 Haswell-EP 服务器的空闲功耗。如果我在 UEFI-Bios 中启用 C 状态,则最低功耗约为 80W。但是,如果我在 Bios 中禁用 C 状态并启动系统,则最低功耗永远不会低于 100W。(其他所有条件相同、微代码相同、频率相同、Bios 版本相同)

这令人惊讶,因为在这两种情况下,启动 Debian 后,intel_idle驱动程序都会接管控制权,如 /sys/devices/system/cpu/cpuidle/current_driver 所报告的那样。我看不出有什么理由,为什么功耗会有所不同? powertop并且turbostat报告所有核心的相同 99.9% C6 状态。

功耗通过sensors内置 BMC 控制台测量。

出于与此问题无关的原因,我想在禁用 C 状态的情况下启动,然后让intel_idle驱动程序接管。在 Bios 中禁用 C 状态是否还有其他隐含的区别,我如何才能实现相同的最低功耗?

答案1

通过 BIOS 更改 C 状态时,其他一些参数可能会自动设置为降低性能/功耗。例如:

  • CPU 性能偏差可以改变
  • PCI-E主动状态电源管理(ASPM)可以被禁用;
  • 其他集成组件可设置为提高效率/降低性能。

我经常看到 BIOS 配置过于激进的电源管理设置;我通常在 BIOS 中启用任何 C 状态并将其设置为“平衡/优化”或“性能”配置文件,但将任何 C/P 状态/转换选择留给 Linux 内核。

相关内容