第 15 章 使用性能配置集调整节点以实现低延迟
使用集群性能配置集调整节点以实现低延迟。您可以限制 infra 和应用程序容器的 CPU,配置巨页、Hyper-Threading,并为对延迟敏感的进程配置 CPU 分区。
15.1. 创建性能配置集
您可以使用 Performance Profile Creator (PPC) 工具创建集群性能配置集。PPC 是 Node Tuning Operator 的功能。
PPC 将有关集群的信息与用户提供的配置相结合,以生成适合您的硬件、拓扑和用例的性能配置集。
性能配置集只适用于集群直接访问底层硬件资源的裸机环境。您可以为单节点 OpenShift 和多节点集群配置性能配置集。
以下是在集群中创建和应用性能配置集的高级工作流:
- 
						为您要使用性能配置为目标的节点创建机器配置池 (MCP)。在单节点 OpenShift 集群中,您必须使用 masterMCP,因为集群中只有一个节点。
- 
						使用 must-gather命令收集有关集群的信息。
- 使用 PPC 工具使用以下方法之一创建性能配置集: - 使用 Podman 运行 PPC 工具。
- 使用 wrapper 脚本运行 PPC 工具。
 
- 为您的用例配置性能配置集,并将性能配置集应用到集群。
15.1.1. 关于性能配置集创建器
Performance Profile Creator (PPC) 是一个命令行工具,由 Node Tuning Operator 提供,它可帮助您为集群创建性能配置集。
					最初,您可以使用 PPC 工具处理 must-gather 数据来显示集群的关键性能配置,包括以下信息:
				
- 使用分配的 CPU ID 进行 NUMA 单元分区
- 超线程节点配置
您可以使用这些信息来帮助配置性能配置集。
运行 PPC
为 PPC 工具指定性能配置参数,以生成适合您的硬件、拓扑和用例的推荐性能配置集。
您可以使用以下方法之一运行 PPC:
- 使用 Podman 运行 PPC
- 使用 wrapper 脚本运行 PPC
使用 wrapper 脚本将一些更精细的 Podman 任务抽象到可执行脚本中。例如,wrapper 脚本处理诸如拉取和运行所需容器镜像、将目录挂载到容器等任务,并通过 Podman 直接向容器提供参数。两种方法都获得相同的结果。
15.1.2. 为性能调整创建机器配置池到目标节点
对于多节点集群,您可以定义机器配置池 (MCP) 来识别您要使用性能配置集配置的目标节点。
					在单节点 OpenShift 集群中,您必须使用 master MCP,因为集群中只有一个节点。您不需要为单节点 OpenShift 集群创建单独的 MCP。
				
先决条件
- 
							有 cluster-admin角色访问权限。
- 
							已安装 OpenShift CLI(oc)。
流程
- 运行以下命令为配置标记目标节点: - oc label node <node_name> node-role.kubernetes.io/worker-cnf="" - $ oc label node <node_name> node-role.kubernetes.io/worker-cnf=""- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 将<node_name>替换为节点的名称。本例应用worker-cnf标签。
 
- 创建包含目标节点的 - MachineConfigPool资源:- 创建定义 - MachineConfigPool资源的 YAML 文件:- mcp-worker-cnf.yaml文件示例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来应用 - MachineConfigPool资源:- oc apply -f mcp-worker-cnf.yaml - $ oc apply -f mcp-worker-cnf.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - machineconfigpool.machineconfiguration.openshift.io/worker-cnf created - machineconfigpool.machineconfiguration.openshift.io/worker-cnf created- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
验证
- 运行以下命令,检查集群中的机器配置池: - oc get mcp - $ oc get mcp- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-58433c7c3c1b4ed5ffef95234d451490 True False False 3 3 3 0 6h46m worker rendered-worker-168f52b168f151e4f853259729b6azc4 True False False 2 2 2 0 6h46m worker-cnf rendered-worker-cnf-168f52b168f151e4f853259729b6azc4 True False False 1 1 1 0 73s - NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-58433c7c3c1b4ed5ffef95234d451490 True False False 3 3 3 0 6h46m worker rendered-worker-168f52b168f151e4f853259729b6azc4 True False False 2 2 2 0 6h46m worker-cnf rendered-worker-cnf-168f52b168f151e4f853259729b6azc4 True False False 1 1 1 0 73s- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
15.1.3. 为 PPC 收集集群数据
					Performance Profile Creator(PPC)工具需要 must-gather 数据。作为集群管理员,运行 must-gather 命令来捕获集群的信息。
				
先决条件
- 
							使用具有 cluster-admin角色的用户访问集群。
