版本:下一个
调度策略
HAMi 支持多种 GPU 调度策略,以应对复杂的工作负载场景。Pod 可以通过 pod 注解(annotation)来选择调度策略。
可用策略
| 策略 | 范围 | 效果 |
|---|---|---|
binpack | Node | 尽量将任务分配到同一个 GPU 节点上 |
spread | Node | 尽量将任务分配到不同的 GPU 节点上 |
numa-first | GPU | 对于多 GPU 分配,优先选择同一个 NUMA 节点上的 GPU |
默认策略
默认的节点调度策略为 binpack,默认的 GPU 调度策略为 spread。可以通过 Helm 在全局范围内修改这些策略:
helm install hami hami-charts/hami \
--set scheduler.defaultSchedulerPolicy.nodeSchedulerPolicy=binpack \
--set scheduler.defaultSchedulerPolicy.gpuSchedulerPolicy=spread
通过注解为 Pod 单独指定策略
单个 Pod 可以在 .metadata.annotations 中指定调度策略,从而覆盖默认值。
示例:binpack 策略
apiVersion: v1
kind: Pod
metadata:
name: gpu-pod
annotations:
hami.io/node-scheduler-policy: "binpack"
spec:
containers:
- name: ubuntu-container
image: ubuntu:22.04
command: ["bash", "-c", "sleep 86400"]
resources:
limits:
nvidia.com/gpu: 2
nvidia.com/gpumem: 4000
示例:spread 策略
apiVersion: v1
kind: Pod
metadata:
name: gpu-pod
annotations:
hami.io/node-scheduler-policy: "spread"
spec:
containers:
- name: ubuntu-container
image: ubuntu:22.04
command: ["bash", "-c", "sleep 86400"]
resources:
limits:
nvidia.com/gpu: 2
nvidia.com/gpumem: 4000