SLRUM:当节点位于 2 个分区时,如何限制一个分区中特定节点的 CPU 数量?

问题描述 投票:0回答:2

实际上,我发现了一个与我非常相似的问题。唯一的区别是我的小集群中节点的CPU数量不同。 (类似的问题是这里

例如我的集群中的节点是:

  • 节点1,36个CPU
  • 节点2,32个CPU
  • node3,24 个 CPU + 1 个 GPU
  • node4,16 个 CPU + 1 个 GPU

我有 2 个分区:cpu(所有节点)和 gpu(node3,4)。

如何在node3和node4中保留4个CPU用于GPU分区?换句话说,如何配置让cpu分区包含node1和node2的所有CPU,node3的20个CPU和node4的12个CPU?

(参数MaxCPUsPerNode不符合我的需求。)

谢谢!

slurm partition
2个回答
0
投票

使用消耗性可跟踪资源插件(https://slurm.schedmd.com/cons_res.html)而不是默认的节点分配插件,您可以将

DefCpuPerGPU
设置为4(请参阅有关设置此变量和启用
的详细信息) cons_tres
在您的
slurm.conf
文档中:https://slurm.schedmd.com/cons_res.html#using_cons_tres)


0
投票

我找到了一个解决方案,虽然有点笨拙,但确实完成了工作。我有一个集群,其中的节点具有不同数量的 CPU。我需要一个分区,它可以使用大多数节点的所有 CPU,但只能使用另一个节点的 CPU 子集。据我所知,这个具体的描述是不可能用 Slurm 来完成的。

但是,如果我创建两个分区:

  1. 大多数节点,其中
    Nodes=n1,n2,n3,n4
  2. 有限节点,与
    Nodes=n5 MaxCPUsPerNode=15

然后使用

--partition=mostnodes,limitednode
提交作业,调度程序会将作业调度到第一个能够运行作业的分区上。用手册页的话来说:

如果作业可以使用多个分区,请在一个分区中指定它们的名称 逗号分隔列表,提供最早启动的列表将是 使用时不考虑分区名称顺序(尽管 将首先考虑优先级较高的分区)。当工作是 启动时,所使用的分区的名称将首先放置在 作业记录分区字符串。

这不是一个完美的解决方案,但据我所知,这是目前可用的最佳解决方案。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.