- 
							已安装 OpenShift CLI(oc)。
- 您识别要使用性能配置集配置的目标 MCP。
流程
- 
							进入存储 must-gather数据的目录。
- 运行以下命令来收集集群信息: - oc adm must-gather - $ oc adm must-gather- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 该命令在本地目录中创建带有 - must-gather数据的文件夹,其命名格式类似如下:- must-gather.local.1971646453781853027。
- 可选:从 - must-gather目录创建一个压缩文件:- tar cvaf must-gather.tar.gz <must_gather_folder> - $ tar cvaf must-gather.tar.gz <must_gather_folder>- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 使用must-gather数据文件夹的名称替换。
 注意- 如果您正在运行性能配置集 Creator wrapper 脚本,则需要压缩输出。 
15.1.4. 使用 Podman 运行 Performance Profile Creator
作为集群管理员,您可以使用带有 Performance Profile Creator (PPC) 的 Podman 来创建性能配置集。
有关 PPC 参数的更多信息,请参阅 "Performance Profile Creator 参数" 部分。
						PPC 使用集群中的 must-gather 数据来创建性能配置集。如果您对集群进行任何更改,如重新标记针对性能配置的节点,则必须在再次运行 PPC 前重新创建 must-gather 数据。
					
先决条件
- 
							使用具有 cluster-admin角色的用户访问集群。
- 在裸机硬件上安装的集群。
- 
							已安装 podman和 OpenShift CLI (oc)。
- 访问 Node Tuning Operator 镜像。
- 您识别包含用于配置的目标节点的机器配置池。
- 
							您可以访问集群的 must-gather数据。
流程
- 运行以下命令检查机器配置池: - oc get mcp - $ oc get mcp- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-58433c8c3c0b4ed5feef95434d455490 True False False 3 3 3 0 8h worker rendered-worker-668f56a164f151e4a853229729b6adc4 True False False 2 2 2 0 8h worker-cnf rendered-worker-cnf-668f56a164f151e4a853229729b6adc4 True False False 1 1 1 0 79m - NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-58433c8c3c0b4ed5feef95434d455490 True False False 3 3 3 0 8h worker rendered-worker-668f56a164f151e4a853229729b6adc4 True False False 2 2 2 0 8h worker-cnf rendered-worker-cnf-668f56a164f151e4a853229729b6adc4 True False False 1 1 1 0 79m- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,使用 Podman 向 - registry.redhat.io进行身份验证:- podman login registry.redhat.io - $ podman login registry.redhat.io- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Username: <user_name> Password: <password> - Username: <user_name> Password: <password>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 可选:运行以下命令来显示 PPC 工具的帮助信息: - podman run --rm --entrypoint performance-profile-creator registry.redhat.io/openshift4/ose-cluster-node-tuning-rhel9-operator:v4.16 -h - $ podman run --rm --entrypoint performance-profile-creator registry.redhat.io/openshift4/ose-cluster-node-tuning-rhel9-operator:v4.16 -h- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 要显示集群的信息,请运行以下命令使用 - log参数运行 PPC 工具:- podman run --entrypoint performance-profile-creator -v <path_to_must_gather>:/must-gather:z registry.redhat.io/openshift4/ose-cluster-node-tuning-rhel9-operator:v4.16 --info log --must-gather-dir-path /must-gather - $ podman run --entrypoint performance-profile-creator -v <path_to_must_gather>:/must-gather:z registry.redhat.io/openshift4/ose-cluster-node-tuning-rhel9-operator:v4.16 --info log --must-gather-dir-path /must-gather- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 
									--entrypoint performance-profile-creator将性能配置集创建者定义为podman的新入口点。
- -v <path_to_must_gather>指定到以下组件之一的路径:- 
											包含 must-gather数据的目录。
- 
											包含 must-gather解压缩的 .tar 文件的现有目录。
 
- 
											包含 
- --info log指定输出格式的值。- 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 
									
- 运行以下命令来创建性能配置集。这个示例使用示例 PPC 参数和值: - podman run --entrypoint performance-profile-creator -v <path_to_must_gather>:/must-gather:z registry.redhat.io/openshift4/ose-cluster-node-tuning-rhel9-operator:v4.16 --mcp-name=worker-cnf --reserved-cpu-count=1 --rt-kernel=true --split-reserved-cpus-across-numa=false --must-gather-dir-path /must-gather --power-consumption-mode=ultra-low-latency --offlined-cpu-count=1 > my-performance-profile.yaml - $ podman run --entrypoint performance-profile-creator -v <path_to_must_gather>:/must-gather:z registry.redhat.io/openshift4/ose-cluster-node-tuning-rhel9-operator:v4.16 --mcp-name=worker-cnf --reserved-cpu-count=1 --rt-kernel=true --split-reserved-cpus-across-numa=false --must-gather-dir-path /must-gather --power-consumption-mode=ultra-low-latency --offlined-cpu-count=1 > my-performance-profile.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - -v <path_to_must_gather>指定到以下组件之一的路径:- 
											包含 must-gather数据的目录。
