搜索

10.6. 使用 PolicyGenTemplates CR 配置电源状态

download PDF

对于低延迟和高性能部署,需要禁用或限制 C-states 和 P-states。使用这个配置,CPU 以恒定的频率运行,通常是最大 turbo 频率。这样可确保 CPU 始终以最大速度运行,这会导致高性能和低延迟。这会导致工作负载的最佳延迟。但是,这也会导致最高的功耗,这可能并不适用于所有工作负载。

工作负载可以归类为关键或非关键状态,需要为高性能和低延迟禁用 C-state 和 P-state 设置,而非关键工作负载在某些延迟和性能方面使用 C-state 和 P-state 设置。您可以使用 GitOps Zero Touch Provisioning (ZTP) 配置以下三个电源状态:

  • 高性能模式以最高的功耗提供大量低延迟。
  • 性能模式在相对高功耗时提供低延迟。
  • 节能通过增加延迟来降低功耗。

默认配置用于低延迟性能模式。

PolicyGenTemplate 自定义资源 (CR) 允许您覆盖与 ztp-site-generate 容器中提供的 GitOps 插件提供的基本源 CR 之上的额外配置详情。

根据 group-du-sno-ranGen.yaml 中的 PolicyGenTemplate CR,通过更新生成的 PerformanceProfile CR 中的 workloadHints 字段来配置电源状态。

以下常见先决条件适用于配置所有三个电源状态。

先决条件

  • 您已创建了管理自定义站点配置数据的 Git 存储库。存储库必须可从 hub 集群访问,并定义为 Argo CD 的源存储库。
  • 您已遵循"准备 GitOps ZTP 站点配置存储库"中所述的步骤。

10.6.1. 使用 PolicyGenTemplate CR 配置性能模式

按照以下示例,根据 group-du-sno-ranGen.yaml 中的 PolicyGenTemplate CR 更新生成的 PerformanceProfile CR 中的 workloadHints 字段来设置性能模式。

性能模式在相对高功耗时提供低延迟。

先决条件

  • 您已按照"配置主机固件以实现低延迟和高性能"中的指导配置了与性能相关的 BIOS。

流程

  1. out/argocd/example/policygentemplates 中的 group-du-sno-ranGen.yaml 参考文件中为 PerformanceProfile 更新 PolicyGenTemplate 条目,如下所示设置性能模式。

    - fileName: PerformanceProfile.yaml
      policyName: "config-policy"
      metadata:
        [...]
      spec:
        [...]
        workloadHints:
             realTime: true
             highPowerConsumption: false
             perPodPowerManagement: false
  2. 提交 Git 中的 PolicyGenTemplate 更改,然后推送到由 GitOps ZTP argo CD 应用程序监控的 Git 存储库。

10.6.2. 使用 PolicyGenTemplate CR 配置高性能模式

按照以下示例,根据 group-du-sno-ranGen.yaml 中的 PolicyGenTemplate CR 更新生成的 PerformanceProfile CR 中的 workloadHints 字段来设置高性能模式。

高性能模式以最高的功耗提供大量低延迟。

先决条件

  • 您已按照"配置主机固件以实现低延迟和高性能"中的指导配置了与性能相关的 BIOS。

流程

  1. out/argocd/example/policygentemplates 中的 group-du-sno-ranGen.yaml 参考文件中为 PerformanceProfile 更新 PolicyGenTemplate 条目,如下所示设置高性能模式。

    - fileName: PerformanceProfile.yaml
      policyName: "config-policy"
      metadata:
        [...]
      spec:
        [...]
        workloadHints:
             realTime: true
             highPowerConsumption: true
             perPodPowerManagement: false
  2. 提交 Git 中的 PolicyGenTemplate 更改,然后推送到由 GitOps ZTP argo CD 应用程序监控的 Git 存储库。

10.6.3. 使用 PolicyGenTemplate CR 配置节能模式

