Torque — система очередей

Кластер Torque Mpiexec

Torque

Для того чтобы запустить задачу на кластере, необходимо использовать систему управления заданиями Torque PBS. Обычно для этого создается специальный скрипт, и ставится в очередь с помощью команды qsub. Этот скрипт содержит информацию о необходимых ресурсах (число узлов кластера, необходимое количество оперативной памяти и необходимое время). В остальном этот скрипт является обычным bash-скриптом, в нем можно настроить нужные переменные среды и запустить необходимую программу. Этот скрипт будет запущен лишь на одном процессоре из выделенного списка. В обязанности скрипта входит запуск программы на всех остальных узлах, например, с помощью Mpiexec.

Пример

В этом примере в очередь добавляется задача sleep на один процессор, с максимальным временем выполнения 5 минут.
sleep.qs
#!/bin/bash
#PBS -N sleep
#PBS -l nodes=1
#PBS -l walltime=05:00

echo "Start date: `date`"
sleep 60
echo "  End date: `date`"
Отправка задачи на кластер осуществляется с помощью команды qsub:
qsub sleep.qs
Строчки, начинающиеся с #PBS, содержат параметры для команды qsub. Эти параметры можно также указывать явно при вызове qsub. Например:
qsub  -N sleep  -l nodes=1  -l walltime=5:00  sleep.qs
Параметры, отвечающие за выделение ресурсов можно указывать через запятую:
qsub  -l nodes=1,walltime=5:00  sleep.qs

qsub

Основные параметры команды qsub. Основные ресурсы (используются с опцией -l). Переменные окружения, которые устанавливает Torque. Дополнительную информацию можно получить на странице документации Torque.

Очередь задач

qstat

Просмотреть состояние задач в очереди можно с помощью команды qstat. Команда qstat -a даст несколько больше информации. Текущее состояние задачи отмечено в столбце S.
С помощью команды qstat -n можно получить информацию о том, какие именно процессоры выделены для запущенных задач.

qdel

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

pbstop

pbstop позволяет мониторить основную информацию о состоянии кластера (общая информация, занятость процессоров и очередь задач). Пример вывода pbstop:
Usage Totals: 468/480 Procs, 27/28 Nodes, 10/11 Jobs Running                        19:04:48
Node States:     6 free                  27 job-exclusive          1 offline

 Visible CPUs: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23
          1                        2
          -------------------------------------------------
  cl1n001 dddddddddddddddd         ssssssssssssdddd           [x8core e5core mix]
  cl1n003 ssssssssssssssss         ssssssssssssssss           [x8core e5core mix]
  cl1n005 dddddddddddddddddddddddd dddddddddddddddddddddddd   [x12core e5core mix]
  cl1n007 dddddddddddddddddddddddd dddddddddddddddddddddddd   [x12core e5core mix]
  cl1n009 uuuuuuuuuuuuuuuuuuuuuuuu uuuuuuuuuuuuuuuuuudddddd   [x12core e5core mix]
  cl1n011 uuuuuuuuuuuuuuuuuuuuuuuu vvvvvvvvvvvvvvvvuuuuuuuu   [x12core e5core mix]
  cl1n013 YYYYYYYYYYYYYYYYYYYY     ppppppppppppdddddddd       [x10core e5core mix]
  cl1n015 PPPPPPPPPPPPPPPPpppp     yyyyyyyyyyyyyyyyyyyy       [x10core e5core mix]
  cl1n031 %%%%%%%%%%%%             gggggggggggg               [x6core mix]
  cl1n033 GGGGGGGGGGGG             dddddddddddd               [x6core mix]
  cl1n035 gggggggggggg             gggggggggggg               [x6core mix]
  cl1n037 GGGGGGGGGGGG             dddddddddddd               [x6core mix]
  cl1n039 gggggggggggg             GGGGGGGGGGGG               [x6core mix]
  cl1n041 GGGGGGGGGGGG             dddddddddddd               [x6core mix]
          -------------------------------------------------
 [.] idle  [@] busy  [*] down  [%] offline  [!] other  [?] unknown

      Job#         Username Queue        Jobname          CPUs/Nodes S   Elapsed/Requested
  g = 6134         glas     mix          inmh80di2          48/4     R  04:26:16/12:00:00
  G = 6135         glas     mix          inmh80di           48/4     R  04:26:16/12:00:00
  s = 6139         smatveev mix          vl6r8              44/44    R  04:21:44/06:00:00
  d = 6153         danilov  mix          xxtest            166/166   R  00:02:04/06:00:00
  y = 6118         yanbaris x10core      sloshing-scaled-   20/1     R  04:26:50/24:00:00
  Y = 6119         yanbaris x10core      sloshing-scaled-   20/1     R  04:26:50/24:00:00
  P = 6132         polina   x10core      gcm16.exe          16/16    R  04:26:24/12:00:00
  p = 6133         polina   x10core      gcm16.exe          16/16    R  04:26:24/12:00:00
  v = 6141         volodin  x12core      gcm16.exe          16/16    R  03:00:38/18:00:00
  u = 6150         ushakov  x12core      atm-ncar           74/74    R  01:07:29/24:00:00
      6152         danilov  x12core      xxtest            102/102   C  00:28:38/06:00:00

Очереди задач на кластере

На кластере действует несколько очередей для задач. Все узлы кластера разбиты на несколько групп. Каждая очередь может использовать только узлы из одной или нескольких определённых групп. Для каждой очереди устанавливается своё ограничение по времени выполнения задачи. Также есть возможность ограничения доступа разных групп пользователей к разным очередям.
Название очереди cluster2h2cl1n001–cl1n004 cl1n005–cl1n012 cl1n013–cl1n016 cl1n031–cl1n042 Всего ядерОграничение по времени
x6core (sixcore) +144 24 часа
x8core (eightcore) + 64 24 часа
x10core (tencore) + 80 24 часа
x12core + 192 24 часа
mix ++++480 12 часов
e5core +++ 336 24 часа

Чтобы отправить задачу, например, в очередь x12core нужно добавить параметр -q x12core для комады qsub:
qsub -q x12core -N big-problem -l nodes=2:ppn=24  qbig.qs
Или добавить строчку
#PBS -q x12core
в скрипт для qsub.
По умолчанию в настоящее время используетя очередь x6core.