HAMi 可组合调度策略:mutex、binpack、spread、numa 如何协同工作
HAMi 一直通过 hami.io/gpu-scheduler-policy 注解提供按 Pod 生效的 GPU 调度策略:binpack 尽量把负载堆叠到少数卡上,spread 尽量打散,v2.10.0 新增的 mutex 则要求独占一张卡。但在 v2.10.0 之前,这个注解只能填一个值。
真实集群很少只需要一种行为。一份典型的生产诉求是这样的:推理副本要紧凑装箱,留出整卡空闲;同时每个 Pod 的多卡要落在同一 NUMA 节点上以保证带宽;而时延敏感的那批负载,干脆要独占几张卡。一句话里出现了三种策略。在 v2.10.0 之前,你只能选一个,放弃其余。
v2.10.0 补上了这块拼图:hami.io/gpu-scheduler-policy 现在接受有序的、逗号分隔的列表,过滤型与排序型策略可以组合(#2621,@mesutoezdil,关闭 #2010)。本文解释组合是如何求值的,以及如何上手与验证。如果你喜欢动手学习,配套的实验 14:在 GKE 上验证可组合调度策略会在真实集群上逐一复现下文的每个场景。
