一、作业调度器的核心架构
1. 调度问题的建模
作业调度的本质是一个资源分配优化问题:将一组具有资源需求、优先级和依赖关系的作业,分配到一组具有容量上限的计算节点上,并在满足约束的前提下优化某种目标函数。
目标函数因场景而异。对于高吞吐量场景(如参数扫描),核心指标是单位时间内完成的作业总数;对于交互式场景(如在线交互式笔记本会话),核心指标是响应延迟;对于大规模并行任务(如分布式训练),核心指标是作业的周转时间。
2. 调度策略的选择
当前主流的调度策略可以归纳为以下几类:
先来先服务(FCFS)+ 回填。最简单的策略,作业按提交顺序排队,节点有空闲即分配。回填机制允许后续的小作业在不影响队首大作业启动的前提下提前执行,显著提升了集群利用率。大多数传统批处理调度器采用此策略作为默认配置。
均等共享(Fair Share)。按照用户或课题组的资源配额权重分配计算资源。在当前没有排队的情况下,用户可使用超出配额的空闲资源;一旦资源紧张,超出配额的任务优先被抢占。这种策略在高校计算中心等多租户场景中非常适配。
优先级抢占(Priority + Preemption)。高优先级作业可以驱逐运行中的低优先级作业,被驱逐的作业重新排队或从检查点恢复。抢占策略的核心风险在于"颠簸"——优先级设计不当会导致作业被反复驱逐,整体吞吐量反而下降。
延迟调度(Delay Scheduling)。为提升数据本地性(将任务调度到数据所在的节点),调度器愿意等待有限的时间片而非立刻将任务分配到远端节点。在数据密集型科研任务中,数据本地性对执行效率的影响往往超过调度延迟的代价。
3. 调度器的可观测性
调度器自身的运行状态同样需要监控。关键指标包括:队列深度、待处理作业的等待时间中位数、资源碎片化率(可用的零散资源无法被大作业使用)、回填效率(回填作业占总作业的比例)。这些指标直接反映调度策略是否适配当前的工作特征,是调优的依据。
二、资源编排:从单一集群到多集群协同
1. 统一资源抽象
当计算资源跨越多个集群(如本地集群加云端集群)时,第一道挑战是建立统一的资源抽象层。所有节点无论物理位置,都应以一致的接口注册到调度系统中。这要求资源抽象层能够:
- 标准化描述节点的能力(CPU 架构、GPU 型号与数量、内存容量、网络带宽);
- 将异构资源映射为统一的调度单位(如 GPU 时、CPU 核时);
- 支持自定义资源类型(如 FPGA 加速卡、特定型号的传感器设备)。
2. 跨集群调度决策
多集群调度面临的核心决策是"将作业提交到哪个集群"。常见的路由策略包括:
- 亲和性路由:根据数据所在位置、软件许可证分布或硬件特性(如特定 GPU 架构)将作业路由到指定集群;
- 容量路由:优先提交到资源利用率较低的集群,实现流量分发;
- 成本路由:在满足时效的前提下选择单位算力成本最低的集群;
- 网络感知路由:考虑集群间数据传输的时延与带宽成本,将数据密集型作业调度到数据所在地。
3. 作业依赖的跨集群编排
复杂科研管线通常包含多个按 DAG 组织的步骤。当不同步骤需要在不同集群执行时(例如数据前处理在本地、核心计算在云端、结果可视化回到本地),就需要跨集群的工作流编排。编排引擎需负责步骤间数据的自动传输、调度决策的全局优化以及跨集群故障的统一处理。
三、故障恢复与容错设计
1. 常见故障模式
科研计算任务运行时间长、资源占用高,故障的代价也相应放大。常见故障模式包括:
- 节点故障:硬件错误、内核崩溃、断电,导致运行中的作业全部中断;
- 网络分区:调度器与计算节点之间通信中断,可能引发脑裂——多个调度器实例同时认为对方已失联而各自接管;
- 磁盘满:中间数据写满存储空间,作业静默失败而非报错退出;
- 资源耗尽:内存溢出(OOM)被内核终止,但未留下有价值的错误信息。
2. 容错机制设计
检查点与续跑。调度器支持作业定期保存检查点,在故障发生后从最近的检查点恢复执行,而非从头重来。对于运行数天的大规模仿真任务,这是刚需。
重试策略的分级设计。不同类型的失败应有不同的重试逻辑:OOM 失败在调大内存配额后重试;网络超时在短时间内多次重试;输入数据校验失败直接标记为不可恢复,通知用户介入。规避统一的"最多重试 N 次"策略掩盖差异化的故障原因。
优雅降级。当部分计算节点不可用时,调度器应能将受影响作业迁移到其他节点,并通知编排引擎重新计算受影响步骤的依赖关系。降级过程中的核心诉求是状态不丢失——作业的中间结果和进度信息需持久化在共享存储中,而非节点本地磁盘。
四、实践中的权衡与建议
作业调度系统的设计没有银弹。在实际工程中,通常面临如下取舍:
- 调度延迟 vs 调度质量:更优的全局调度决策需要更多计算和等待时间,而交互式用户期望秒级响应。区分对待批处理作业(容忍分钟级调度延迟)与交互式作业(要求秒级响应)是实用的做法。
- 均等性 vs 利用率:严格的均等共享可能导致资源碎片化——分配到的资源不连续导致无法使用。适度放宽均等约束、允许资源借用,可提升整体利用率。
- 自动化 vs 可控性:全自动的资源编排提升了效率,但在科研环境中,研究者通常希望了解"我的作业被分配到了哪台机器"。提供可查看的调度决策理由,是用户体验的重要一环。
调度和编排的终极目标不是榨干每一分算力,而是让研究者不必关心"算力从哪来"的问题——提交作业,等待结果,中间的一切由系统负责。在这个目标下,选择合适的调度策略、建立灵活的多集群编排机制、设计可靠的故障恢复方案,构成了科研计算基础设施的核心工程能力。