Skip to content

任务生命周期

本指南解释了 gflow 中任务的完整生命周期,包括状态转换、状态检查和恢复操作。

任务状态

gflow 任务可以处于以下七种状态之一:

状态简写描述
QueuedPD任务正在等待运行(等待依赖或资源)
HoldH任务被用户暂停
RunningR任务正在执行
FinishedCD任务成功完成
FailedF任务因错误终止
CancelledCA任务被用户或系统取消
TimeoutTO任务超过时间限制

状态分类

活动状态(任务尚未完成):

  • Queued、Hold、Running

完成状态(任务已结束):

  • Finished、Failed、Cancelled、Timeout

状态转换图

下图只保留核心状态转换。完成态均为终态。

右上角工具栏支持放大、适配、下载和全屏查看。

状态转换规则

从 Queued

  • Running:当依赖满足且资源可用时
  • Hold:用户运行 gjob hold <job_id>
  • Cancelled:用户运行 gcancel <job_id> 或依赖失败(启用自动取消时)

从 Hold

  • Queued:用户运行 gjob release <job_id>
  • Cancelled:用户运行 gcancel <job_id>

从 Running

  • Finished:任务脚本/命令以代码 0 退出
  • Failed:任务脚本/命令以非零代码退出
  • Cancelled:用户运行 gcancel <job_id>
  • Timeout:任务超过时间限制(使用 --time 设置)

从完成状态

  • 无转换(最终状态)
  • 使用 gjob redo <job_id> 创建具有相同参数的新任务

自动重试

  • gbatch --max-retries <N>gjob update <job_id> --max-retries <N> 为任务设置自动重试次数。
  • 当运行中的任务以非零退出时,gflow 会在额度内提交新的重试任务。
  • 仍在排队的下游依赖会自动改挂到最新一次重试任务上。
  • 当前超时和显式 fail 仍然是终态。
  • 手动 gjob redo 与自动重试分开计数。

任务状态原因

某些状态的任务有关联的原因,提供更多上下文:

状态原因描述
QueuedWaitingForDependency任务正在等待父任务完成
QueuedWaitingForGpu (Resources)任务正在等待可用 GPU
QueuedWaitingForMemory (Resources)任务正在等待可用主机内存
QueuedWaitingForResources任务正在等待其他调度器管理的资源或限制
HoldJobHeldUser任务被用户暂停
CancelledCancelledByUser用户明确取消了任务
CancelledDependencyFailed:<job_id>任务因任务 <job_id> 失败而自动取消
CancelledSystemError:<msg>任务因系统错误而取消

使用 gjob show <job_id>gqueue -f JOBID,ST,REASON 查看原因。

状态检查工作流

下图将流程收敛为“检查 -> 操作 -> 再检查”的循环:

另请参阅

Released under the MIT License.