第 15 章 使用性能配置集调整节点以实现低延迟
使用集群性能配置集调整节点以实现低延迟。您可以限制 infra 和应用程序容器的 CPU,配置巨页、Hyper-Threading,并为对延迟敏感的进程配置 CPU 分区。
15.1. 创建性能配置集 复制链接链接已复制到粘贴板!
您可以使用 Performance Profile Creator (PPC) 工具创建集群性能配置集。PPC 是 Node Tuning Operator 的功能。
PPC 将有关集群的信息与用户提供的配置相结合,以生成适合您的硬件、拓扑和用例的性能配置集。
性能配置集只适用于集群直接访问底层硬件资源的裸机环境。您可以为单节点 OpenShift 和多节点集群配置性能配置集。
以下是在集群中创建和应用性能配置集的高级工作流:
-
为您要使用性能配置为目标的节点创建机器配置池 (MCP)。在单节点 OpenShift 集群中,您必须使用
master
MCP,因为集群中只有一个节点。 -
使用
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-gather
tarball。
流程
在本地机器上创建一个文件,例如
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 集群配置节点级别的性能设置,以托管电信核心工作负载。
电信核心参考设计性能配置集