Все команды Slurm

К пользовательским командам относятся: sacct, salloc, sattach, sbatch, sbcast, scancel, scontrol, sinfo, sprio, squeue, srun, sshare, sstat, strigger и sview.  (Используйте    команду «man  command» или «command —help» для получения подробного описания  )

sacct   получить   информацию  о задании или шагов заданих (active or completed )

salloc  используется для распределения ресурсов выполнения задачи в реальном времени.  Обычно  используется для формирования окружения и  затем  выполнения команды  srun  для запуска параллельных задач.

sattach  используется для стандартного ввода, вывода, вывода ошибок  текущего выполняющегося задания или шагу задания.

sbatch для отложеного запуска заданий Скрипт содержит одну или несколько команд srun   для запуска параллельных задач.

sbcast  используется для передачи файла с локального диска на локальный диск  узла , выделенного для задания

scancel  используется для отмены ожидающего или выполняющегося задания или шага задания. Его также можно использовать для отправки произвольного сигнала всем процессам, связанным с выполняющимся заданием или этапом задания.

scontrol   это административный инструмент, используемый для просмотра и / или изменения состояния Slurm

sinfo сообщает о состоянии разделов и узлов, управляемых Slurm. Он имеет широкий спектр параметров фильтрации, сортировки и форматирования.

sprio  используется для отображения подробного представления компонентов, влияющих на приоритет задания.

squeue  сообщает о состоянии заданий или этапах задания. Он имеет широкий спектр параметров фильтрации, сортировки и форматирования. По умолчанию он сообщает о запущенных заданиях в порядке приоритета, а затем о незавершенных заданиях в порядке приоритета.

srun  используется для отправки задания на выполнение или запуска шагов задания в реальном времени.  srun имеет широкий спектр опций для определения требований к ресурсам, в том числе:

  • минимальное и максимальное количество узлов,
  • количество процессоров,
  • конкретные узлы, которые нужно или не использовать,
  • и конкретные характеристики узлов (такой объем памяти, дискового пространства, определенные требуемые функции и т. д.) .

Задание может содержать несколько этапов задания, выполняемых последовательно или параллельно на независимых или общих ресурсах в распределении узлов задания.

sshare  отображает подробную информацию об использовании fairshare в кластере. Это возможно только при использовании плагина  priority/multifactor .

sstat  используется для получения информации о ресурсах, используемых выполняющимся заданием или этапом задания.

strigger  используется для установки, получения или просмотра триггеров событий. К триггерам событий относятся :  выход из строя узлов или приближение заданий к своему ограничению по времени.

sview   графический пользовательский интерфейс для получения и обновления информации о состоянии заданий, разделов и узлов, управляемых Slurm. 

Примеры.

Сначала мы определяем, какие разделы существуют в системе, какие узлы они включают и общее состояние системы. Эта информация предоставляется командой sinfo. Есть два раздела: отладочный и пакетный.

* debug указывает, что это раздел по умолчанию для отправленных заданий.

Информация о каждом разделе может быть разделена более чем на одну строку, чтобы можно было идентифицировать узлы в разных состояниях.

sinfo:
 PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
 debug*    up    30:00     2     down*  adev[1-2]
 debug*    up    30:00     3     idle   adev[3-5]
 batch     up    30:00     3     down*  adev[6,13,15]
 batch     up    30:00     3     alloc  adev[7-8,14]
 batch     up    30:00     4     idle   adev[9-12]

Затем мы определяем, какие задания существуют в системе, с помощью команды squeue.

(R — это сокращение от Running), когда одно задание находится в состоянии ожидания

(PD — это сокращение от Pending).

В поле TIME показано, как долго выполнялись задания при использовании формата дни-часы: минуты: секунды.

Поле NODELIST (REASON) указывает, где выполняется задание или причину, по которой оно еще не выполнено.

squeue

 JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
65646 batch      chem mike R  24:19 2    adev[7-8]
65647 batch      bio  joan R   0:09 1    adev14
65648 batch      math phil PD  0:00 6   (Resources)

Команду scontrol можно использовать для получения более подробной информации об узлах, разделах, заданиях, этапах задания и конфигурации.

scontrol show partition
PartitionName=debug TotalNodes=5 TotalCPUs=40 RootOnly=NO
 Default=YES OverSubscribe=FORCE:4 PriorityTier=1 State=UP
 MaxTime=00:30:00 Hidden=NO
 MinNodes=1 MaxNodes=26 DisableRootJobs=NO AllowGroups=ALL
 Nodes=adev[1-5] NodeIndices=0-4

PartitionName=batch TotalNodes=10 TotalCPUs=80 RootOnly=NO
 Default=NO OverSubscribe=FORCE:4 PriorityTier=1 State=UP
 MaxTime=16:00:00 Hidden=NO
 MinNodes=1 MaxNodes=26 DisableRootJobs=NO AllowGroups=ALL
 Nodes=adev[6-15] NodeIndices=5-14


 scontrol show node adev1
