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-statesP-states,因为这些驱动程序和调速程序提供了相应算法,可以定义如何以及何时进入这些状态。

缩放驱动程序

对于 Sandy Bridge 这一代或更新一代的现代英特尔处理器,Linux 使用 Intel P-state driverintel_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 频率缩放调速程序:

  1. 禁止 Clear Linux OS 强制使用某些功率和性能设置:

    sudo systemctl mask clr-power.timer
    
  2. 更改调速程序。在以下示例中,调速程序设置为性能:

    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

注解

添加新组后,您必须注销并重新登录,然后新组才能生效。