在 SLURM 中为每个任务保留内存

Reserve memory per task in SLURM

我们正在使用 SLURM 来管理计算集群上的作业调度,但我们遇到了内存管理问题。具体来说,我们找不到如何为特定任务分配内存。

考虑以下设置:

现在,假设我们想运行 SLURM 作业同时进行两次。然后我期望(或想要)发生的是,当我通过两次调用 sbatch runscript.sh 将其排队两次时,两个作业之一将在一个节点上 运行,另一个将 运行在另一个节点上。但是,就目前而言,SLURM 将两个任务安排在同一节点上。

我们确定的一个可能原因是它似乎只检查 24GB 内存是否可用(即未被其他节点主动使用),而不是检查它是否是 requested/allocated.

这里的问题是:是否可以在 SLURM 中为每个任务分配 allocate/reserve 内存?

感谢您的帮助!

为了能够管理内存,slurm 需要 SchedTypeParameters 中的参数包含 MEMORY。因此,只需将该参数更改为 CR_Core_Memory 就足以让 Slurm 开始管理内存。

如果没有设置--mem 将不会保留内存,只会确保节点配置了足够的内存。

更多信息here

@CarlesFenoy的回答不错,不过要回答

The question here is: is it possible to allocate/reserve memory per task in SLURM?

您要查找的参数是--mem-per-cpu,与--cpus-per-tasks

结合使用