我正在尝试降低英特尔生产的双 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 内核。