Slurm GANG调度未交替执行作业问题排查求助
Slurm单节点GANG调度不生效问题排查
核心误解:GANG调度的运行前提
GANG调度的核心是让多个作业组同时占用节点的不同资源分片,而非让占用全节点资源的作业交替执行。你遇到的顺序执行问题,本质是测试作业默认占满了节点全部资源,Slurm没有并行调度的空间,自然只能按顺序启动。
具体排查与修正步骤
1. 检查测试作业的资源请求
如果测试脚本未指定CPU/内存资源,Slurm会默认分配节点全部可用资源。单节点资源被一个作业占满时,GANG调度无法并行启动其他作业。
- 修正测试脚本,给每个作业指定部分CPU资源(比如节点有4核,每个作业用1核):
#!/bin/bash #SBATCH --cpus-per-task=1 while true; do date sleep 10 done
2. 确认slurm.conf关键配置
确保你的配置满足GANG调度的基础要求:
SchedulerType=sched/backfill(GANG调度依赖backfill调度器)SchedulerTimeSlice=15(时间片配置正确)SelectType=select/cons_resSelectTypeParameters=CR_CPU(CPU资源调度场景)- 节点资源配置准确,例如:
NodeName=localhost CPUs=4 State=UNKNOWN(根据实际节点CPU数调整)
3. 验证调度效果
提交多个指定部分资源的作业后,用squeue -l查看资源占用。如果节点有4核,提交4个1核作业,它们会同时处于RUNNING状态——此时Slurm会按照SchedulerTimeSlice的设置在作业间进行内核级轮转,只是squeue不会显示状态切换,所有作业都保持运行状态。
额外需求说明
如果你的目标是让占用全节点资源的长短作业交替执行,GANG调度并不适用,应该使用时间分片调度(Time Sharing),需调整以下配置:
SchedulerType=sched/builtin(内置调度器支持时间片轮转)SchedulerTimeSlice=15- 补充配置作业暂停/恢复参数,例如
SuspendTime=0、ResumeTime=0,确保作业能快速切换。
内容的提问来源于stack exchange,提问作者Francisco José Letterio
相关产品推荐
相关产品推荐

