首页 > 解决方案 > slurm:有没有办法返回未使用的核心号?

问题描述

我们知道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

标签: slurm

解决方案


要了解集群中可用的核心(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并将是系统中的核心总数.

请注意,在您的问题中,您谈论的是核心,但实际上是计算节点的数量。如果您想要的是节点数,您可以使用:

$ sinfo -o%A
NODES(A/I)
0/80

有关更多详细信息,请参见sinfo 手册页


推荐阅读