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

SLURM集群无法提交超过8CPU的任务求助

问题原因与解决方案

核心问题:内存配置严重不匹配

提交作业报错的根本原因是Slurm的内存资源配置与节点实际物理内存矛盾,导致请求的CPU核心数对应的内存需求超出节点承载能力。

1. 全局内存参数配置错误

你的slurm.conf中设置了:

DefMemPerCPU=128000
MaxMemPerCPU=128000

这意味着每个CPU核心默认/最大分配128GB内存(Slurm中内存单位为MB)。而节点配置的RealMemory=256000仅为256GB总内存,理论上只能支持2个CPU核心(2×128GB=256GB),但节点实际有40个核心,完全违背物理资源逻辑。

当提交--cpus-per-task=10的作业时,Slurm会计算需要10×128GB=1280GB内存,远超过节点实际可用内存,因此直接返回资源不可用的错误。

2. 节点内存配置与实际不符

从sinfo输出可以看到:

  • g01实际内存为258120MB
  • g02实际内存为103285MB
  • g03实际内存为515734MB
    但slurm.conf中所有节点的RealMemory都设为256000MB,与实际物理内存严重不符,进一步加剧了资源计算的错误。

解决步骤

1. 修正slurm.conf中的内存配置

(1)调整全局内存参数

将DefMemPerCPU和MaxMemPerCPU修改为合理值,建议按节点总内存除以核心数计算(以g01为例:258120MB ÷40≈6453MB),比如:

DefMemPerCPU=6400
MaxMemPerCPU=6400

如果不需要强制限制单CPU内存,也可以将MaxMemPerCPU设为0(表示不限制,仅受节点总内存约束)。

(2)修正节点实际内存配置

更新NodeName行的RealMemory值,匹配sinfo显示的实际内存:

NodeName=g01 CPUs=40 Sockets=2 CoresPerSocket=20 ThreadsPerCore=2 RealMemory=258120 State=UNKNOWN
NodeName=g02 CPUs=40 Sockets=2 CoresPerSocket=20 ThreadsPerCore=2 RealMemory=103285 State=UNKNOWN Gres=gpu:P100:1
NodeName=g03 CPUs=40 Sockets=2 CoresPerSocket=20 ThreadsPerCore=2 RealMemory=515734 State=UNKNOWN

2. 重启Slurm服务

修改配置后,需要重启控制节点和计算节点的Slurm服务:

# 控制节点重启slurmctld
systemctl restart slurmctld

# 所有计算节点重启slurmd
systemctl restart slurmd

3. 验证配置与作业提交

使用以下命令查看节点资源是否匹配实际:

sinfo -o "%N %C %m"

再次提交--cpus-per-task=10的测试作业,确认报错问题解决。


内容的提问来源于stack exchange,提问作者Tung-Han Hsieh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 01:06:30