Запуск заданий и управление очередью с помощью LoadLeveler

Очередью заданий на системах IBM Blue Gene/P и Regatta, установленных на факультете ВМК МГУ, управляет планировщик IBM Tivoli LoadLeveler. Чтобы поставить задание в очередь, необходимо подготовить специальный командный файл, в котором будет указан путь к исполняемому файлу и запрашиваемые программой ресурсы. Описанию формата командного файла посвящены отдельные разделы, а в этом рассмотрены вопросы запуска заданий и управления очередью.

Полный список и подробное описание команд планировщика можно найти в официальной документации, здесь же мы приведем только самые необходимые:

  • llsubmit — постановка задания в очередь
  • llq — просмотр очереди заданий
  • llcancel — удаление задания из очереди
  • llhold — приостановка/продолжение продвижения задания в очереди
  • llmodify — изменение параметров задания
  • llprio — изменение приоритета задания
  • llclass — информация о классах заданий
  • llstatus — информация о машине

Краткую справку о ключах командной строки можно получить, использовав параметр -H, например:

$> llsubmit -H

llsubmit — постановка задания в очередь

Если задание описано с помощью командного файла test.jcf, который находится в текущей директории, то, чтобы поставить его в очередь, выполните команду

$> llsubmit test.jcf

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

llsubmit: The job "fen1.bg.cmc.msu.ru.157" has been submitted.

llq — просмотр очереди заданий

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

$> llq

Она выведет список примерно следующего вида:

Id                       Owner      Submitted   ST PRI Class        Running On
------------------------ ---------- ----------- -- --- ------------ -----------
fen1.156.0               shgnik     10/6  19:47 R  50  large        fen1
fen1.157.0               pozdneev   10/6  20:17 R  50  large        fen1
fen1.158.0               pozdneev   10/6  20:18 R  50  large        fen1
fen1.134.0               popova     10/6  15:56 H  50  large

4 job step(s) in queue, 0 waiting, 0 pending, 3 running, 1 held, 0 preempted

Столбцы списка содержат следующую информацию:

Заголовок Значение
Id Идентификатор задания: имя_машины.номер_задания.номер_шага
Owner Идентификатор пользователя, от имени которого запускается задание
Submitted Дата и время постановки задания в очередь, причем дата записана в североамериканском формате (т.е. 10/6 соответствует 6-му октября)
ST Состояние задания (здесь приведены не все возможные значения):
  • R — задание выполняется в данный момент («Running»)
  • ST — задание запускается в данный момент («Starting»)
  • P — задание переведено в процессе запуска («Pending»)
  • I — задание ожидает своей очереди на запуск («Idle»)
  • H — прохождение задания приостановлено пользователем («User Hold»)
  • NQ — задание не готово к запуску («Not Queued»)
  • C — задание завершено («Completed»)
PRI Приоритет задания
Class Класс задания (см. тж. команду llclass)
Running On Имя машины, на которой работает задание; пусто, если задание еще не запущено

На системе Blue Gene/P, кроме того, доступен ключ -b:

$> llq -b

С его помощью становится доступна информация, специфичная для Blue Gene/P:

Id                       Owner      Submitted   LL BG PT Partition        Size
________________________ __________ ___________ __ __ __ ________________ ______
fen1.156.0               shgnik     10/6  19:47 R  RU RE LL08100619471562 256
fen1.157.0               pozdneev   10/6  20:17 R     CF LL08100620174963 512
fen1.158.0               pozdneev   10/6  20:18 I
fen1.134.0               popova     10/6  15:56 H

4 job step(s) in queue, 1 waiting, 0 pending, 2 running, 1 held, 0 preempted

В дополнительных столбцах выводятся следующие данные:

Заголовок Значение
LL То же, что ST (см. предыдущую таблицу)
BG Состояние задания
PT Состояние раздела, на котором запущено задание
Partition Имя раздела, на котором запущена задание
Size Число вычислительных узлов, выделенных для задания

Более подробную информацию об очереди можно получить, указав ключ -l и идентификатор задания:

$> llq -l fen1.157.0

Причем необязательно указывать полный идентификатор задания, но можно ограничиться его номером (это актуально не только для llq, но и для других команд LoadLeveler'а):

$> llq -l 157

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

$> llq -s fen1.158.0

llcancel — удаление задания из очереди

Чтобы удалить из очереди задание, ожидающее постановки на счет, или снять со счета уже идущее задание, служит программа llcancel. Например, команда

$> llcancel fen1.157.0

удалит из очереди задание с идентификатором fen1.157.0 (напоминаем, что идентификатор задания показывается в поле Id выдачи программы llq), а команда

$ llcancel -u pozdneev

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

llhold — приостановка/продолжение продвижения задания в очереди

Чтобы приостановить продвижение задания в очереди служит команда llhold. Для продолжения приостановленного задания нужно указать ключ -r (от слова «release»). Команда завершается успешно только в том случае, если к ней обратился владелец задания или привилегированный пользователь. Можно приостановить или продолжить задания с заданными идентификаторами или все задания определенного пользователя. Например, команда

$> llhold fen1.157.0

приостановит продвижение в очереди задания с идентификатором fen1.157.0, а команда

$> llhold -r -u pozdneev

продолжит продвижение всех приостановленных заданий пользователя pozdneev.

llmodify — изменение параметров задания

Команда llmodify позволяет изменить указанные при запуске параметры задания, находящегося в очереди. Например,

$> llmodify -C small fen1.157.0

изменит класс задания с идентификатором fen1.157.0 на small.

llprio — изменение приоритета задания

Управлять продвижением своих задач в очереди друг относительно друга можно путем изменения их приоретита. Например, чтобы понизить на 5 единиц приоритет задачи, нужно выполнить команду

$> llprio -5 fen1.157.0

llclass — информация о классах заданий

Список доступных классов заданий можно получить, выполнив команду

$> llclass

Подробная информация о каждом классе доступна с помощью ключа -l:

$> llclass -l large

llstatus — информация о машине

Чтобы получить подробную информацию о статусе машины, очередью заданий которой управляет LoadLeveler, выполните команду

$> llstatus -l

На Blue Gene/P ключ -b выдаст дополнительную информацию, специфичную для данной системы.

Информация о предопределенном разделе доступна с помощью ключа -P:

$> llstatus -P R00-R01

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

Текст составлен на основе материала книги «Tivoli Workload Scheduler LoadLeveler: Using and Administering» (Version 3 Release 4.3)