SLURM混合集群线程分配异常及配置优化咨询
SLURM混合集群配置问题解答
1. 是否可将ThreadsPerCore不同的节点纳入同一SLURM集群?
可以。SLURM完全支持包含不同线程配置(ThreadsPerCore)的节点混合部署,只要每个节点的硬件信息被SLURM正确识别(通过slurmd -C输出能看到准确的CPUs、ThreadsPerCore等参数即说明识别正常),集群可以统一管理这类异构节点,调度器会根据节点的资源属性分配任务。
2. 如何修改配置使任务按线程分配以充分利用tpc2的资源?
当前问题核心是SLURM默认按核心(而非逻辑线程)分配资源,需调整以下配置:
步骤1:确认节点资源配置(可选但推荐)
在slurm.conf中明确指定每个节点的硬件参数(确保与slurmd -C输出一致):
NodeName=tpc2 CPUs=80 Boards=1 SocketsPerBoard=2 CoresPerSocket=20 ThreadsPerCore=2 RealMemory=515620 State=UNKNOWN NodeName=tpc1 CPUs=32 Boards=1 SocketsPerBoard=1 CoresPerSocket=32 ThreadsPerCore=1 RealMemory=190210 State=UNKNOWN PartitionName=all Nodes=tpc1,tpc2 Default=YES MaxTime=INFINITE State=UP
步骤2:调整资源选择参数
修改slurm.conf中的SelectTypeParameters,添加CR_LLN(Logical Level Node)参数,让SLURM按逻辑CPU(线程)粒度分配资源:
SelectType=select/cons_res SelectTypeParameters=CR_CPU_Memory,CR_LLN
步骤3:重启SLURM服务
修改配置后,重启控制节点的slurmctld和所有计算节点的slurmd服务:
# 控制节点执行 systemctl restart slurmctld # 计算节点分别在tpc1、tpc2执行 systemctl restart slurmd
完成上述配置后,提交--cpus-per-task=1的任务时,tpc2将能同时运行80个任务,tpc1运行32个任务,充分利用所有逻辑线程资源。
内容的提问来源于stack exchange,提问作者Emma Athan
相关产品推荐
相关产品推荐

