更新时间:2024-07-02 GMT+08:00
如何避免非GPU/NPU负载调度到GPU/NPU节点?
问题现象
当集群中存在GPU/NPU节点和普通节点混合使用的场景时,普通工作负载也可以调度到GPU/NPU节点上,可能出现GPU/NPU资源未充分利用的情况。
问题原因
由于GPU/NPU节点同样提供CPU、内存资源,在一般情况下,即使工作负载未声明使用GPU/NPU资源,调度器也会根据打分机制将工作负载调度到GPU/NPU节点运行,于是可能会出现GPU/NPU节点的CPU、内存资源被普通工作负载占用的情况,导致GPU/NPU资源闲置。
解决方案
在使用GPU/NPU节点时,可以为其添加污点,并通过工作负载容忍度设置,避免非GPU/NPU工作负载调度到GPU/NPU节点上。
- GPU/NPU工作负载:添加指定污点的容忍度,可以调度至GPU/NPU节点。
- 普通工作负载:未添加指定污点的容忍度,无法调度至GPU/NPU节点。
操作步骤如下:
- 登录CCE控制台,单击集群名称进入集群。
- 在左侧列表中选择“节点管理”,勾选GPU/NPU节点,并单击“标签与污点管理”。
- 单击“新增批量操作”,为GPU/NPU节点添加污点。
选择“污点(Taints)”,并填写键值与污点效果。示例中,为GPU/NPU节点添加accelerator=true:NoSchedule的污点。
图1 添加污点
- 创建GPU/NPU工作负载时,在高级配置中,手动添加容忍策略,容忍该污点。
图2 容忍策略
- 普通工作负载创建时,无需添加容忍策略。由于未容忍该污点,则不会被调度到GPU/NPU节点。