如何在slurm集群管理器中了解一个作业的每个进程的状态?

时间:2018-06-04 09:09:02

标签: cluster-computing slurm

使用Slurm集群管理器来处理具有多个进程的作业后,有没有办法知道每个进程的状态(运行或完成)?它可以在python脚本中实现吗?

2 个答案:

答案 0 :(得分:2)

如果您提及的流程是区分步骤,那么sacct可以为您提供@Christopher Bottoms所解释的信息。

但如果进程在一个步骤中是不同的任务,那么您可以使用this script使用并行SSH在计算节点上运行'ps'命令并提供汇总视图,如@Tom de Geus建议的那样

答案 1 :(得分:1)

只需使用Slurm附带的命令sacct

鉴于此代码(my.sh):

#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks=2

srun -n1 sleep 10 &
srun -n1 sleep 3

wait

我跑了:

sbatch my.sh

然后使用sacct

进行检查
sacct

这给了我一步信息:

     JobID    JobName  Partition    Account  AllocCPUS      State ExitCode
---------- ---------- ---------- ---------- ---------- ---------- --------
8021        my.sbatch    CLUSTER        me          2     RUNNING      0:0
8021.0          sleep                   me          1     RUNNING      0:0
8021.1          sleep                   me          1   COMPLETED      0:0

sacct有很多选项可以自定义其输出。例如,

sacct --format='JobID%6,State'

只会给你ID(最多6个字符)和当前的工作状态:

 JobID      State
------ ----------
  8021    RUNNING
8021.0    RUNNING
8021.1  COMPLETED