在 SLURM 中为每个任务保留内存
Reserve memory per task in SLURM
我们正在使用 SLURM 来管理计算集群上的作业调度,但我们遇到了内存管理问题。具体来说,我们找不到如何为特定任务分配内存。
考虑以下设置:
- 每个节点有32GB内存
- 我们有一个设置
--mem=24GB
的 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
结合使用
我们正在使用 SLURM 来管理计算集群上的作业调度,但我们遇到了内存管理问题。具体来说,我们找不到如何为特定任务分配内存。
考虑以下设置:
- 每个节点有32GB内存
- 我们有一个设置
--mem=24GB
的 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