You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何暂停Slurm数组作业以完成集群维护并恢复执行?

解决Slurm数组作业暂停与恢复的方案

一、暂停数组作业(停止新任务调度,等待现有任务完成)

你之前设置分区为DRAIN无效,是因为Slurm的分区状态仅限制新提交的作业,而你的数组作业已在队列中,调度器仍会继续调度其未执行的子任务。直接操作数组作业本身才能实现需求:

  1. 阻止新子任务调度
    执行命令将数组作业设为HOLD状态,立即停止新子任务分配到节点:

    scontrol hold <job-id>
    

    其中<job-id>是你的数组作业ID,可通过squeue命令查看。

  2. 等待现有任务完成
    用squeue -j <job-id>监控任务状态,直到所有RUNNING状态的子任务变为COMPLETED。

  3. 确认作业暂停
    此时作业状态会变为HOLD,不会再启动新子任务,可安全关闭集群进行维护。

二、维护完成后恢复数组作业

集群重启并确认Slurm服务(slurmctld、slurmd)正常运行后,执行以下命令恢复作业,未完成的子任务会继续调度执行:

scontrol release <job-id>

三、备选方案(立即暂停所有任务)

若无需等待现有任务完成,可直接暂停所有运行中的子任务(需确保./runone脚本支持断点续跑,否则可能导致任务重复或失败):

  • 暂停所有子任务:
    scontrol suspend <job-id>
    
  • 恢复所有子任务:
    scontrol resume <job-id>
    

内容的提问来源于stack exchange,提问作者Terry Ligocki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 16:23:11