10.6. 使用 PolicyGenTemplates CR 配置电源状态
对于低延迟和高性能部署,需要禁用或限制 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。
流程
在
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
-
提交 Git 中的
PolicyGenTemplate
更改,然后推送到由 GitOps ZTP argo CD 应用程序监控的 Git 存储库。
10.6.2. 使用 PolicyGenTemplate CR 配置高性能模式
按照以下示例,根据 group-du-sno-ranGen.yaml
中的 PolicyGenTemplate
CR 更新生成的 PerformanceProfile
CR 中的 workloadHints
字段来设置高性能模式。
高性能模式以最高的功耗提供大量低延迟。
先决条件
- 您已按照"配置主机固件以实现低延迟和高性能"中的指导配置了与性能相关的 BIOS。
流程
在
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
-
提交 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。
流程
在
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 包括ondemand
和powersave
。
-
提交 Git 中的
PolicyGenTemplate
更改,然后推送到由 GitOps ZTP argo CD 应用程序监控的 Git 存储库。
验证
使用以下命令,从标识的节点列表中选择部署的集群中的 worker 节点:
$ oc get nodes
使用以下命令登录到节点:
$ oc debug node/<node-name>
将
<node-name>
替换为您要验证电源状态的节点的名称。将
/host
设置为 debug shell 中的根目录。debug pod 在 pod 中的/host
中挂载主机的 root 文件系统。通过将根目录改为/host
,您可以运行主机可执行路径中包含的二进制文件,如下例所示:# chroot /host
运行以下命令验证应用的电源状态:
# 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 来配置节能模式"中所述。
流程
在
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 频率,从而减少功耗,但可能会影响性能。试验不同的值并监控系统性能和功耗,以查找您的用例的最佳设置。-
提交 Git 中的
PolicyGenTemplate
更改,然后推送到由 GitOps ZTP argo CD 应用程序监控的 Git 存储库。