如何获取 SLURM 数组作业中失败和已完成作业的计数

Saq*_*qib 4 slurm sbatch

我正在使用 slurm 运行多个数组作业。对于给定的数组作业 ID(假设为 885881),我想列出失败作业和已完成作业的计数。像这样的东西:

输入:

<some-command> -j 885881
Run Code Online (Sandbox Code Playgroud)

输出:假设数组中有 200 个作业。

count | status
120   | failed
80    | completed
Run Code Online (Sandbox Code Playgroud)

其次,如果我能够获得任务失败的唯一原因列表,那就太好了。

输入:

`<some-command> -j 885881`
Run Code Online (Sandbox Code Playgroud)

输出:

count | reason
80    | OUT_OF_MEMORY
40    | TIMED_OUT
Run Code Online (Sandbox Code Playgroud)

我相信sacct可以利用命令以某种方式获得这些结果,但不确定如何实现。

dam*_*ois 8

使用这样的单行,您可以同时获取这两种信息

$ sacct -n -X -j 885881 -o state%20 | sort | uniq -c
     16            COMPLETED
     99               FAILED
     32        OUT_OF_MEMORY
      1              PENDING
Run Code Online (Sandbox Code Playgroud)

sacct命令深入挖掘记帐信息。这些-n -X参数用于简化输出并减少不必要的行数,并且该-o参数仅请求显示 STATE 列。然后输出被送入sortuniq命令进行计数。

如果您确实需要两个单独的命令,您可以轻松地调整上面的一行。您可以将其设为脚本或 Bash 函数以方便使用。

如果您想要更详细的解决方案,您可以查看smanageatools