搜索

17.3. CPUfreq 概述

download PDF

在系统上减少功耗和散热输出的最有效方法是 CPUfreq,在 Red Hat Enterprise Linux 8 中的 x86 和 ARM64 架构的支持。CPUfreq (也称为 CPU 加快扩展)是 Linux 内核中的基础架构,它可以扩展 CPU 频率以省电。

CPU 扩展可根据系统负载、响应高级配置和电源接口(ACPI) 事件进行自动完成,或者由用户空间程序手动完成,并且允许实时调整处理器的时钟速度。这可让系统以较低的时钟速度运行来省电。CPUfreq 调控器定义切换频率(无论是快速还是较慢的时钟速度)的规则。

您可以以 root 用户身份使用 cpupower frequency-info 命令来查看 cpufreq 信息。

17.3.1. CPUfreq 驱动程序

以 root 用户身份使用 cpupower frequency-info --driver 命令,您可以查看当前的 CPUfreq 驱动程序。

以下是可用于 CPUfreq 的两种可用驱动程序:

ACPI CPUfreq
高级配置和电源接口 (ACPI) CPUfreq 驱动程序是一个内核驱动程序,它通过 ACPI 控制特定 CPU 的频率,这样可确保内核与硬件之间的通信。
Intel P-state

在 Red Hat Enterprise Linux 8 中,支持 Intel P-state 驱动程序。驱动程序提供了一个界面,用于根据 Intel Xeon E 系列架构或更新的架构控制处理器上的 P-state 选择。

目前,在支持的 CPU 中默认使用 Intel P-state。您可以通过在内核命令行中添加 intel_pstate=disable 命令来切换到 ACPI CPUfreq。

Intel P-state 实施 setpolicy() 回调。驱动程序根据 cpufreq 内核请求的策略决定使用 P-state 的 P-state。如果处理器可以在内部选择其下一个 P-state,则驱动程序会将这一责任卸载到处理器。如果没有,则驱动程序实施算法来选择下一个 P-state。

Intel P-state 提供自己的 sysfs 文件来控制 P-state 选择。这些文件位于 /sys/devices/system/cpu/intel_pstate/ 目录中。对文件所做的任何更改都适用于所有 CPU。

该目录包含以下用于设置 P-state 参数的文件:

  • max_perf_pct 限制驱动程序请求的最大 P-state,以可用性能百分比表示。可以通过 no_turbo 设置来减少可用的 P-state 性能。
  • min_perf_pct 限制驱动程序请求的最少 P-state,以最大 no-turbo 性能级别表示的百分比。
  • no_turbo 将驱动程序限制为在 turbo frequency 频率范围下选择 P-state。
  • turbo_pct 显示 turbo 范围内硬件支持的总性能百分比。这个号码独立于 turbo 已被禁用。
  • num_pstates 显示硬件支持的 P-states 数量。这个号码与 turbo 是否已被禁用无关。

其他资源

  • cpupower-frequency-info(1) man page

17.3.2. Core CPUfreq governors

CPUfreq governor 定义系统 CPU 的电源特征,后者反过来会影响 CPU 性能。每个 governor 在工作负载方面都有自己的独特行为、目的和适用性。以 root 用户身份使用 cpupower frequency-info --governor 命令,您可以查看可用的 CPUfreq governor。

Red Hat Enterprise Linux 8 包括多个 core CPUfreq governor:

cpufreq_performance
它强制 CPU 使用最高可能时钟频率。这个频率是静态设置的,不会更改。因此,这一特定监管器不提供节能功能。它只适用于在较长时间内有大量负载,且在 CPU 很少或永不空闲时才出现。
cpufreq_powersave
它强制 CPU 使用最低可能的时钟频率。这个频率是静态设置的,不会更改。该 governor 提供最大节能效果,但以最低 CPU 性能为代价。术语 "powersave" 有时可能并不准确,因为在原则上,在一个慢的 CPU 中有完全负载会比一个没有负载的快速 CPU 消耗更多能源。因此,虽然建议将 CPU 设置为在预期的低活动期间使用 powersave governor,但该期间任何意外的高负载都可能导致系统实际消耗更多电源。Powersave governor 对 CPU 速度的限制比对节能更有效果。这对于可能会有过度负载问题的系统和环境中最有用。
cpufreq_ondemand
这是一个动态监管器,您可以使用它启用 CPU 以获得系统负载高时的最大时钟频率,以及系统空闲时的最小时钟频率。虽然这允许系统根据系统负载而相应地调整功耗,但在频率切换之间会牺牲延迟。因此,如果系统在空闲和高工作负载间切换过度频频时,通过 ondemand governor 获得的性能或节能方面的好处会因为延迟问题而降低。对于大多数系统,ondemand governor 可以在散热、功耗、性能和可管理性之间提供最佳折衷。当系统只在一天的特定时间段忙碌时,ondemand governor 会根据负载自动切换最大和最小频率,而不进行进一步的干预。
cpufreq_userspace
它允许用户空间程序或以 root 身份运行的任何进程来设置频率。在所有 governor 中,用户空间是最可自定义的,具体取决于其配置方式,它可以为您的系统提供在性能和功耗的最佳平衡。
cpufreq_conservative
ondemand governor 类似,conservative governor 还根据使用情况调整时钟频率。但是,conservative governor 会以更加渐进的方式切换时钟频率。这意味着,conservative governor 会通过评估对负载的最佳效果来调整时钟频率,而不是只在最大和最小值间进行选择。虽然这可能会在节能方面带来显著效果,但它可能会比 ondemand governor 有更多延迟。
注意

