9.2. NUMA 资源调度策略
在调度高性能工作负载时,二级调度程序可以使用不同的策略来确定所选 worker 节点中的哪些 NUMA 节点将处理工作负载。OpenShift Container Platform 中支持的策略包括 LeastAllocated
、mostAllocated
和 BalancedAllocation
。了解这些策略有助于优化工作负载放置,以提高性能和资源利用率。
当在 NUMA 感知集群中调度高性能工作负载时,会执行以下步骤:
- 调度程序首先根据集群范围的标准选择合适的 worker 节点。例如污点、标签或资源可用性。
- 选择了 worker 节点后,调度程序会评估其 NUMA 节点,并应用评分策略来确定哪个 NUMA 节点将处理工作负载。
- 调度工作负载后,所选 NUMA 节点的资源会更新,以反映分配。
应用的默认策略是 LeastAllocated
策略。这会为 NUMA 节点分配具有最少使用的 NUMA 节点最多可用资源的工作负载。此策略的目标是将工作负载分散到 NUMA 节点之间,以减少争用并避免热点。
下表总结了不同的策略及其结果:
Scoring 策略概述
策略 | 描述 | 结果 |
---|---|---|
| 优先选择具有最多可用资源的 NUMA 节点。 | 分散工作负载,以减少竞争,并确保工作空间用于高优先级任务。 |
| 优先选择具有最少可用资源的 NUMA 节点。 | 在更少的 NUMA 节点上整合工作负载,从而释放其他工作负载,从而获得能源效率。 |
| 优先选择 CPU 和内存使用情况均衡的 NUMA 节点。 | 确保即使资源利用率,防止使用模式。 |
LeastAllocated 策略示例
LeastAllocated
是默认策略。此策略将工作负载分配给具有最多可用资源的 NUMA 节点,从而最大程度减少资源争用并将工作负载分散到 NUMA 节点上。这可减少热点并确保足够头处理高优先级任务。假设 worker 节点有两个 NUMA 节点,工作负载需要 4 个 vCPU 和 8 GB 内存:
NUMA 节点 | CPU 总数 | 使用的 CPU | 内存总量(GB) | 已用内存(GB) | 可用资源 |
---|---|---|---|---|---|
NUMA 1 | 16 | 12 | 64 | 56 | 4 个 CPU,8 GB 内存 |
NUMA 2 | 16 | 6 | 64 | 24 | 10 个 CPU,40 GB 内存 |
由于 NUMA 2 与 NUMA 1 相比具有更多可用资源,因此工作负载将分配给 NUMA 2。
MostAllocated 策略示例
MostAllocated
策略通过将工作负载分配给具有最少可用资源的 NUMA 节点来整合工作负载,这是最常用的 NUMA 节点。这种方法有助于释放其他 NUMA 节点,以实现能源效率或关键工作负载,需要完全隔离。本例使用 LeastAllocated
部分中列出的 "Example initial NUMA nodes state" 值。
工作负载需要 4 个 vCPU 和 8 GB 内存。与 NUMA 2 相比,NUMA 1 的可用资源较少,因此调度程序会将工作负载分配给 NUMA 1,在保持 NUMA 2 空闲或最小加载时进一步利用其资源。
BalancedAllocation 策略示例
BalancedAllocation
策略将工作负载分配给 NUMA 节点,并在 CPU 和内存之间平衡资源利用率。目标是防止不平衡使用量,如 CPU 利用率低下内存。假设 worker 节点具有以下 NUMA 节点状态:
NUMA 节点 | CPU 用量 | 内存用量 | BalancedAllocation score |
---|---|---|---|
NUMA 1 | 60% | 55% | 高(更均衡) |
NUMA 2 | 80% | 20% | 低(无均衡) |
与 NUMA 2 相比,NUMA 1 的 CPU 和内存使用率更为平衡,因此,BalancedAllocation
策略被分配为 NUMA 1。