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 注解来启用此功能。下表总结了注解的可能值:

Expand
注解值描述

missing

更改会立即应用。

always

更改在下次节点重启时应用。

update

如果造成配置集更改,则立即应用更改,否则在下次节点重启时。

以下示例演示了如何使用 always 方法将更改应用到 kernel.shmmni sysctl 参数:

Example

apiVersion: tuned.openshift.io/v1
kind: Tuned
metadata:
  name: performance-patch
  namespace: openshift-cluster-node-tuning-operator
  annotations:
    tuned.openshift.io/deferred: "always"
spec:
  profile:
    - name: performance-patch
      data: |
        [main]
        summary=Configuration changes profile inherited from performance created tuned
        include=openshift-node-performance-performance 
1

        [sysctl]
        kernel.shmmni=8192 
2

  recommend:
    - machineConfigLabels:
        machineconfiguration.openshift.io/role: worker-cnf 
3

      priority: 19
      profile: performance-patch
Copy to Clipboard Toggle word wrap

1
include 指令用于继承 openshift-node-performance-performance 配置集。这是确保配置集没有缺少任何所需设置的最佳实践。
2
kernel.shmmni sysctl 参数被改为 8192
3
machineConfigLabels 字段用于以 worker-cnf 角色为目标。配置 MachineConfigPool 资源,以确保配置集只应用到正确的节点。

7.7.1. 延迟调优更改的应用程序:一个示例

以下工作示例描述了如何使用 Node Tuning Operator 延迟调整应用程序的调整更改。

先决条件

  • cluster-admin 角色访问权限。
  • 您已将性能配置集应用到集群。
  • 一个 MachineConfigPool 资源,如 worker-cnf,以确保配置集只应用到指定的节点。

