GCP-Slurm无法调度超过150个节点运行作业的配置与故障排查
Slurm节点调度异常排查结论
Slurm本身存在限制运行节点、作业规模的相关参数,但你当前遇到的调度卡滞问题,核心不是基础规模参数配置不足。
现有配置校验
你当前的配置本身足够支撑目标作业规模,不会触发参数限流:
- 作业提交脚本配置:
#SBATCH -o ./out/vs.%j.out #SBATCH --ntasks=1 #SBATCH --cpus-per-task=16 #SBATCH -W
- slurm.conf现有规模参数:
MaxArraySize=50000 MaxJobCount=50000 #COMPUTE NODE NodeName=DEFAULT CPUs=16 RealMemory=63216 State=UNKNOWN NodeName=node-0-[0-599] State=CLOUD
你配置的50000作业/作业数组上限,远高于2000个作业数组、400个作业的实际需求;定义的600个云节点名额,扣除已运行其他任务的100个节点,剩余500个名额也完全满足400个作业的运行需求。
故障根因
你贴出的错误日志已经定位到核心问题:
[2022-06-20T01:18:41.294] error: get_addr_info: getaddrinfo() failed: Name or service not known [2022-06-20T01:18:41.294] error: slurm_set_addr: Unable to resolve “node-333" [2022-06-20T01:18:41.294] error: fwd_tree_thread: can't find address for host node-333, check slurm.conf
GCP上部署的Slurm集群采用CLOUD状态节点按需拉起的逻辑,未启动的节点不会在GCP DNS中注册解析记录。Slurm默认配置下会提前尝试解析所有待分配节点的主机名,解析失败就会跳过对应节点的分配流程,不会触发节点拉起动作,最终可运行节点数就会卡在已完成创建、可正常解析的节点规模(即你观测到的130-150个节点区间)。
需要补充调整的配置
在slurm.conf中添加/修改以下参数,重启slurmctld服务生效:
- 配置
CloudRegAddr=slurmctld:开启云模式适配,告知控制节点不需要提前解析未启动的CLOUD状态节点地址,等节点启动后主动向控制节点注册即可,直接解决主机名解析报错 - 配置
MaxStartups=1000:调大Slurm并发启动作业/节点的上限,默认值通常较低,会限制同时拉起的节点数量 - 配置
SlurmdTimeout=300:延长slurmd通信超时时间,适配云节点从创建到启动服务的耗时,避免将启动中的节点误判为失效 - 确认
ResumeProgram参数正确指向GCP Slurm部署配套的节点拉起脚本,保证Slurm申请资源时可以正常调用GCP接口创建计算实例
额外校验项
- 核查GCP对应区域的vCPU配额:每个作业占用16 vCPU,400个作业加现有100个节点共需要8000 vCPU,配额不足会直接导致节点创建失败
- 核查节点拉起脚本的运行日志,确认调用GCP实例创建API时无权限、配额类报错
- 作业脚本中的
-W参数仅控制提交端等待所有作业数组完成后再返回,不影响调度逻辑,无需调整
内容的提问来源于stack exchange,提问作者Hyungsik Jo
相关产品推荐
相关产品推荐

