如何在Slurm中限制作业CPU使用不超过自设100核上限
控制Slurm队列作业并发数以限制CPU使用量
你可以通过以下几种方式控制作业并发数,确保总CPU占用不超过100核(即最多同时运行12个8核任务):
方法一:提交作业时直接设置数组任务并发上限
在你的提交脚本中,修改--array参数,添加并发限制。每个数组任务最多同时运行3个实例(4个数组×3个并发=12个总任务,12×8=96核,符合100核以内的要求):
#SBATCH --array=1-5%3
提交作业时,这个参数会限制每个数组作业同时运行的任务数不超过3个。如果你需要调整总并发数,只需修改%后面的数字即可。
方法二:修改已提交作业的并发限制
如果已经提交了作业但没设置并发上限,可以用scontrol命令更新每个数组作业的任务并发数:
- 先用
squeue -u $USER找到你的数组作业主ID(数组作业的主ID不带_数字后缀) - 执行以下命令设置每个数组最多同时运行3个任务:
scontrol update jobid=<你的数组作业主ID> arraytaskthrottle=3
对4个数组作业分别执行此命令即可。
方法三:手动暂停队列作业,按需释放
如果需要更灵活的控制,可以先暂停所有待运行的作业,再根据当前CPU使用情况分批释放:
- 暂停自己所有队列中的作业:
scontrol hold $(squeue -u $USER -o "%i" -h)
- 当运行中的任务数减少后,释放部分任务(比如每次释放3个):
# 释放指定作业的1-3号任务 scontrol release <作业ID>_[1-3]
或者直接通过更新并发限制自动释放:
scontrol update jobid=<作业ID> arraytaskthrottle=3
内容的提问来源于stack exchange,提问作者Jason M Gray
相关产品推荐
相关产品推荐