流程

  1. 运行以下命令,检查当前应用到集群的配置集:

    $ oc -n openshift-cluster-node-tuning-operator get tuned
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                                     AGE
    default                                  63m
    openshift-node-performance-performance   21m
    Copy to Clipboard Toggle word wrap

  2. 运行以下命令,检查集群中的机器配置池:

    $ oc get mcp
    Copy to Clipboard Toggle word wrap

    输出示例

    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
    Copy to Clipboard Toggle word wrap

  3. 运行以下命令来描述当前应用的性能配置集:

    $ oc describe performanceprofile performance | grep Tuned
    Copy to Clipboard Toggle word wrap

    输出示例

    Tuned:                   openshift-cluster-node-tuning-operator/openshift-node-performance-performance
    Copy to Clipboard Toggle word wrap

  4. 验证 kernel.shmmni sysctl 参数的现有值:

    1. 运行以下命令以显示节点名称:

      $ oc get nodes
      Copy to Clipboard Toggle word wrap

      输出示例

      NAME                          STATUS   ROLES                  AGE    VERSION
      ip-10-0-26-151.ec2.internal   Ready    worker,worker-cnf      116m   v1.30.6
      ip-10-0-46-60.ec2.internal    Ready    worker                 115m   v1.30.6
      ip-10-0-52-141.ec2.internal   Ready    control-plane,master   123m   v1.30.6
      ip-10-0-6-97.ec2.internal     Ready    control-plane,master   121m   v1.30.6
      ip-10-0-86-145.ec2.internal   Ready    worker                 117m   v1.30.6
      ip-10-0-92-228.ec2.internal   Ready    control-plane,master   123m   v1.30.6
      Copy to Clipboard Toggle word wrap

    2. 运行以下命令,在节点 ip-10-0-32-74.ec2.internal 中显示 kernel.shmmni sysctl 参数的当前值:

      $ oc debug node/ip-10-0-26-151.ec2.internal  -q -- chroot host sysctl kernel.shmmni
      Copy to Clipboard Toggle word wrap

      输出示例

      kernel.shmmni = 4096
      Copy to Clipboard Toggle word wrap

  5. 创建一个配置集补丁,如 perf-patch.yaml,它将 kernel.shmmni sysctl 参数改为 8192。通过应用以下配置,使用 always 方法将更改延迟到新的手动重启:

    apiVersion: tuned.openshift.io/v1
    kind: Tuned
    metadata:
      name: performance-patch
      namespace: openshift-cluster-node-tuning-operator
      annotations:
        tuned.openshift.io/deferred: "always"
    spec:
      profile:
        - name: performance-patch
          data: |
            [main]
            summary=Configuration changes profile inherited from performance created tuned
            include=openshift-node-performance-performance 
    1
    
            [sysctl]
            kernel.shmmni=8192 
    2
    
      recommend:
        - machineConfigLabels:
            machineconfiguration.openshift.io/role: worker-cnf 
    3
    
          priority: 19
          profile: performance-patch
    Copy to Clipboard Toggle word wrap
    1
    include 指令用于继承 openshift-node-performance-performance 配置集。这是确保配置集没有缺少任何所需设置的最佳实践。
    2
    kernel.shmmni sysctl 参数被改为 8192
    3
    machineConfigLabels 字段用于以 worker-cnf 角色为目标。
  6. 运行以下命令来应用配置集补丁:

    $ oc apply -f perf-patch.yaml
    Copy to Clipboard Toggle word wrap
  7. 运行以下命令,以验证配置集补丁正在等待下一个节点重启:

    $ oc -n openshift-cluster-node-tuning-operator get profile
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                          TUNED                     APPLIED   DEGRADED   MESSAGE                                                                            AGE
    ip-10-0-26-151.ec2.internal   performance-patch         False     True       The TuneD daemon profile is waiting for the next node restart: performance-patch   126m
    ip-10-0-46-60.ec2.internal    openshift-node            True      False      TuneD profile applied.                                                             125m
    ip-10-0-52-141.ec2.internal   openshift-control-plane   True      False      TuneD profile applied.                                                             130m
    ip-10-0-6-97.ec2.internal     openshift-control-plane   True      False      TuneD profile applied.                                                             130m
    ip-10-0-86-145.ec2.internal   openshift-node            True      False      TuneD profile applied.                                                             126m
    ip-10-0-92-228.ec2.internal   openshift-control-plane   True      False      TuneD profile applied.                                                             130m
    Copy to Clipboard Toggle word wrap

  8. 在重启前确认 kernel.shmmni sysctl 参数的值保持不变:

    1. 运行以下命令以确认,不会应用对节点 ip-10-0-26-151.ec2.internal 上的 kernel.shmmni sysctl 参数的应用程序更改:

      $ oc debug node/ip-10-0-26-151.ec2.internal  -q -- chroot host sysctl kernel.shmmni
      Copy to Clipboard Toggle word wrap

      输出示例

      kernel.shmmni = 4096
      Copy to Clipboard Toggle word wrap

  9. 运行以下命令重启节点 ip-10-0-26-151.ec2.internal 以应用所需的更改:

    $ oc debug node/ip-10-0-26-151.ec2.internal  -q -- chroot host reboot&
    Copy to Clipboard Toggle word wrap
  10. 在另一个终端窗口中,运行以下命令验证节点是否已重启:

    $ watch oc get nodes
    Copy to Clipboard Toggle word wrap

    等待节点 ip-10-0-26-151.ec2.internal 过渡到 Ready 状态。

  11. 运行以下命令,以验证配置集补丁正在等待下一个节点重启:

    $ oc -n openshift-cluster-node-tuning-operator get profile
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                          TUNED                     APPLIED   DEGRADED   MESSAGE                                                                            AGE
    ip-10-0-20-251.ec2.internal   performance-patch         True      False      TuneD profile applied.                                                             3h3m
    ip-10-0-30-148.ec2.internal   openshift-control-plane   True      False      TuneD profile applied.                                                             3h8m
    ip-10-0-32-74.ec2.internal    openshift-node            True      True       TuneD profile applied.                                                             179m
    ip-10-0-33-49.ec2.internal    openshift-control-plane   True      False      TuneD profile applied.                                                             3h8m
    ip-10-0-84-72.ec2.internal    openshift-control-plane   True      False      TuneD profile applied.                                                             3h8m
    ip-10-0-93-89.ec2.internal    openshift-node            True      False      TuneD profile applied.                                                             179m
    Copy to Clipboard Toggle word wrap

  12. 重启后,检查 kernel.shmmni sysctl 参数的值是否已改变:

    1. 运行以下命令,以验证 kernel.shmmni sysctl 参数更改已在节点 ip-10-0-32-74.ec2.internal 上应用:

      $ oc debug node/ip-10-0-32-74.ec2.internal  -q -- chroot host sysctl kernel.shmmni
      Copy to Clipboard Toggle word wrap

      输出示例

      kernel.shmmni = 8192
      Copy to Clipboard Toggle word wrap

注意

额外的重启会导致恢复 kernel.shmmni sysctl 参数的原始值。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部