Skip to main content

Volcano调度器是一个为高性能计算、机器学习和批处理工作负载设计的Kubernetes调度器。它的核心功能之一是通过可插拔的Actions(动作)和Plugins(插件)机制来实现灵活的调度策略。

Actions与Plugins

这里展示了Volcano调度器中各个调度动作(Action)与插件(Plugin)之间的关系。每个动作会调用相应插件注册的回调函数来实现具体的调度逻辑。

Actions概览

动作说明动作介绍关联插件
enqueue入队将待调度的作业加入调度队列,检查作业是否满足入队条件(如资源配额、队列容量等)drf, proportion, resourcequota, capacity
allocate分配为作业分配资源,选择合适的节点进行任务调度,这是最核心的调度动作priority, gang, drf, predicates, proportion, nodeorder, binpack, numaaware, task-topology, sla, tdm, deviceshare, overcommit, capacity
preempt抢占当资源不足时,抢占低优先级任务的资源给高优先级任务(同队列内)priority, gang, conformance, drf, predicates, proportion, nodeorder, task-topology, sla, tdm, overcommit, pdb
reclaim回收回收超出配额队列的资源,重新分配给资源不足的队列(跨队列)priority, gang, conformance, drf, predicates, proportion, task-topology, sla, pdb, capacity
backfill回填利用碎片资源调度小型任务,提高资源利用率priority, gang, drf, predicates, nodeorder, binpack, numaaware, task-topology, sla, tdm, deviceshare

Plugins概览

  • 核心调度插件prioritygangdrfpredicates - 几乎参与所有调度动作
  • 资源管理插件proportioncapacityresourcequota - 负责资源配额和公平分配
  • 节点选择插件nodeorderbinpacknumaawaretask-topology - 负责节点打分和选择
  • 设备管理插件deviceshare - 负责GPU等特殊设备的共享调度
  • 特殊场景插件tdm(时分复用)、sla(服务质量)、overcommit(超额分配)
  • 保护机制插件conformancepdb - 确保调度符合Kubernetes规范和服务可用性
插件说明关联动作插件介绍
priority优先级allocate, backfill, preempt, reclaim根据任务的优先级对其进行排序,确保高优先级任务先被调度
gang成组调度allocate, backfill, preempt, reclaim实现成组调度,确保任务的所有成员(Pod)可以同时运行
conformance一致性preempt, reclaim确保Volcano的调度决策符合Kubernetes的标准和约定
drf主导资源公平性allocate, backfill, enqueue, preempt, reclaim实现主导资源公平性算法,确保资源在不同队列和任务之间公平分配
predicates断言allocate, backfill, preempt, reclaim检查节点是否满足运行特定任务的条件,类似于标准Kubernetes调度器的断言
proportion比例enqueue, allocate, preempt, reclaim根据队列的权重按比例分配资源,确保资源分配符合预定的比例
nodeorder节点排序allocate, backfill, preempt为任务选择最适合的节点,基于多种因素对节点进行打分和排序
binpack装箱allocate, backfill将任务紧密地打包到尽可能少的节点上,提高资源利用率
numaawareNUMA感知allocate, backfill优化对NUMA(非统一内存访问)架构的支持,提高计算密集型任务的性能
task-topology任务拓扑allocate, backfill, preempt, reclaim基于任务之间的亲和性和反亲和性配置,计算任务和节点的优先级,优化任务分布
sla服务级别协议allocate, backfill, preempt, reclaim实现服务级别协议管理,确保任务的调度符合特定的服务质量要求
tdm时分复用allocate, backfill, preempt实现时分复用机制,允许不同系统在不同时间段共享同一节点的资源
deviceshare设备共享allocate, backfill支持在同一节点上安全高效地共享GPUFPGA等特殊硬件资源
overcommit超额分配allocate, preempt允许节点资源被"超额预定",提高资源利用率
pdbPodDisruptionBudget支持preempt, reclaim在调度和驱逐任务时,遵守KubernetesPDB约束,保障服务可用性
resourcequota资源配额enqueue支持队列或命名空间级别的资源配额限制,防止资源被单一队列/用户占满
rescheduling重调度无直接关联动态检测资源碎片或节点利用率低下情况,自动触发任务重调度,提升集群整体利用率
capacity容量感知enqueue, allocate, reclaim根据节点和队列的容量约束进行调度,防止资源超卖

相关内容

📄️ Volcano Plugins详解

全面解析Volcano调度器的22个核心Plugins(priority、gang、conformance、drf、predicates、proportion、nodeorder、binpack、numaaware、task-topology、sla、tdm、deviceshare、overcommit、pdb、resourcequota、rescheduling、capacity、cdp、extender、nodegroup、usage)的功能特性、工作原理、参数配置和使用场景,涵盖优先级调度、Gang调度、资源公平分配、节点过滤打分、设备共享、时分复用、服务质量保障等关键调度能力,为构建高效的批处理和AI训练调度系统提供完整的插件配置指南。

参考资料