使用 slurm 在同一节点上同时 运行 多个作业

Simultaneously running multiple jobs on same node using slurm

我们的大多数工作要么(相对)CPU 低而内存高(数据处理),要么内存低而 CPU 高(模拟)。我们拥有的服务器通常足够大(256GB 内存;16 个内核)以同时容纳多个作业 运行ning,我们希望使用 slurm 来安排这些作业。但是,在小型 (4 CPU) 亚马逊服务器上进行测试时,我无法正常工作。据我所知,我将不得不使用 SelectType=select/cons_resSelectTypeParameters=CR_CPU_Memory。但是,当使用单个 CPU 启动多个作业时,这些作业将按顺序启动,而不是并行启动。

我的slurm.conf

ControlMachine=ip-172-31-37-52

MpiDefault=none
ProctrackType=proctrack/pgid
ReturnToService=1
SlurmctldPidFile=/var/run/slurm-llnl/slurmctld.pid
SlurmdPidFile=/var/run/slurm-llnl/slurmd.pid
SlurmdSpoolDir=/var/lib/slurm-llnl/slurmd
SlurmUser=slurm
StateSaveLocation=/var/lib/slurm-llnl/slurmctld
SwitchType=switch/none
TaskPlugin=task/none

# SCHEDULING
FastSchedule=1
SchedulerType=sched/backfill
SelectType=select/cons_res
SelectTypeParameters=CR_CPU_Memory

# LOGGING AND ACCOUNTING
AccountingStorageType=accounting_storage/none
ClusterName=cluster
JobAcctGatherType=jobacct_gather/none
SlurmctldLogFile=/var/log/slurm-llnl/slurmctld.log
SlurmdLogFile=/var/log/slurm-llnl/slurmd.log

# COMPUTE NODES
NodeName=ip-172-31-37-52 CPUs=4 RealMemory=7860 CoresPerSocket=2 ThreadsPerCore=2 State=UNKNOWN
PartitionName=test Nodes=ip-172-31-37-52 Default=YES MaxTime=INFINITE State=UP

job.sh

#!/bin/bash
sleep 30
env

运行宁作业时的输出:

ubuntu@ip-172-31-37-52:~$ sbatch -n1 -N1 job.sh 
Submitted batch job 2
ubuntu@ip-172-31-37-52:~$ sbatch -n1 -N1 job.sh 
Submitted batch job 3
ubuntu@ip-172-31-37-52:~$ sbatch -n1 -N1 job.sh 
Submitted batch job 4
ubuntu@ip-172-31-37-52:~$ sbatch -n1 -N1 job.sh 
Submitted batch job 5
ubuntu@ip-172-31-37-52:~$ sbatch -n1 -N1 job.sh 
Submitted batch job 6
ubuntu@ip-172-31-37-52:~$ sbatch -n1 -N1 job.sh 
Submitted batch job 7
ubuntu@ip-172-31-37-52:~$ squeue 
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
                 3      test   job.sh   ubuntu PD       0:00      1 (Resources)
                 4      test   job.sh   ubuntu PD       0:00      1 (Priority)
                 5      test   job.sh   ubuntu PD       0:00      1 (Priority)
                 6      test   job.sh   ubuntu PD       0:00      1 (Priority)
                 7      test   job.sh   ubuntu PD       0:00      1 (Priority)
                 2      test   job.sh   ubuntu  R       0:03      1 ip-172-31-37-52

这些作业是 运行 顺序的,而原则上应该可以 运行 4 个并行作业。

您没有在提交文件中指定内存。此外,您没有指定内存的默认值(DefMemPerNodeDefMemPerCPU )。在这种情况下,Slurm 会将全部内存分配给作业,因此无法在一个节点上分配多个作业。

尝试指定内存:

sbatch -n1 -N1 --mem-per-cpu=1G job.sh

您可以使用 scontrol show node 检查节点上消耗的资源(查找 AllocTRES 值)。