更新时间:2025-05-21 GMT+08:00
动态调度
动态调度机制能够根据集群实时状态灵活调整作业执行顺序,最大化资源利用率并平衡公平性。
资源动态调度
功能一:支持负载堆积自动扩容/节点闲置自动缩容
- 没有可用节点时会自动扩容新的局点(达到预设时间)。
- 节点空闲时间达到预设时间就会自动释放资源(空闲时间设置需要大于300s)。
功能二:设置稳定资源
稳定节点闲置时不会缩容节点处理。
功能三:资源弹性混合供给
可以在一个分区分区创建不同规格计算节点
查看资源调度情况
页面查看计算节点所在分区等情况
作业动态调度
作业调度策略
- 回填调度(Backfill Scheduling)
- 原理:在保证高优先级作业不被延迟的前提下,利用资源空闲间隙运行低优先级小作业。
- 动态性体现:
- 实时计算每个作业的预计开始时间(Earliest Start Time, EST)。
- 扫描队列,寻找能“嵌入”当前资源空闲窗口的作业。
- 关键依赖:用户需指定准确的作业运行时间(--time参数),否则回填效率下降。
- 操作示例:
sbatch -p [分区] --time=00:30:00 job.sh # 精确指定作业运行时间,便于回填计算
- 抢占调度(Preemption)
- 原理:当高优先级作业提交时,Slurm可终止或挂起低优先级作业以释放资源。
- 抢占模式:
类型
行为
适用场景
Requeue
终止低优先级作业并重新排队,稍后自动重启
长作业且允许中断的场景
Suspend
挂起低优先级作业,资源释放后自动恢复
短时高优先级作业插入
Cancel
直接终止低优先级作业
紧急任务(需谨慎配置)
- 配置方法:
在QoS或分区中启用抢占策略:
# 创建允许被抢占的QoS sacctmgr add qos low_prio Preempt=high_prio # high_prio为高优先级QoS名称
- 动态优先级调整
- 公平份额(Fair-share):基于用户/组的历史资源使用量(如过去30天的CPU小时)动态计算优先级权重。
sshare -l # 查看用户的公平份额因子(FairShare值越低,优先级补偿越高)
- 实时反馈机制:
- 当用户超额使用资源时,其作业优先级自动下降;反之,未充分使用的用户优先级提升。
- 权重公式:Priority = f(Age, FairShare, QoS, Partition, ...),每隔数秒重新计算。
- 公平份额(Fair-share):基于用户/组的历史资源使用量(如过去30天的CPU小时)动态计算优先级权重。
动态调度优化策略
- 管理员侧配置
- 启用回填调度:
在 slurm.conf 中设置:
SchedulerType=sched/backfill # 使用回填调度器 SchedulerParameters=bf_max_job_test=100 # 每次调度扫描的最大作业数
- 配置抢占策略:
# 在slurm.conf中定义全局抢占规则 PreemptType=preempt/partition_prio # 按分区优先级抢占 PreemptMode=SUSPEND # 挂起而非终止作业
- 设置动态优先级权重:
PriorityType=priority/multifactor # 启用多因素优先级计算 PriorityWeightFairshare=1000 # 公平份额权重 PriorityWeightAge=100 # 作业年龄权重
- 启用回填调度:
- 用户侧优化策略
- 精确指定资源需求:
sbatch -p [分区] --ntasks=4 --mem=8G --time=1:00:00 job.sh # 避免过度请求资源
- 利用QoS提升优先级:
sbatch --qos=urgent job.sh # 提交到高优先级QoS队列
- 精确指定资源需求:
作业调度监测
典型场景与解决方案
场景1:小作业长时间排队
- 问题:用户提交的短作业因大作业占资源而延迟。
- 解决:确保启用回填调度,并准确指定 --time 参数。
sbatch --time=00:10:00 small_job.sh # 明确运行时间,帮助回填
场景2:紧急任务需立即执行
- 问题:高优先级作业需快速抢占资源。
- 解决:配置专用QoS并允许抢占。
# 管理员配置 sacctmgr add qos urgent Priority=1000 Preempt=low_prio # 用户提交 sbatch --qos=urgent critical_job.sh
场景3:资源利用率不均
- 问题:部分节点空闲,但作业仍在排队。
- 解决:检查分区配置是否限制过严,或调整节点共享策略(如启用 OverSubscribe=YES)。
动态调度的局限性
- 时间估算偏差:用户低估作业运行时间会导致回填失效,高估则浪费资源窗口。
- 抢占成本:频繁的作业挂起/重启可能增加系统开销(如检查点机制未启用时)。
- 配置复杂度:动态调度参数需精细调整(如权重分配、回填深度),不当配置可能降低整体效率。
总结
资源调度通过设置自动扩缩容策略,最大化资源利用。作业动态调度通过回填、抢占和实时优先级调整,实现资源的高效利用。用户应合理指定资源需求和时间限制,管理员需优化调度策略参数(如权重、抢占规则)。
父主题: HPC管理调度插件