NodeName=adev1 State=DOWN* CPUs=8 AllocCPUs=0
 RealMemory=4000 TmpDisk=0
 Sockets=2 Cores=4 Threads=1 Weight=1 Features=intel

 scontrol show partition
PartitionName=debug TotalNodes=5 TotalCPUs=40 RootOnly=NO
 Default=YES OverSubscribe=FORCE:4 PriorityTier=1 State=UP
 MaxTime=00:30:00 Hidden=NO
 MinNodes=1 MaxNodes=26 DisableRootJobs=NO AllowGroups=ALL
 Nodes=adev[1-5] NodeIndices=0-4

PartitionName=batch TotalNodes=10 TotalCPUs=80 RootOnly=NO
 Default=NO OverSubscribe=FORCE:4 PriorityTier=1 State=UP
 MaxTime=16:00:00 Hidden=NO
 MinNodes=1 MaxNodes=26 DisableRootJobs=NO AllowGroups=ALL
 Nodes=adev[6-15] NodeIndices=5-14

scontrol show node adev1
NodeName=adev1 State=DOWN* CPUs=8 AllocCPUs=0
 RealMemory=4000 TmpDisk=0
 Sockets=2 Cores=4 Threads=1 Weight=1 Features=intel

Можно создать распределение ресурсов и запускать задачи для шага 
задания в одной командной строке с помощью команды srun. 
В зависимости от используемой реализации MPI таким образом также 
могут запускаться задания MPI. 

В этом примере мы выполняем /bin/hostname на трех узлах (-N3) и
включаем номера задач в вывод (-l). 
Будет использован раздел по умолчанию. 
По умолчанию будет использоваться одна задача на узел. 
 srun -N3 -l /bin/hostname
0: adev3
1: adev4
2: adev5

Этот вариант предыдущего примера выполняет /bin/hostname в четырех 
задачах (-n4). По умолчанию для каждой задачи будет использоваться
 один процессор (обратите внимание, что мы не указываем количество 
узлов).

srun -n4 -l /bin/hostname 0: adev3 1: adev3 2: adev3 3: adev3

Один из распространенных режимов работы — отправить сценарий для последующего выполнения. В этом примере имя сценария — my.script, и мы явно используем узлы adev9 и adev10 (-w «adev [9-10]»). Мы также явно заявляем, что последующие шаги задания будут порождать по четыре задачи, что гарантирует, что в нашем выделении будет не менее четырех процессоров (по одному процессору на каждую задачу, которая будет запущена). Результат появится в файле my.stdout («-o my.stdout»). Этот скрипт содержит встроенный в себя временной предел для задания. Другие параметры могут быть предоставлены по желанию с использованием префикса «#SBATCH», за которым следует параметр в начале сценария (перед любыми командами, которые должны быть выполнены в сценарии). Параметры, указанные в командной строке, переопределяют любые параметры, указанные в сценарии. Обратите внимание, что my.script содержит команду / bin /hostname, которая выполнялась на первом узле в распределении (где выполняется сценарий), плюс два шага задания, инициированных с помощью команды srun и выполняемых последовательно.

 cat my.script
#!/bin/sh
#SBATCH --time=1
/bin/hostname
srun -l /bin/hostname
srun -l /bin/pwd

 sbatch -n4 -w "adev[9-10]" -o my.stdout my.script
sbatch: Submitted batch job 469

cat my.stdout
adev9
0: adev9
1: adev9
2: adev10
3: adev10
0: /home/jette
1: /home/jette
2: /home/jette
3: /home/jette

Последний режим работы — создать распределение ресурсов и порождать шаги задания в рамках этого распределения. Команда salloc используется для создания выделения ресурсов и обычно запускает оболочку внутри этого выделения. Один или несколько шагов задания обычно выполняются в рамках этого распределения с использованием команды srun для запуска задач.  Наконец, оболочка, созданная salloc, будет завершена с помощью команды exit.

Slurm не переносит автоматически исполняемые файлы или файлы данных на узлы, выделенные для задания. Файлы должны существовать на локальном диске или в какой-либо глобальной файловой системе . Существует  инструмент sbcast для передачи файлов в локальное хранилище на выделенных узлах с использованием иерархической связи Slurm.  В этом примере мы используем sbcast для передачи исполняемой программы a.out в /tmp/joe.a.out  на локальный узел.  После выполнения программы удаляем ее из локального хранилища :

tux0: salloc -N1024 bash
$ sbcast a.out /tmp/joe.a.out
Granted job allocation 471
$ srun /tmp/joe.a.out
Result is 3.14159
$ srun rm /tmp/joe.a.out
$ exit
salloc: Relinquishing job allocation 471

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

adev0: sbatch test
srun: jobid 473 submitted

adev0: squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
473 batch test jill R 00:00 1 adev9

adev0: scancel 473

adev0: squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)