跳转到文档内容
版本:下一个

昆仑芯拓扑感知调度

背景

当单个P800服务器配置多块XPU时,若GPU连接或位于同一NUMA节点内(如下图所示),可获得最优性能表现。这种配置会在服务器内所有GPU之间形成特定拓扑关系。

img

当用户作业申请特定数量的kunlunxin.com/xpu资源时,Kubernetes会将pod调度到合适节点以最小化资源碎片并保持高性能。选定节点后,XPU设备会根据以下规则进行细粒度资源分配:

  1. 仅允许1、2、4或8卡分配方案
  2. 1/2/4卡分配不得跨NUMA节点
  3. 分配后应最小化资源碎片

过滤阶段

过滤阶段识别所有符合分配条件的节点。针对每个节点,系统会筛选最优XPU组合方案并缓存,供评分阶段使用。筛选流程如下图所示:

img

评分阶段

在评分阶段,所有通过过滤的节点会接受评估并打分以选择最优调度目标。我们引入MTF(最小填充分任务数)指标,用于量化节点在分配后容纳未来任务的能力。

下表展示了XPU占用情况与对应MTF值的示例:

XPU占用状态MTF说明
111111110完全占用,无法调度新任务
000000001可被一个8-XPU任务完全占用
000000112可调度一个4-XPU任务和一个2-XPU任务
000000013可容纳一个4-XPU、一个2-XPU和一个1-XPU任务
000100014可容纳两个2-XPU任务和两个1-XPU任务

节点得分基于分配前后的MTF差值计算。差值越小表示适配度越高,得分也越高。具体评分逻辑如下:

MTF差值得分示例
-1200000000111->00001111
0100000000111->00110111
1000001111->00011111
2-100000000000->00000001

绑定阶段

在绑定阶段,分配结果会以注解形式注入pod。例如:

BAIDU_COM_DEVICE_IDX=0,1,2,3