16.6. 使用性能配置集调整节点以实现低延迟

性能配置集可让您控制属于特定机器配置池的节点的延迟调整方面。指定设置后,PerformanceProfile 对象将编译为执行实际节点级别调整的多个对象:

  • 操作节点的 MachineConfig 文件。
  • 用于配置拓扑管理器、CPU Manager 和 OpenShift Container Platform 节点的 KubeletConfig 文件。
  • 配置 Node Tuning Operator 的 Tuned 配置集。

流程

  1. 准备集群。
  2. 创建机器配置池。
  3. 安装 Performance Addon Operator。
  4. 创建一个适合您的硬件和拓扑的性能配置集。在性能配置集中,您可以指定是否要将内核更新至 kernel-rt,分配巨页,保留用于操作系统日常任务处理进程的 CPU,以及用于运行工作负载的 CPU。

    这是一个典型的性能配置集:

    apiVersion: performance.openshift.io/v2
    kind: PerformanceProfile
    metadata:
     name: performance
    spec:
     cpu:
      isolated: "5-15"
      reserved: "0-4"
     hugepages:
      defaultHugepagesSize: "1G"
      pages:
      -size: "1G"
       count: 16
       node: 0
     realTimeKernel:
      enabled: true  1
     numa:  2
      topologyPolicy: "best-effort"
     nodeSelector:
      node-role.kubernetes.io/worker-cnf: ""
1
有效值为 true 或者 false。设置 true 值会在节点上安装实时内核。
2
使用此字段配置拓扑管理器策略。有效值为 none (默认)、best-effortrestrictedsingle-numa-node。如需更多信息,请参阅拓扑管理器策略

16.6.1. 对 CPU 进行分区

您可能会在一个 NUMA 节点中为操作系统的日常任务保留内核和线程,而将工作负载放置在另外一个 NUMA 节点上。这样做的原因是,日常任务处理进程可能会以对 CPU 造成延迟,从而影响到在同一个 CPU 上运行的对延迟敏感的进程。将您的工作负载保留到独立的 NUMA 节点上可防止进程相互干扰。另外,每个 NUMA 节点都会有自己的不被共享的内存总线。

spec 部分指定两个 CPU 组:

  • isolated - 具有最低延迟。这个组中的进程没有中断,例如,可以达到更高的 DPDK 零数据包丢失带宽。
  • reserved - 日常任务 CPU。保留组中的线程会非常忙碌,因此对延迟敏感的应用程序应该在隔离的组中运行。请参阅创建一个带有 Guaranteed类 QoS 类的 pod