使用 slurm 在同一节点上同时 运行 多个作业
Simultaneously running multiple jobs on same node using slurm
我们的大多数工作要么(相对)CPU 低而内存高(数据处理),要么内存低而 CPU 高(模拟)。我们拥有的服务器通常足够大(256GB 内存;16 个内核)以同时容纳多个作业 运行ning,我们希望使用 slurm 来安排这些作业。但是,在小型 (4 CPU) 亚马逊服务器上进行测试时,我无法正常工作。据我所知,我将不得不使用 SelectType=select/cons_res
和 SelectTypeParameters=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 个并行作业。
您没有在提交文件中指定内存。此外,您没有指定内存的默认值(DefMemPerNode
或 DefMemPerCPU
)。在这种情况下,Slurm 会将全部内存分配给作业,因此无法在一个节点上分配多个作业。
尝试指定内存:
sbatch -n1 -N1 --mem-per-cpu=1G job.sh
您可以使用 scontrol show node
检查节点上消耗的资源(查找 AllocTRES
值)。
我们的大多数工作要么(相对)CPU 低而内存高(数据处理),要么内存低而 CPU 高(模拟)。我们拥有的服务器通常足够大(256GB 内存;16 个内核)以同时容纳多个作业 运行ning,我们希望使用 slurm 来安排这些作业。但是,在小型 (4 CPU) 亚马逊服务器上进行测试时,我无法正常工作。据我所知,我将不得不使用 SelectType=select/cons_res
和 SelectTypeParameters=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 个并行作业。
您没有在提交文件中指定内存。此外,您没有指定内存的默认值(DefMemPerNode
或 DefMemPerCPU
)。在这种情况下,Slurm 会将全部内存分配给作业,因此无法在一个节点上分配多个作业。
尝试指定内存:
sbatch -n1 -N1 --mem-per-cpu=1G job.sh
您可以使用 scontrol show node
检查节点上消耗的资源(查找 AllocTRES
值)。