- 
											包含 must-gather解压缩的 .tar 文件的目录。
 
- 
											包含 
- 
									--mcp-name=worker-cnf指定worker-=cnf机器配置池。
- 
									--reserved-cpu-count=1指定一个保留 CPU。
- 
									--rt-kernel=true启用实时内核。
- 
									--split-reserved-cpus-across-numa=false禁用跨 NUMA 节点的保留 CPU 分割。
- 
									--power-consumption-mode=ultra-low-latency指定最大延迟,这会增加功耗。
- --offlined-cpu-count=1指定一个离线 CPU。注意- 本例中的 - mcp-name参数根据- oc get mcp命令的输出设置为- worker-cnf。对于单节点 OpenShift,请使用- --mcp-name=master。- 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 运行以下命令,查看创建的 YAML 文件: - cat my-performance-profile.yaml - $ cat my-performance-profile.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 应用生成的配置集: - oc apply -f my-performance-profile.yaml - $ oc apply -f my-performance-profile.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - performanceprofile.performance.openshift.io/performance created - performanceprofile.performance.openshift.io/performance created- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
15.1.5. 运行性能配置集 Creator wrapper 脚本
wrapper 脚本简化了使用 Performance Profile Creator (PPC) 工具创建性能配置集的过程。脚本处理诸如拉取和运行所需容器镜像、将目录挂载到容器等任务,并通过 Podman 直接向容器提供参数。
有关 Performance Profile Creator 参数的更多信息,请参阅 "Performance Profile Creator 参数" 部分。
						PPC 使用集群中的 must-gather 数据来创建性能配置集。如果您对集群进行任何更改,如重新标记针对性能配置的节点,则必须在再次运行 PPC 前重新创建 must-gather 数据。
					
先决条件
- 
							使用具有 cluster-admin角色的用户访问集群。
- 在裸机硬件上安装的集群。
- 
							已安装 podman和 OpenShift CLI (oc)。
- 访问 Node Tuning Operator 镜像。
- 您识别包含用于配置的目标节点的机器配置池。
- 
							访问 must-gathertarball。
流程
- 在本地机器上创建一个文件,例如 - run-perf-profile-creator.sh:- vi run-perf-profile-creator.sh - $ vi run-perf-profile-creator.sh- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 将以下代码粘贴到文件中: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 为这个脚本中的每个人添加执行权限: - chmod a+x run-perf-profile-creator.sh - $ chmod a+x run-perf-profile-creator.sh- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,使用 Podman 向 - registry.redhat.io进行身份验证:- podman login registry.redhat.io - $ podman login registry.redhat.io- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Username: <user_name> Password: <password> - Username: <user_name> Password: <password>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 可选:运行以下命令来显示 PPC 工具的帮助信息: - ./run-perf-profile-creator.sh -h - $ ./run-perf-profile-creator.sh -h- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 您可以选择使用 - -p选项为 Node Tuning Operator 镜像设置路径。如果您没有设置路径,wrapper 脚本使用默认镜像:- registry.redhat.io/openshift4/ose-cluster-node-tuning-rhel9-operator:v4.16。
- 要显示集群的信息,请运行以下命令使用 - log参数运行 PPC 工具:- ./run-perf-profile-creator.sh -t /<path_to_must_gather_dir>/must-gather.tar.gz -- --info=log - $ ./run-perf-profile-creator.sh -t /<path_to_must_gather_dir>/must-gather.tar.gz -- --info=log- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - -t /<path_to_must_gather_dir>/must-gather.tar.gz指定包含 must-gather tarball 的目录的路径。这是 wrapper 脚本的必要参数。- 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 运行以下命令来创建性能配置集。 - ./run-perf-profile-creator.sh -t /path-to-must-gather/must-gather.tar.gz -- --mcp-name=worker-cnf --reserved-cpu-count=1 --rt-kernel=true --split-reserved-cpus-across-numa=false --power-consumption-mode=ultra-low-latency --offlined-cpu-count=1 > my-performance-profile.yaml - $ ./run-perf-profile-creator.sh -t /path-to-must-gather/must-gather.tar.gz -- --mcp-name=worker-cnf --reserved-cpu-count=1 --rt-kernel=true --split-reserved-cpus-across-numa=false --power-consumption-mode=ultra-low-latency --offlined-cpu-count=1 > my-performance-profile.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 本例使用示例 PPC 参数和值。 - 
									--mcp-name=worker-cnf指定worker-=cnf机器配置池。
