云容器引擎 CCE-NUMA亲和性调度:Pod调度预测

时间:2024-05-31 08:37:52

Pod调度预测

当Pod设置了拓扑策略时,Volcano会根据Pod设置的拓扑策略预测匹配的节点列表。调度过程如下:

  1. 根据Pod设置的Volcano拓扑策略,筛选具有相同策略的节点。Volcano提供的拓扑策略与拓扑管理器相同。
  2. 在设置了相同策略的节点中,筛选CPU拓扑满足该策略要求的节点进行调度。

Volcano拓扑策略

节点调度行为

1.筛选具有相同策略的节点

2.节点的CPU拓扑满足该策略的要求

none

无筛选行为:

  • none:可调度
  • best-effort:可调度
  • restricted:可调度
  • single-numa-node:可调度

-

best-effort

筛选拓扑策略同样为“best-effort”的节点:

  • none:不可调度
  • best-effort:可调度
  • restricted:不可调度
  • single-numa-node:不可调度

尽可能满足策略要求进行调度:

优先调度至单NUMA节点,如果单NUMA节点无法满足CPU申请值,允许调度至多个NUMA节点。

restricted

筛选拓扑策略同样为“restricted”的节点:

  • none:不可调度
  • best-effort:不可调度
  • restricted:可调度
  • single-numa-node:不可调度

严格限制的调度策略:

  • 单NUMA节点的CPU容量上限大于等于CPU的申请值时,仅允许调度至单NUMA节点。此时如果单NUMA节点剩余的CPU可使用量不足,则Pod无法调度。
  • 单NUMA节点的CPU容量上限小于CPU的申请值时,可允许调度至多个NUMA节点。

single-numa-node

筛选拓扑策略同样为“single-numa-node”的节点:

  • none:不可调度
  • best-effort:不可调度
  • restricted:不可调度
  • single-numa-node:可调度

仅允许调度至单NUMA节点。

假设单个节点CPU总量为32U,由2个NUMA节点提供资源,分配如下:

工作节点

节点拓扑策略

NUMA节点1上的CPU总量

NUMA节点2上的CPU总量

节点-1

best-effort

16

16

节点-2

restricted

16

16

节点-3

restricted

16

16

节点-4

single-numa-node

16

16

Pod设置拓扑策略后,调度情况如图1所示。

  • 当Pod的CPU申请值为9U时,设置拓扑策略为“best-effort”,Volcano会匹配拓扑策略同样为“best-effort”的节点-1,且该策略允许调度至多个NUMA节点,因此9U的申请值会被分配到2个NUMA节点,该Pod可成功调度至节点-1。
  • 当Pod的CPU申请值为9U时,设置拓扑策略为“restricted”,Volcano会匹配拓扑策略同样为“restricted”的节点-2/节点-3,且单NUMA节点CPU总量满足9U的申请值,但单NUMA节点剩余可用的CPU量无法满足,因此该Pod无法调度。
  • 当Pod的CPU申请值为17U时,设置拓扑策略为“restricted”,Volcano会匹配拓扑策略同样为“restricted”的节点-2/节点-3,且单NUMA节点CPU总量无法满足17U的申请值,可允许分配到2个NUMA节点,该Pod可成功调度至节点-3。
  • 当Pod的CPU申请值为17U时,设置拓扑策略为“single-numa-node”,Volcano会匹配拓扑策略同样为“single-numa-node”的节点,但由于单NUMA节点CPU总量均无法满足17U的申请值,因此该Pod无法调度。
图1 NUMA调度策略对比
support.huaweicloud.com/usermanual-cce/cce_10_0425.html