我想在多个节点上平均分配作业,并在我的sbatch文件中指定了--distribution = cyclic,但是slurm忽略了这一点,而是使用了块分配。
之前,任务在节点之间平均分配。通过阅读文档,这是我期望的默认行为,除非在slurm.conf中另行指定。
从今天开始,任务将聚集在第一个节点上,而每个其他节点上只有一个任务。我显然已经更改了配置中的某些内容,但不知道要在哪里修复它。我确实对计算节点的映像进行了更改,并在今天重新启动了它们。
当我尝试在头节点上停止slurmctld时,它由Bright Cluster Manager监视器立即重新启动。不知道这是否阻止配置更新。
我已经研究了slurm.conf文件,但是看起来还可以。我已经尝试了SelectTypeParameters = CR_Core和CR_CPU,但是得到了相同的结果。
要尝试解决此问题,我在自己的sbatch文件中添加了--distribution = cyclic,但仍使用'block'方法分配slurm。但是根据我对文档的理解,至少不必将此添加到sbatch中。
这是slurm.conf和我的sbatch脚本中的相关行:
# RESOURCES
SelectType=select/cons_res
SelectTypeParameters=CR_Core
# Node Description
NodeName=DEFAULT Sockets=2 CoresPerSocket=20 ThreadsPerCore=1
# Scheduler
SchedulerType=sched/backfill
#SBATCH --ntasks=12
#SBATCH --nodes=3
#SBATCH --distribution=cyclic:cyclic
我希望任务在节点之间平均分配,三个节点中的每个节点上都有四个任务。
这是任务实际分配的方式:
NODELIST STATE CPUS(A/I/O/T) MEMORY TMP_DISK REASON
compute001 mixed 10/30/0/40 192006 2038 none
compute002 mixed 1/39/0/40 192006 2038 none
compute003 mixed 1/39/0/40 192006 2038 none
compute004 idle 0/40/0/40 192006 2038 none
答案 0 :(得分:0)
根据https://slurm.schedmd.com/sbatch.html,分发标志仅对srun有用:
指定远程进程的替代分发方法。在sbatch中,这仅设置环境变量,这些变量将被后续的srun请求使用。
(关于为什么是这样的……我不知道。但是看来确实是设计使然。)
根据您的配置,通过设置SelectType = cons_res或cons_tres和SelectTypeParameters = CR_LLN,您可能能够近似所需的内容。如果这些参数中的任何一个最近改变了,那也可能是行为改变的原因。
答案 1 :(得分:0)
通过修改sbatch文件以限制分配给每个节点的任务数,我设法在节点之间手动分配了进程:
#SBATCH --ntasks=12
#SBATCH --nodes=3
#SBATCH --tasks-per-node=4
这将导致任务在节点之间的预期分布:
NODELIST STATE CPUS(A/I/O/T) MEMORY TMP_DISK REASON
compute001 mixed 4/36/0/40 192027 2038 none
compute002 mixed 4/36/0/40 192027 2038 none
compute003 mixed 4/36/0/40 192027 2038 none
compute004 idle 0/40/0/40 192027 2038 none