Система очередей

Для доступа к ресурсам кластера используется система управления вычислительными ресурсами SLURM.

Система выполняет как традиционные команды PBS (qsub, qstat), так и специфические команды SLURM.

Структура кластера

Структура и состояние кластера отображается командой sinfo

PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
fogs         up   infinite      2  alloc fog[2,8]
fogs         up   infinite      6   idle fog[1,3-7]
fms          up   infinite      1  alloc fm1
fms          up   infinite      3   idle fm[2-4]
preempt      up   infinite      4  alloc fm1,fog[2,8],mathserv
preempt      up   infinite     10   idle fm[2-4],fog[1,3-7],ts
preempt      up   infinite      1   down gis-eng3
all*         up   infinite      4  alloc fm1,fog[2,8],mathserv
all*         up   infinite     10   idle fm[2-4],fog[1,3-7],ts
all*         up   infinite      1   down gis-eng3

В структуре кластера выделены два подраздела fogs и fms, представляющие собой однородные кластеры

подраздел число узлов основной процессор коммуникация сопроцессор
fogs 8 2x AMD O2435 InfiniBand DDR нет
fms 4 2x Intel Xeon X5675 Gigabit Ethernet 4x NVIDIA Tesla C2070

Все узлы кластера объединены в раздел all. Раздел preempt выделен для служебных задач.

Узел gis-eng3 служит головным узлом кластера и выведен из под управления SLURM.

Интерактивный режим

Команды SLURM

Для работы в интерактивном режиме необходимо

  1. Зарезервировать ресурсы командой salloc
  2. Выполнять команды в рамках выделенных ресурсов командой srun
  3. Освободить ресурсы командой exit

Примеры:

Пример 1. Запуск нескольких команд на одном узле из раздела fms

(gis-eng3)$ salloc -N1 -p fms --exclusive 
salloc: Granted job allocation 19877
(gis-eng3)$ srun /bin/hostname
fm2.cl.localnet
(gis-eng3)$ srun gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

(gis-eng3)$ exit
exit
salloc: Relinquishing job allocation 19877

Пример 2. Запуск интерпретатора команд на узле

(gis-eng3)$ salloc -N1 -p fms --exclusive
salloc: Granted job allocation 19878
(gis-eng3)$ srun --pty /bin/bash
(fm2)$ /bin/hostname
fm2.cl.localnet
(fm2)$ gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

(fm2)$ exit
exit
(gis-eng3)$ exit
exit
salloc: Relinquishing job allocation 19878

Этот вариант удобен, если выполняемые команды требуют установки переменных окружения.

Пример 3. Запуск команды одной строкой

(gis-eng3)$ srun -N1 -p fms /bin/hostname
fm2.cl.localnet

Команды PBS

Команда qsub -I эквивалентна команде salloc

Пример 4. Запуск команды в интерактивном режиме с помощью qsub и srun

(gis-eng3)$ qsub -I
salloc: Granted job allocation 19880
(gis-eng3)$ srun /bin/hostname
fm2.cl.localnet
(gis-eng3)$ exit
exit
salloc: Relinquishing job allocation 19880

Пакетный режим

Команды SLURM

Для резервирования ресурсов и запуска задач в пакетном режиме используется команда sbatch.

Аргументы для команды можно включить в текст скрипта пакетной задачи:

#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=12
#SBATCH --partition=fms

srun /bin/hostname

Поставить задачу в очередь на выполнение можно командой

sbatch slurm-test.job

Когда ресурсы освободятся, этот скрипт выполнится на одном из узлов из раздела fms.

Команды PBS

$ qsub qsub-test.sh

Скрипт qsub-test.sh может использовать в качестве синтаксиса резервирования ресурсов как синтаксис Torque, так и синтаксис PBS Professional

#!/bin/bash
# Using Torque syntax
#PBS -q fms
#PBS -l nodes=1:ppn=12

/bin/hostname
#!/bin/bash
# Using PBS Professional syntax
#PBS -q fms
#PBS -l select=1:ncpus=12

/bin/hostname

При успешной постановке в очередь будет показан id, присвоенный задаче.

Команда qsub scriptname эквивалентна команде с учетом трансляции директив #PBS в директивы #SLURM

/usr/bin/sbatch -e scriptname.e%A -o scriptname.o%A scriptname 2>&1

Просмотр состояния очереди

Команды SLURM

Для отображения состояния очереди используется команда squeue

Формат отображения представлен ниже

JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
19074   preempt gitlab-c     root  R 16-00:42:19      1 fog8
19246       all jupyter-    user1  R 15-04:20:50      1 fog2
19257       all jupyter-    user2  R 14-23:24:30      1 fm1
19868       all  taverna    user3  R     5:10:41      1 mathserv

Команды PBS

Команда qstat отображает список задач в очереди в формате, привычном пользователям PBS

Job id              Name             Username        Time Use S Queue          
------------------- ---------------- --------------- -------- - ---------------
19074               gitlab-ci        root            16:00:45 R preempt        
19246               jupyter-         user1           15:04:24 R all            
19257               jupyter-         user2           14:23:28 R all            
19868               taverna          user3           00:05:14 R all