Slurm中被抢占重排队作业的BeginTime计算方式咨询
Slurm抢占重排队作业BeginTime的计算逻辑
Slurm并没有公开的固定计算公式,它的BeginTime是调度器基于集群实时状态和预测模型动态估算的,核心逻辑围绕以下关键因素展开:
影响BeginTime的核心因素
- 高优先级作业的剩余运行时间:优先以高优先级作业的
TimeLimit(若指定)减去已运行时长作为基础参考;如果未设置TimeLimit,调度器会参考同类作业的平均运行时间预估剩余时长。 - 集群资源的可用预测:调度器会扫描所有正在运行、排队的作业,判断是否有其他作业会在当前高优先级作业结束前占用低优先级作业所需资源,以此调整资源释放的时间点。
- 作业资源需求匹配度:低优先级作业需要的CPU、内存、GPU等资源,是否能在高优先级作业结束后直接匹配到空闲节点/分区;若存在资源碎片,BeginTime会延后到有足够匹配资源的时间点。
- 调度器配置与周期:
PriorityType、PreemptMode等配置,以及调度器默认30秒一次的调度决策周期,会影响BeginTime的更新频率和估算精度。
大致估算流程
- 低优先级作业被抢占进入PD状态后,调度器先获取当前高优先级作业的剩余预估运行时间。
- 结合集群中其他作业的资源占用计划,调整资源可用的时间点。
- 匹配低优先级作业的资源需求,给出最接近的预估BeginTime,该值会随集群状态变化(如高优先级作业提前结束、新作业提交)动态更新。
注意事项
- BeginTime仅为预估值,实际启动时间可能因高优先级作业提前完成、集群资源突发变化等情况提前或延后。
- 可通过
scontrol show job <低优先级作业ID>查看更详细的作业状态,其中StartTime字段即为当前预估的BeginTime,调度器会定期刷新该值。
内容的提问来源于stack exchange,提问作者hidri
相关产品推荐
相关产品推荐

