You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Slurm单节点配32CPU最多仅同时运行16个作业如何解决

Slurm单节点最大运行作业数仅16的排查修复方案

你当前NodeName配置段的CPUs=32 CoresPerSocket=16 ThreadsPerCore=2和16物理核、双线程的硬件是匹配的,删除参数后slurmd启动报硬件不匹配是正常校验逻辑,这部分配置不需要调整。单节点最多同时跑16个作业的问题,按优先级依次检查以下配置项即可:

  • 首先确认资源选择插件配置正确
    仅配置SelectTypeParameters=CR_CPU不会生效,必须匹配正确的资源选择插件:
    • Slurm版本低于20.11时,SelectType必须设为select/cons_res
    • Slurm版本高于等于20.11时,SelectType必须设为select/cons_tres
      如果SelectType使用默认的select/linear,资源会按Socket/整节点维度分配,CPU级分配规则完全不生效。
  • 检查分区(Partition)级限制参数
    打开slurm.conf找到对应队列的PartitionName配置行,排查以下参数:
    • 若配置了MaxCPUsPerNode=16,会直接限制单节点最多可分配16个CPU给作业,将值改为32即可
    • 若配置了DefaultCpusPerTask=2,默认每个作业任务会申请2个CPU,32个CPU刚好只能承载16个单任务作业,将值改为1即可
    • 若配置了MaxJobsPerNode=16,会直接限制单节点同时运行的作业总数上限,将值改为32或注释掉使用默认无限制即可
    • 检查DefMemPerNode/DefMemPerCPU参数,如果单作业默认内存申请设置过高,会因为内存容量不足触发调度上限,可根据节点实际内存调低默认内存申请值。
  • 检查全局默认调度参数
    在控制节点执行scontrol show config查看以下全局参数值:
    • DefCpuPerTask:全局默认每个任务分配的CPU数,若值为2会导致单CPU作业实际占2个CPU,改为1即可
    • MaxTasksPerNode:全局单节点最大运行任务数,若值为16会直接卡上限,改为0(无限制)或32即可
    • FastSchedule:若值为2,Slurm会严格使用配置文件写死的硬件参数,忽略实际硬件探测结果,容易出现CPU计数偏差,改为1让Slurm启动时自动识别硬件线程数即可。
  • 检查cgroup资源约束配置
    如果开启了cgroup资源限制(cgroup.conf中ConstrainCores=yes),排查以下配置:
    • 检查是否配置了AllowedCores参数,人为限制了节点可用CPU范围为前16个逻辑核,注释掉该参数或改为0-31即可
    • 若开启了TaskAffinity=yes,默认绑定规则可能将每个作业绑定到单个物理核心(占用2个超线程),可临时将ConstrainCores设为no重启服务测试,确认是cgroup限制后调整CPU绑定规则为按逻辑CPU分配即可。
  • 验证资源识别与占用情况
    执行scontrol show node node0查看节点TRES配置:

    确认CfgTRES字段中CPU总数为32,检查是否存在系统预留、管理员预留占用了16个CPU(可通过scontrol show reservation查看是否存在CPU预留规则)。
    提交测试作业时可显式指定--cpus-per-task=1,通过squeue -o "%.18i %.9P %.8j %.8u %.2t %.10M %.6D %C"查看每个作业实际占用的CPU数,确认是否存在隐式的资源多申请问题。

所有配置修改完成后,需要重启slurmctld服务以及所有计算节点的slurmd服务,重新加载配置后生效。

内容的提问来源于stack exchange,提问作者CLTECH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 09:54:28