列出作业的待处理步骤

List job's pending steps

场景是这样的,我用salloc分配资源(2个节点,64 CPUs)给作业:

salloc -N 1-2 -n 64 -c 1 -w cluster-node[2-3] -m cyclic -t 5
salloc: Granted job allocation 1720

然后,我使用 srun 为我的工作创建步骤:

for i in (seq 70)
    srun --exclusive -N 1 -n 1 --jobid=1720 sleep 60 &
end

因为我为我的工作创建的步骤多于可用的 cpu,步骤 "pending" 直到空闲 CPU。

当我使用 squeue 和 -s 选项列出步骤时,我只能查看 运行 个步骤。

squeue -s -O stepid:12,stepname:10,stepstate:9
1720.0     sleep     RUNNING
[...]
1720.63     sleep     RUNNING

我的问题是,步骤的状态是否与 运行 不同,如作业,如果是,是否有办法使用 squeue(或其他命令)查看这些步骤)?

不确定 Slurm 能否提供这些信息。一种替代方法是使用 GNU Parallel,以便在 CPU 可用之前根本不会启动作业步骤。在当前设置中,所有作业步骤都立即启动,没有 CPU 可用的作业步骤正在等待。

因此,使用与您使用的相同的分配,替换

for i in (seq 70)
    srun --exclusive -N 1 -n 1 --jobid=1720 sleep 60 &
end

parallel -P $SLURM_NTASKS srun --exclusive -N 1 -n 1 --jobid=1720 sleep 60

然后 squeue 的输出应该列出 运行 和 PENDING 步骤。

N.B。不确定这里是否需要 --jobid= 选项 BTW