第 15 章 置备实时和低延迟工作负载
许多企业需要高性能计算和低可预测延迟,特别是在金融和电信行业中。
OpenShift Container Platform 提供 Node Tuning Operator 来实现自动性能优化,以便为 OpenShift Container Platform 应用程序实现低延迟性能和响应时间。您可以使用性能配置集配置进行这些更改。您可以将内核更新至 kernel-rt,为集群和操作系统日常任务保留 CPU,包括 pod infra 容器,为应用程序容器隔离 CPU 来运行工作负载,并禁用未使用的 CPU 来减少功耗。
在编写应用程序时,请遵循 RHEL for Real Time 进程和线程中介绍的常规建议。
15.1. 将低延迟工作负载调度到具有实时功能的 worker 复制链接链接已复制到粘贴板!
您可以将低延迟工作负载调度到应用实时功能的 worker 节点上。
要将工作负载调度到特定的节点上,请使用 Pod
自定义资源(CR)中的标签选择器。标签选择器必须与附加到机器配置池的节点匹配,这些池是为低延迟配置的。
先决条件
-
已安装 OpenShift CLI(
oc
)。 -
您已以具有
cluster-admin
权限的用户身份登录。 - 您已在集群中应用了性能配置集,用于针对低延迟工作负载调整 worker 节点。
流程
为低延迟工作负载创建
Pod
CR,并在集群中应用它,例如:配置为使用实时处理的
Pod
规格示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
以 performance-<profile_name> 格式输入 pod
runtimeClassName
,其中 <profile_name> 是来自PerformanceProfile
YAML 中的名称
。在上例中,名称
是performance-dynamic-low-latency-profile
。 确保 pod 正确运行。状态应该为
running
,并应正确设置了 cnf-worker 节点:oc get pod -o wide
$ oc get pod -o wide
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 预期输出
NAME READY STATUS RESTARTS AGE IP NODE dynamic-low-latency-pod 1/1 Running 0 5h33m 10.131.0.10 cnf-worker.example.com
NAME READY STATUS RESTARTS AGE IP NODE dynamic-low-latency-pod 1/1 Running 0 5h33m 10.131.0.10 cnf-worker.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取为 IRQ 动态负载均衡配置的 pod 运行 CPU:
oc exec -it dynamic-low-latency-pod -- /bin/bash -c "grep Cpus_allowed_list /proc/self/status | awk '{print $2}'"
$ oc exec -it dynamic-low-latency-pod -- /bin/bash -c "grep Cpus_allowed_list /proc/self/status | awk '{print $2}'"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 预期输出
Cpus_allowed_list: 2-3
Cpus_allowed_list: 2-3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
确保正确应用节点配置。
登录节点以验证配置。
oc debug node/<node-name>
$ oc debug node/<node-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证可以使用节点文件系统:
chroot /host
sh-4.4# chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 预期输出
sh-4.4#
sh-4.4#
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保默认系统 CPU 关联性掩码不包括
dynamic-low-latency-pod
CPU,如 CPU 2 和 3。cat /proc/irq/default_smp_affinity
sh-4.4# cat /proc/irq/default_smp_affinity
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
33
33
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确定系统 IRQ 没有配置为在
dynamic-low-latency-pod
CPU 上运行:find /proc/irq/ -name smp_affinity_list -exec sh -c 'i="$1"; mask=$(cat $i); file=$(echo $i); echo $file: $mask' _ {} \;
sh-4.4# find /proc/irq/ -name smp_affinity_list -exec sh -c 'i="$1"; mask=$(cat $i); file=$(echo $i); echo $file: $mask' _ {} \;
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
当您调整节点以实现低延迟时,执行探测与需要保证 CPU 的应用程序一起使用可能会导致延迟激增。使用其他探测(如正确配置的一组网络探测作为替代方案)。