按照以下示例,根据 group-du-sno-ranGen.yaml 中的 PolicyGenTemplate CR 更新生成的 PerformanceProfile CR 中的 workloadHints 字段来设置节能模式。

节能模式会在增加延迟的情况下平衡功耗。

先决条件

  • 您在 BIOS 中启用了 C-states 和 OS 控制的 P-states。

流程

  1. out/argocd/example/policygentemplates 中的 group-du-sno-ranGen.yaml 参考文件中为 PerformanceProfile 更新 PolicyGenTemplate 条目,如下所示配置节能模式。建议您通过额外的内核参数对象为节能模式配置 CPU 调控器。

    - fileName: PerformanceProfile.yaml
      policyName: "config-policy"
      metadata:
        [...]
      spec:
        [...]
        workloadHints:
             realTime: true
             highPowerConsumption: false
             perPodPowerManagement: true
        [...]
        additionalKernelArgs:
           - [...]
           - "cpufreq.default_governor=schedutil" 1
    1
    建议使用 schedutil governor,但可以使用的其他 governor 包括 ondemandpowersave
  2. 提交 Git 中的 PolicyGenTemplate 更改,然后推送到由 GitOps ZTP argo CD 应用程序监控的 Git 存储库。

验证

  1. 使用以下命令,从标识的节点列表中选择部署的集群中的 worker 节点:

    $ oc get nodes
  2. 使用以下命令登录到节点:

    $ oc debug node/<node-name>

    <node-name> 替换为您要验证电源状态的节点的名称。

  3. /host 设置为 debug shell 中的根目录。debug pod 在 pod 中的 /host 中挂载主机的 root 文件系统。通过将根目录改为 /host,您可以运行主机可执行路径中包含的二进制文件,如下例所示:

    # chroot /host
  4. 运行以下命令验证应用的电源状态:

    # cat /proc/cmdline

预期输出

  • 对于节能模式,intel_pstate=passive

10.6.4. 最大化节能

建议限制最大 CPU 频率,以实现最大节能。在非关键工作负载 CPU 中启用 C-states,而不会限制最大 CPU 频率,从而提高了关键 CPU 的频率。

通过更新 sysfs 插件字段来最大化节能,为参考配置的 Tuned PerformancePatch CR 中的 max_perf_pct 设置适当的值。这个示例基于 group-du-sno-ranGen.yaml 描述了限制最大 CPU 频率的步骤。

先决条件

  • 您已配置了节能模式,如"使用 PolicyGenTemplate CR 来配置节能模式"中所述。

流程

  1. out/argocd/example/policygentemplates 中的 group-du-sno-ranGen.yaml 参考文件中为 Tuned PerformancePatch 更新 PolicyGenTemplate 条目。要最大化节能,请添加 max_perf_pct,如下例所示:

    - fileName: TunedPerformancePatch.yaml
          policyName: "config-policy"
          spec:
            profile:
              - name: performance-patch
                data: |
                  [...]
                  [sysfs]
                  /sys/devices/system/cpu/intel_pstate/max_perf_pct=<x> 1
    1
    max_perf_pct 控制 cpufreq 驱动程序的最大频率,以最大百分比的形式设置支持的 CPU 频率。这个值适用于所有 CPU。您可以检查 /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq 中的最大支持频率。作为起点,您可以使用以 All Cores Turbo 频率封装所有 CPU 的百分比。All Cores Turbo 频率是所有内核在运行的频率,当内核完全占用时。
    注意

    要最大化节能,请设置一个较低的值。为 max_perf_pct 设置较低值会限制最大 CPU 频率,从而减少功耗,但可能会影响性能。试验不同的值并监控系统性能和功耗,以查找您的用例的最佳设置。

  2. 提交 Git 中的 PolicyGenTemplate 更改,然后推送到由 GitOps ZTP argo CD 应用程序监控的 Git 存储库。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.