CPU 功率和性能¶
本指南介绍 Clear Linux* OS 中的 CPU 功率和性能机制。
概述¶
现代 x86 CPUs 采用多种功能和技术来平衡性能、能耗和热效率。
默认情况下,Clear Linux OS 优先考虑发挥 CPU 最佳性能,其理念是程序执行得越快,CPU 就能越快返回低功耗空闲状态。排除故障或考虑更改默认值时,了解和评估所有这些技术至关重要。
CPU 节能机制¶
C 状态和 P 状态都属于 CPU 节能机制,CPU 会在不同工况下进入这些机制。权衡的结果是,当再次需要用到 CPU 时,退出这些状态的时间会稍微长一点。
C 状态(空闲状态)¶
C 状态是硬件睡眠状态,当系统确定 CPU 空闲且未执行指令时便会进入该状态。
在 C 状态下,系统通过不断降低每个状态下的时钟频率、电压和功能来降低功耗。
虽然在系统的 UEFI 或 BIOS 配置中通常可以限制或禁用 C 状态,但使用 intel_idle driver 时,这些设置会被覆盖。
要查看当前的 cpuidle 驱动程序,请在终端中运行以下命令:
cat /sys/devices/system/cpu/cpuidle/current_driver
故障排除时,可以通过添加 processor.max_cstate=N intel_idle.max_cstate=N 来使用内核命令行引导参数限制 C 状态,或者使用 idle=poll 完全禁用 C 状态。
注解
- 内核会将 processor.max_cstate=0 改为 processor.max_cstate=1,以使其成为有效值。
- intel_idle.max_cstate=0 会禁用英特尔 Idle 空闲驱动程序,而不是将其设置为 C 状态 0。
P 状态(性能状态)¶
P 状态(在英特尔处理器上也称为 Intel SpeedStep® 技术,而在 AMD 处理器上也称为 Cool’n’Quiet)是 CPU 处于活动中且正在执行指令时进入的状态。
P 状态会根据 CPU 需求调整 CPU 时钟频率和电压,以此来降低功耗。
在系统固件 (UEFI/BIOS) 中通常可以限制或禁用 P 状态。
睿频加速技术¶
部分现代英特尔 CPU 上采用了 英特尔® 睿频加速技术,该技术可在 CPU 未超出指定功率和热阈值时,支持处理器上的核心暂时以高于额定 CPU 时钟频率的频率工作。
睿频加速技术是对 P 状态的扩展。因此,改变或限制 C 状态或 P 状态会影响 CPU 使用睿频加速技术。
睿频加速技术可以在系统的 UEFI 或 BIOS 中禁用。睿频加速技术也可以在 Clear Linux OS 中使用以下命令禁用:
echo 1 | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo
Linux CPU 时钟频率缩放¶
Linux 中的 CPUFreq 子系统允许操作系统通过 CPU 驱动程序和调速程序控制 C-states 和 P-states,因为这些驱动程序和调速程序提供了相应算法,可以定义如何以及何时进入这些状态。
缩放驱动程序¶
对于 Sandy Bridge 这一代或更新一代的现代英特尔处理器,Linux 使用 Intel P-state driver 和 intel_pstate。对于其他处理器,可能默认使用从系统 UEFI 或 BIOS 读取值的 acpi-cpufreq* 驱动程序。
要查看当前的 CPU 频率缩放驱动程序,请在终端中运行以下命令:
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_driver
缩放调速程序¶
Clear Linux OS 将 CPU 调速程序设置为性能,要求 CPU 以最大时钟频率运行。换句话说,CPU 进入 P 状态 P0。虽然这一开始听起来可能有点浪费,但请记住,在没有工作负载的情况下锁定时钟频率并不会导致功耗显著增加。
要查看当前的 CPU 频率缩放调速程序,请在终端中运行以下命令:
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
要更改 CPU 频率缩放调速程序:
禁止 Clear Linux OS 强制使用某些功率和性能设置:
sudo systemctl mask clr-power.timer
更改调速程序。在以下示例中,调速程序设置为性能:
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
所有调速程序的列表可以在有关 CPUFreq Governors 的 Linux 内核文档中找到。
注解
intel_pstate 驱动程序仅支持性能和节能调速程序。
散热管理¶
thermald 是一个用于防止平台过热的 Linux 散热管理守护程序。当超过温度阈值时,thermald 会通过插入 CPU 睡眠循环强制 CPU 进入 C 状态,并调整可用的散热方法。这对笔记本电脑来说尤其有效。
默认情况下,thermald 在 Clear Linux OS 中被禁用。如果检测到电池供电,它会自动启动。通过运行以下命令,可以使用 systemd 服务手动启用 thermald:
sudo systemctl enable --now thermald
有关详细信息,请参阅 thermald 手册页:
man thermald
ThermalMonitor 是一个 GUI 应用程序,可以直观地绘制和记录来自 thermald 的温度数据。要使用 ThermalMonitor,请添加 desktop-apps-extras 捆绑包,并将您的用户帐户添加到 power 组:
sudo swupd bundle-add desktop-apps-extras
sudo usermod -a -G power <USER>
ThermalMonitor
注解
添加新组后,您必须注销并重新登录,然后新组才能生效。