在 Slurm 中,是否有快速命令来确定给定时刻的作业总数(待处理和活动)?

use*_*627 8 linux bash slurm

在 slurm 中,调用该命令squeue -u <username>将列出给定用户的所有挂起或活动的作业。我想知道是否有一种快速的方法来统计它们,以便我知道有多少未完成的工作,包括待处理和正在运行的工作。谢谢!

tsh*_*ono 10

如果您只想总结 的输出squeue,如何:

squeue -u <username> | awk '
BEGIN {
    abbrev["R"]="(Running)"
    abbrev["PD"]="(Pending)"
    abbrev["CG"]="(Completing)"
    abbrev["F"]="(Failed)"
}
NR>1 {a[$5]++}
END {
    for (i in a) {
        printf "%-2s %-12s %d\n", i, abbrev[i], a[i]
    }
}'
Run Code Online (Sandbox Code Playgroud)

这产生了类似的东西:

R  (Running)    1
PD (Pending)    4
Run Code Online (Sandbox Code Playgroud)

说明:

  • 该job state假设按照默认格式是在第5场squeue。
  • 然后脚本计算每个作业状态代码的出现,除了包含标题的第一行。
  • 最后,它报告每个作业状态代码的计数。

为了方便起见,请将以下几行添加到您的.bash_aliases或.bashrc(文件名可能取决于系统):

function summary() {
    squeue "$@" | awk '
    BEGIN {
        abbrev["R"]="(Running)"
        abbrev["PD"]="(Pending)"
        abbrev["CG"]="(Completing)"
        abbrev["F"]="(Failed)"
    }
    NR>1 {a[$5]++}
    END {
        for (i in a) {
            printf "%-2s %-12s %d\n", i, abbrev[i], a[i]
        }
    }'
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以仅使用 调用命令summary [option],如果需要(通常是不必要的)[option],squeue则接受选项。

希望这可以帮助。


小智 8

我会以不同的方式解释“快速命令”。另外,当您使用作业数组时,我会添加 -r 的情况:

squeue -u <username> -h -t pending,running -r | wc -l
Run Code Online (Sandbox Code Playgroud)

选项 -h 删除标题“wc -l”(字数)计算输出的行。最终我将它与手表一起使用

watch 'squeue -u <username> -h -t pending,running -r | wc -l'
Run Code Online (Sandbox Code Playgroud)

  • 要区分,请尝试: `squeue -u &lt;用户名&gt; -h -tending,running -r -O "state" | 唯一-c` (3认同)

Cor*_*mer 5

在我看来,@skytaker 的这条评论确实提供了最好的解决方案,区分待处理和正在运行,为每个问题提供单独的计数。与 Stefan Maschek 的解决方案的唯一区别是使用 uniq 而不是 wc:

squeue -u <username> -h -t pending,running -r -O "state" | uniq -c
Run Code Online (Sandbox Code Playgroud)