Одновременное выполнение нескольких заданий на одном узле с использованием slurm

#ubuntu-18.04 #slurm

#ubuntu-18.04 #слурм

Вопрос:

Большинство наших заданий либо (относительно) требуют мало ресурсов процессора и много памяти (обработка данных), либо требуют мало памяти и много ресурсов процессора (моделирование). Сервер, который у нас есть, как правило, достаточно большой (256 ГБ памяти; 16 ядер) для одновременного выполнения нескольких заданий, и мы хотели бы использовать slurm для планирования этих заданий. Однако, тестируя на небольшом (4 процессора) сервере Amazon, я не могу заставить это работать. Я должен был бы использовать SelectType=select/cons_res и SelectTypeParameters=CR_CPU_Memory , насколько я знаю. Однако при запуске нескольких заданий с использованием одного процессора они запускаются последовательно, а не параллельно.

Мой 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 заданий.

Ответ №1:

Вы не указываете память в своих файлах отправки. Кроме того, вы не указываете значение по умолчанию для памяти ( DefMemPerNode , или DefMemPerCPU ). В этом случае Slurm выделяет полную память для заданий, поэтому он не может выделить несколько заданий на одном узле.

Попробуйте указать память :

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

Вы можете проверить ресурсы, потребляемые на узле с scontrol show node помощью (найдите AllocTRES значение).