7.7. 延迟应用程序的调优更改
作为管理员,使用 Node Tuning Operator (NTO)更新正在运行的系统上的自定义资源(CR)并进行更改。例如,他们可以更新 sysctl 参数,或添加调优对象的 [sysctl] 部分。当管理员应用调优更改时,NTO 会提示 TuneD 重新处理所有配置,从而导致 tuned 进程回滚所有调整,然后重新应用它。
对延迟敏感的应用程序可能无法容忍 tuned 配置集的删除和重新应用,因为它可能会降低性能。对于分区 CPU 和管理使用性能配置集的进程或中断关联性的配置,这尤其重要。为了避免这个问题,OpenShift Container Platform 引入了应用调整更改的新方法。在 OpenShift Container Platform 4.17 之前,唯一可用的方法(即时)应用更改,通常会立即触发 tuned 重启。
支持以下附加方法:
-
always: 每个更改都会在下次节点重启时应用。 -
update:当调优更改修改 tuned 配置集时,它会被默认立即应用,并尽快生效。当调优更改不会导致 tuned 配置集更改,并且修改其值时,它将被视为 always。
通过添加 tuned.openshift.io/deferred 注解来启用此功能。下表总结了注解的可能值:
| 注解值 | 描述 |
|---|---|
| missing | 更改会立即应用。 |
| always | 更改在下次节点重启时应用。 |
| update | 如果造成配置集更改,则立即应用更改,否则在下次节点重启时。 |
以下示例演示了如何使用 always 方法将更改应用到 kernel.shmmni sysctl 参数:
Example
7.7.1. 延迟调优更改的应用程序:一个示例 复制链接链接已复制到粘贴板!
以下工作示例描述了如何使用 Node Tuning Operator 延迟调整应用程序的调整更改。
先决条件
-
有
cluster-admin角色访问权限。 - 您已将性能配置集应用到集群。
-
一个
MachineConfigPool资源,如worker-cnf,以确保配置集只应用到指定的节点。
流程
运行以下命令,检查当前应用到集群的配置集:
oc -n openshift-cluster-node-tuning-operator get tuned
$ oc -n openshift-cluster-node-tuning-operator get tunedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME AGE default 63m openshift-node-performance-performance 21m
NAME AGE default 63m openshift-node-performance-performance 21mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,检查集群中的机器配置池:
oc get mcp
$ oc get mcpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-79a26af9f78ced61fa8ccd309d3c859c True False False 3 3 3 0 157m worker rendered-worker-d9352e91a1b14de7ef453fa54480ce0e True False False 2 2 2 0 157m worker-cnf rendered-worker-cnf-f398fc4fcb2b20104a51e744b8247272 True False False 1 1 1 0 92m
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-79a26af9f78ced61fa8ccd309d3c859c True False False 3 3 3 0 157m worker rendered-worker-d9352e91a1b14de7ef453fa54480ce0e True False False 2 2 2 0 157m worker-cnf rendered-worker-cnf-f398fc4fcb2b20104a51e744b8247272 True False False 1 1 1 0 92mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来描述当前应用的性能配置集:
oc describe performanceprofile performance | grep Tuned
$ oc describe performanceprofile performance | grep TunedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Tuned: openshift-cluster-node-tuning-operator/openshift-node-performance-performance
Tuned: openshift-cluster-node-tuning-operator/openshift-node-performance-performanceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证
kernel.shmmnisysctl 参数的现有值:运行以下命令以显示节点名称:
oc get nodes
$ oc get nodesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,在节点
ip-10-0-32-74.ec2.internal中显示kernel.shmmnisysctl 参数的当前值:oc debug node/ip-10-0-26-151.ec2.internal -q -- chroot host sysctl kernel.shmmni
$ oc debug node/ip-10-0-26-151.ec2.internal -q -- chroot host sysctl kernel.shmmniCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
kernel.shmmni = 4096
kernel.shmmni = 4096Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建一个配置集补丁,如
perf-patch.yaml,它将kernel.shmmnisysctl 参数改为8192。通过应用以下配置,使用always方法将更改延迟到新的手动重启:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来应用配置集补丁:
oc apply -f perf-patch.yaml
$ oc apply -f perf-patch.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,以验证配置集补丁正在等待下一个节点重启:
oc -n openshift-cluster-node-tuning-operator get profile
$ oc -n openshift-cluster-node-tuning-operator get profileCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在重启前确认
kernel.shmmnisysctl 参数的值保持不变:运行以下命令以确认,不会应用对节点
ip-10-0-26-151.ec2.internal上的kernel.shmmnisysctl 参数的应用程序更改:oc debug node/ip-10-0-26-151.ec2.internal -q -- chroot host sysctl kernel.shmmni
$ oc debug node/ip-10-0-26-151.ec2.internal -q -- chroot host sysctl kernel.shmmniCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
kernel.shmmni = 4096
kernel.shmmni = 4096Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令重启节点
ip-10-0-26-151.ec2.internal以应用所需的更改:oc debug node/ip-10-0-26-151.ec2.internal -q -- chroot host reboot&
$ oc debug node/ip-10-0-26-151.ec2.internal -q -- chroot host reboot&Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在另一个终端窗口中,运行以下命令验证节点是否已重启:
watch oc get nodes
$ watch oc get nodesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 等待节点
ip-10-0-26-151.ec2.internal过渡到Ready状态。运行以下命令,以验证配置集补丁正在等待下一个节点重启:
oc -n openshift-cluster-node-tuning-operator get profile
$ oc -n openshift-cluster-node-tuning-operator get profileCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启后,检查
kernel.shmmnisysctl 参数的值是否已改变:运行以下命令,以验证
kernel.shmmnisysctl 参数更改已在节点ip-10-0-32-74.ec2.internal上应用:oc debug node/ip-10-0-32-74.ec2.internal -q -- chroot host sysctl kernel.shmmni
$ oc debug node/ip-10-0-32-74.ec2.internal -q -- chroot host sysctl kernel.shmmniCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
kernel.shmmni = 8192
kernel.shmmni = 8192Copy to Clipboard Copied! Toggle word wrap Toggle overflow
额外的重启会导致恢复 kernel.shmmni sysctl 参数的原始值。