我们知道 squeue
返回正在运行的作业的状态。
squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
130 debug run.sh user PD 0:00 1 (Resources)
131 debug run.sh user PD 0:00 1 (Resources)
128 debug 52546914 user R 7:28 1 node1
129 debug run.sh user R 0:02 1 node1
比如我的核心数是2。
[Q] 有没有办法只返回未使用的核心号?在示例中,未使用的核心编号应返回 0。
我是否应该为此编写一个解析器,以便检索每个 R
旁边的核心数,将它们相加,然后从总核心数中减去,如下所示:
squeue | grep -P ' R ' | awk '{print $7}' | paste -sd+ - | bc
最佳答案
要了解集群中可用的 core (CPU) 数量,您可以使用 sinfo
命令:
$ sinfo -o%C
CPUS(A/I/O/T)
0/1920/0/1920
您可以使用
轻松地将数字检索到 Bash 变量中IFS=/ read A I O T <<<$(sinfo -h -o%C)
运行上述命令后,A
将包含分配的核心数,I
将是空闲核心数,O
将保存“其他”核心的数量,即耗尽、关闭等,T
将是系统中的核心总数。
请注意,在您的问题中,您谈论的是 cores,但实际上计算的是 nodes 的数量。如果你想要的是节点数,你可以使用:
$ sinfo -o%A
NODES(A/I)
0/80
见 sinfo man page了解更多详情。
关于slurm:有没有办法返回未使用的核心号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50084142/