Работа в пакетном режиме BATCH (PBS-Portable Batch System).

PBS (Portable Batch System) — система пакетной обработки заданий, предназначенная для управления ресурсами высокопроизводительных вычислительных кластеров.

Команды PBS используются для постановки задания в очередь на выполнение, запуска на счет, мониторинга, модификации и снятия заданий, выдачи результатов.

Для большинства заданий пользователей вычислительной фермы используются  очереди:

common и  ib — очередь для параллельной фермы с Infiniband.

Все задачи  можно  запускать в очередь common , из которой они затем перераспределяются по очередям common и ib. 

Критерий распределения:

— если заказано 2 — 80 ЦПУ, то задание пойдет в очередь ib и будет работать на Infiniband;
— если заказан 1 ЦПУ или больше 80, то задание пойдет в очередь common и будет работать на 1Gb Ethernet’е.

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

Некоторые команды. Использование/контороль/результаты.

Для запуска задач в batch систему необходимо:

1) Внимание! необходимо выполнить команду «pbspwstore» и

ввести в ответ на 3 запроса 3 раза ваш AFS пароль
 Будьте предельно внимательны при вводе пароля, в случае ошибки ваши задания не смогут нормально завершаться.

Команду «pbspwstore» повторять только при изменении AFS пароля;

2) создать файл задания pbs_script, в котором определить параметры, необходимые для работы задачи;

Пример pbs_script:

#!/bin/sh
 #PBS -l walltime=10:00:00, cput=01:00:00
 #PBS -m abe
 #PBS  -q common
 #PBS -M username@lxpub01
 #PBS -r n

cd $PBS_O_WORKDIR
 cc -o myprog myprog.c
 ./myprog

Где :

-l                       список ресурсов ( через «,»)
 -walltime        максимальное время выполнения
 -q                     имя очереди
 -m                   события, о которых следует извещать e-mail’ом:
 b — начало, e — завершение, a — прекращение работы по ошибке
 -M                  e-mail адрес, на который направляются все служебные сообщения о состоянии задачи
 -r (y/n)          следует ли восстанавливать задачу, при перезагрузке узлов

3) запустить задачу в систему с помощью команды qsub .

 

Пример 1:  qsub pbs_script

Пример 2 — необходимые параметры указаны в  командной строке :

qsub -l walltime=10:00:00 -m abe -M username@lxpub01 -r n mpiexec $PBS_O_WORKDIR/program_name

В рабочей дирректории появляются 2 файла:

Имя_задачи.oИдентификатор — cодержит стандартный вывод (stdout),
Имя_задачи.eИдентификатор — содержит сообщение об ошибках (strerr)

Описание параметров и переменных :

man qsub,
man pbs_resources  — ресурсы задачи,
man pbs_job_attributes  — атрибуты задачи .

Значения некоторых часто используемых  предопределенных переменных  системы BATCH:

PBS_O_WORKDIR — абсолютный путь к текущему каталогу пользователя, из которого производился запуск пакетного задания;

TMPDIR — имя директории на счетным узле, создаваемой  только на время выполнения задания;

PBS_QUEUE — имя очереди в которую посылается задача;

PBS_NODEFILE — список выделенных ЦПУ, на которых будет запущена задача (пример элемента списка: wni005.jinr.ru);

Контроль задачи: qstat .

состояние и контроль задачи осуществляется с помощью команды qstat , после ввода которой на экране появляется таблица, столбцы которой имеют следующие значения:

Job ID                  уникальный идентификатор задачи;
Username           имя владельца задачи;
Queue                 название очереди, в которой находится задание
Jobname             имя задания;
SessID                идентификатор сессии (если задание в состоянии выполнения)
NDS                   число используемых ЦПУ;
TSK                    количество задач;
Req’d                 time планируемое время счета задачи;
Elap                   time общее процессорное время, использованное задачей на данный момент;
S                       состояние задачи: Q — находится в очереди, R — вычисляется, E — произошла ошибка при выполнении.

Пример : параметры очереди ib.

lxpub01:~ > qstat -Qf ib

Queue: ib

resources_max.cput = 50000:00:00
resources_max.nodect = 560
resources_max.walltime = 101:00:00
resources_min.nodect = 2
resources_available.nodect = 560
resources_default.cput = 50000:00:00
resources_default.walltime = 101:00:00

cput — maximum amount of CPU time used by all processes in the job.
Units: time.

max.nodect — максимальное число ЦПУ для параллельной задачи (для очереди ib);
max.walltime — максимальное астрономическое время счета задачи;

cput — максимальное количество процессорного времени, используемое     всеми процессами в задании.

Эти параметры очереди устанавливаются администратором системы и могут быть изменены.  Для сбалансированного задания параметров очереди нужно учитывать, что для walltime, cput и nodect примерно выполняется следующее соотношение:

астрономическое время (walltime) * число процессов (nodect) —
— процессорное время (cput)

(В приведенном примере параметров очереди ib максимальное счетное время задачи задано больше с учетом планируемого увеличения числа процессоров).

Требуемые значения этих параметров задаются в script-файле и в соответствии с запрашиваемыми ресурсами определяется приоритет и время ожидания в очереди. Задание не ставится в очередь, если превышены максимально допустимые значения параметров очереди. Запрашивать значения счетного и астрономического времени значительно больше требуемого не имеет смысла, т.к. задание с большей вероятностью дольше простоит в очереди.

Снять задачу со счета:  qdel Job_ID.

Cсылки на script-файлы.

(автор Мицын В.В.), которые можно использовать как тест или диагностическую задачу для случаев:

когда у пользователя что-то в batch-системе не работает ;

тест для параллельных вычислений на нескольких процессорах для случая, когда все файлы лежат в AFS;

тест для параллельных вычислений на нескольких процессорах, когда файлы надо копировать из /scr или другого произвольного места, находящегося вне AFS.