- 
									--reserved-cpu-count=1指定一个保留 CPU。
- 
									--rt-kernel=true启用实时内核。
- 
									--split-reserved-cpus-across-numa=false禁用跨 NUMA 节点的保留 CPU 分割。
- 
									--power-consumption-mode=ultra-low-latency指定最大延迟,这会增加功耗。
- --offlined-cpu-count=1指定一个离线 CPU。注意- 本例中的 - mcp-name参数根据- oc get mcp命令的输出设置为- worker-cnf。对于单节点 OpenShift,请使用- --mcp-name=master。
 
- 
									
- 运行以下命令,查看创建的 YAML 文件: - cat my-performance-profile.yaml - $ cat my-performance-profile.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 应用生成的配置集: - oc apply -f my-performance-profile.yaml - $ oc apply -f my-performance-profile.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - performanceprofile.performance.openshift.io/performance created - performanceprofile.performance.openshift.io/performance created- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
15.1.6. Performance Profile Creator 参数
| 参数 | 描述 | 
|---|---|
| 
									 | 
									MCP 的名称;例如,与目标机器对应的  | 
| 
									 | must gather 目录的路径。 
									只有在使用 Podman 运行 PPC 工具时才需要此参数。如果您将 PPC 与 wrapper 脚本搭配使用,请不要使用此参数。反之,使用 wrapper 脚本的  | 
| 
									 | 保留 CPU 的数量。使用大于零的一个自然数字。 | 
| 
									 | 启用实时内核。 
									可能的值:  | 
| 参数 | 描述 | 
|---|---|
| 
									 | 禁用超线程。 
									可能的值:  
									默认值:  警告 
										如果此参数设为  | 
| enable-hardware-tuning | 启用最大 CPU 频率的设置。 要启用此功能,请在以下两个字段中为隔离和保留 CPU 上运行的应用程序设置最大频率: 
 
									这是一个高级功能。如果您配置硬件性能优化,则生成的  | 
| 
									 | 
									这会捕获集群信息。这个参数还需要  可能的值: 
 
									默认:  | 
| 
									 | 离线 CPU 数量。 注意 使用大于零的一个自然数字。如果没有足够的逻辑处理器离线,则会记录错误消息。信息是: Error: failed to compute the reserved and isolated CPUs: please ensure that reserved-cpu-count plus offlined-cpu-count should be in the range [0,1] Error: failed to compute the reserved and isolated CPUs: please specify the offlined CPU count in the range [0,1]  | 
| 
									 | 电源功耗模式。 可能的值: 
 
									默认:  | 
| 
									 | 
									为每个 pod 电源管理启用。如果您将  
									可能的值:  
									默认值:  | 
| 
									 | 要创建的性能配置集的名称。 
									默认: | 
| 
									 | 将保留的 CPU 划分到 NUMA 节点。 
									可能的值:  
									默认值:  | 
| 
									 | 要创建的性能配置集的 kubelet Topology Manager 策略。 可能的值: 
 
									默认:  | 
| 
									 | 在启用了用户级别网络(DPDK)的情况下运行。 
									可能的值:  
									默认值:  | 
15.1.7. 参考性能配置集
使用以下引用性能配置集作为开发您自己的自定义配置集的基础。
15.1.7.1. 在 OpenStack 上使用 OVS-DPDK 的集群的性能配置集模板
要最大化使用 Open vSwitch 和 Red Hat OpenStack Platform(RHOSP)上的 Data Plane Development Kit(OVS-DPDK)的机器性能,您可以使用性能配置集。
您可以使用以下性能配置集模板为您的部署创建配置集。
使用 OVS-DPDK 的集群的性能配置集模板
						插入适用于 CPU_ISOLATED、CPU_RESERVED 和 HUGEPAGES_COUNT 密钥的配置的值。
					
15.1.7.2. Telco RAN DU 参考设计性能配置集
以下性能配置集在商业硬件上配置 OpenShift Container Platform 集群的节点级性能设置,以托管电信 RAN DU 工作负载。
Telco RAN DU 参考设计性能配置集
15.1.7.3. 电信核心参考设计性能配置集
以下性能配置集在商业硬件上为 OpenShift Container Platform 集群配置节点级别的性能设置,以托管电信核心工作负载。
电信核心参考设计性能配置集