16.6. 使用性能配置集调整节点以实现低延迟
性能配置集可让您控制属于特定机器配置池的节点的延迟调整方面。指定设置后,PerformanceProfile
对象将编译为执行实际节点级别调整的多个对象:
-
操作节点的
MachineConfig
文件。 -
用于配置拓扑管理器、CPU Manager 和 OpenShift Container Platform 节点的
KubeletConfig
文件。 - 配置 Node Tuning Operator 的 Tuned 配置集。
流程
- 准备集群。
- 创建机器配置池。
- 安装 Performance Addon Operator。
创建一个适合您的硬件和拓扑的性能配置集。在性能配置集中,您可以指定是否要将内核更新至 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: ""
16.6.1. 对 CPU 进行分区
您可能会在一个 NUMA 节点中为操作系统的日常任务保留内核和线程,而将工作负载放置在另外一个 NUMA 节点上。这样做的原因是,日常任务处理进程可能会以对 CPU 造成延迟,从而影响到在同一个 CPU 上运行的对延迟敏感的进程。将您的工作负载保留到独立的 NUMA 节点上可防止进程相互干扰。另外,每个 NUMA 节点都会有自己的不被共享的内存总线。
在 spec
部分指定两个 CPU 组:
-
isolated
- 具有最低延迟。这个组中的进程没有中断,例如,可以达到更高的 DPDK 零数据包丢失带宽。 -
reserved
- 日常任务 CPU。保留组中的线程会非常忙碌,因此对延迟敏感的应用程序应该在隔离的组中运行。请参阅创建一个带有Guaranteed
类 QoS 类的 pod。