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