您可以使用 cron 任务启用一个 governor。这可让您在一天的指定时间自动设置特定的 governor。因此,您可以在空闲时间(如工作时间后)指定一个低频率 governor,并在有大量负载时返回到更高频率的调控器。

有关如何启用特定监管器的步骤,请参阅设置 CPUfreq governor

17.3.3. Intel P-state CPUfreq governor

默认情况下,Intel P-state 驱动程序使用活动模式运行,并带有硬件 p-state (HWP),具体取决于 CPU 支持 HWP。

以 root 用户身份使用 cpupower frequency-info --governor 命令,您可以查看可用的 CPUfreq governor。

注意

与相同名称的内核 CPUfreq governor 相比,performancepowersave Intel P-state CPUfreq governor 的功能是不同的。

Intel P-state 驱动程序可在以下三种不同的模式下运行:

带有硬件管理的 P-states 的活跃模式

当使用 HWP 的活跃模式时,Intel P-state 驱动程序指示 CPU 执行 P-state 选择。驱动程序可以提供频率提示。但是最终选择取决于 CPU 内部逻辑。在带有 HWP 的活跃模式中,Intel P-state 驱动程序提供了两个 P-state 选择算法:

  • performance :使用 performance governor 时,该驱动程序指示内部 CPU 逻辑性能为面向性能的。允许的 P-states 范围限制为驱动程序允许使用的范围的上限。
  • powersave :使用 powersave governor,该驱动程序指示内部 CPU 逻辑为节能。
没有硬件管理的 P-states 活跃的模式

在使用没有 HWP 的活跃模式中,Intel P-state 驱动程序提供了两个 P-state 选择算法:

  • performance :使用 performance governor 时,该驱动程序选择允许使用的最大 P-state。
  • powersave :使用 powersave governor,驱动程序选择 P-states proportional to current CPU 使用率。此行为与 ondemand CPUfreq core governor 类似。
被动模式
当使用 passive 模式时,Intel P-state 驱动程序的功能与传统的 CPUfreq 扩展驱动程序相同。所有可用的通用 CPUFreq 内核控制器都可使用。

17.3.4. 设置 CPUfreq 调控器

所有 CPUfreq 驱动程序作为 kernel-tools 软件包的一部分构建,并自动选择。要设置 CPUfreq,您需要选择一个监管器。

前提条件

  • 要使用 cpupower,请安装 kernel-tools 软件包:

    # yum install kernel-tools

流程

  1. 查看哪些 governor 可用于特定 CPU:

    # cpupower frequency-info --governors
    analyzing CPU 0:
      available cpufreq governors: performance powersave
  2. 在所有 CPU 上启用其中一个 governor:

    # cpupower frequency-set --governor performance

    根据您的要求,将 performance governor 替换为 cpufreq governor 名称。

    要只在特定内核上启用 governor,请使用 -c,其范围或以逗号分隔的 CPU 编号列表。例如,要为 CPU 1-3 和 5 启用 userspace governor,请使用:

    # cpupower -c 1-3,5 frequency-set --governor cpufreq_userspace
注意

如果没有安装 kernel-tools 软件包,可以在 /sys/devices/system/cpu/cpuid/cpufreq/ 目录中查看 CPUfreq 设置。可以通过写入这些可调项来更改设置和值。例如,要将 cpu0 的最小时钟速度设置为 360 MHz,请使用:

# echo 360000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq

验证

  • 验证 governor 是否已启用:

    # cpupower frequency-info
    analyzing CPU 0:
      driver: intel_pstate
      CPUs which run at the same hardware frequency: 0
      CPUs which need to have their frequency coordinated by software: 0
      maximum transition latency:  Cannot determine or is not supported.
      hardware limits: 400 MHz - 4.20 GHz
      available cpufreq governors: performance powersave
      current policy: frequency should be within 400 MHz and 4.20 GHz.
            The governor "performance" may decide which speed to use within this range.
      current CPU frequency: Unable to call hardware
      current CPU frequency: 3.88 GHz (asserted by call to kernel)
      boost state support:
        Supported: yes
        Active: yes

    当前策略显示当前启用的 cpufreq governor。在这种情况下,它的 performance

其他资源

  • cpupower-frequency-info(1)cpupower-frequency-set(1) man page
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.