作业退出代码

作业的退出代码(也称为退出状态、返回代码和完成代码)由 Slurm 捕获并作为作业记录的一部分保存。对于 sbatch 作业,捕获的退出代码是批处理脚本的输出。对于 salloc 作业,退出代码将是终止 salloc 会话的退出调用的返回值。对于 srun,退出代码将是 srun 执行的命令的返回值。

任何非零退出代码将被视为作业失败,并将导致作业状态为 FAILED,原因是 "NonZeroExitCode"。

退出代码是一个 8 位无符号数字,范围在 0 到 255 之间。虽然作业可能返回负退出代码,但 Slurm 将其显示为 0 - 255 范围内的无符号值。

作业步骤退出代码

当作业包含多个作业步骤时,由 srun 调用的每个可执行文件的退出代码将单独保存到作业步骤记录中。

被信号中断的作业

当作业或步骤收到导致其终止的信号时,Slurm 还会捕获信号编号并将其保存到作业或步骤记录中。

显示退出代码和信号

Slurm 在 scontrol show jobsview 工具的输出中显示作业的退出代码。Slurm 在 scontrol show stepsview 工具的输出中显示作业步骤退出代码。

当信号导致作业或步骤的终止时,信号编号将在退出代码后显示,以冒号(:)分隔。

数据库作业/步骤记录

当安装了 Slurm accounting_storage 插件时,Slurm 控制守护进程会将作业和步骤记录发送到 Slurm 数据库。发送到 Slurm 数据库的作业和步骤记录可以使用 sacct 命令查看。默认的 sacct 输出包含一个 ExitCode 字段,其格式与上述 scontrolsview 的输出相似。

派生退出代码和注释字符串

在阅读了作业退出代码的上述描述后,可以想象一种情况,其中批处理作业的中央任务失败,但脚本返回退出代码为零,表示成功。在许多情况下,用户可能无法在检查作业的输出文件之前确定作业的成功或失败。

作业包括一个 "派生退出代码" 字段。它最初设置为所有作业步骤(srun 调用)返回的最高退出代码的值。作业的派生退出代码由 Slurm 控制守护进程确定,并在启用 accounting_storage 插件时发送到数据库。

除了派生退出代码外,Slurm 数据库中的作业记录还包含一个注释字符串。该字符串初始化为作业的注释字符串(当 slurm.conf 中的 AccountingStoreFlags 参数包含 'job_comment' 时),并且只能由用户更改。

sacctmgr 命令中添加了一个新选项,以提供用户修改作业记录这两个字段的手段。作业记录的其他修改是不允许的。对于那些希望使用专门设计的简单命令来查看和修改派生退出代码和注释字符串的用户,已创建 sjobexitmod 包装器(见下文)。

用户现在可以在作业完成后注释作业的退出代码,并提供失败的描述。这包括能够为看似失败但实际上成功的作业注释成功完成。

sjobexitmod 命令

sjobexitmod 命令可用于显示和更新 Slurm 数据库作业记录的两个派生退出字段。sjobexitmod 可以首先用于显示作业的现有退出代码/字符串:

> sjobexitmod -l 123
JobID Account NNodes NodeList     State ExitCode DerivedExitCode Comment
----- ------- ------ -------- --------- -------- --------------- -------
123        lc      1     tux0 COMPLETED      0:0             0:0
如果需要更改,sjobexitmod 可以修改派生字段:
> sjobexitmod -e 49 -r "内存不足" 123

 修改作业 123 成功。

> sjobexitmod -l 123
JobID Account NNodes NodeList     State ExitCode DerivedExitCode Comment
----- ------- ------ -------- --------- -------- --------------- -------
123        lc      1     tux0 COMPLETED      0:0            49:0 内存不足

现有的 sacct 命令也支持这两个新的派生退出字段:

> sacct -X -j 123 -o JobID,NNodes,State,ExitCode,DerivedExitcode,Comment
JobID   NNodes      State ExitCode DerivedExitCode        Comment
------ ------- ---------- -------- --------------- --------------
123          1  COMPLETED      0:0            49:0  内存不足

最后修改于 2015 年 4 月 15 日