PBSMan

From HPCC

Jump to: navigation, search

На кластері встановлений локальний менеджер ресурсів Torque версії 2.3.6 з планувальником задач Maui 3.2.6.

Зміст

Попередні налаштування

Для коректної роботи з Torque потрібно виконати ряд підготовчих операцій:

PATH=$PATH:/opt/torque/bin

Тестування

Після наведених дій, можна спробувати запустити тестову задачу. Для локальних користувачів призначена черга local , яку треба явно вказати за допомогою параметру -q команди постановки задачі qsub. В якості тіла завдання, виконаємо команду hostname, що виведе назву хоста, на якому запуститься задача.

[test1@n001 ~]$ qsub -q local
hostname
107.pbs.kpi

(Після введення 'hostname' потрібно натиснути Enter і Ctrl-D)

107.pbs.kpi - ідентифікатор завдання у локальній системі, за яким можна за ним слідкувати.

Майже одразу таке коротке завдання завершується і у директорії, з якої воно було поставлене, з'являються вихідні файли:

[test1@n001 ~]$ ls
STDIN.e107  STDIN.o107
[test1@n001 ~]$ cat STDIN.*
n094
[test1@n001 ~]$

Як видно, задача виконувалась на вузлі 94.

Команди для роботи з системою керування задачами

Для користувача корисними будуть наступні інструменти роботи з менеджером Torque: qsub, qstat, qalter, qhold, qrls, qdel. Коротко розглянемо роботу з ними.

qsub

Команда призначена для встановлення задачі у чергу. Подтримується як режим вводу параметрів задачі через опції qsub із читанням тіла задачі із стандартного вводу (як у вищенаведеному прикладі), так і повний опис задачі в окремому файлі.

Найважливіші опції
-q <назва черги>
Задає чергу, до якої треба помістити задачу. Наразі в якості імені треба вказувати "local"
-l <специфікація потрібних ресурсів>
Дозволяє визначити необхідні для виконання задачі ресурси.
Задавати їх слід у формі назва_ресурсу=значення,назва_ресурсу=значення...
Найуживаніші:
* cput - максимальна кількість процесорного часу, використовуваного всіма процесами задачі
* nodes - кількість вузлів, резервованих для задачі. Підтримується вказання атрибутів вузлів, як то кількість процессорів на вузол.
* walltime - максимальна кількість реального часу, під час якого задача може знаходитись у стані виконання
* pmem - максимальна кількість пам'яті для одного процесу задачі
-o <назва файлу>
Шлях до файлу, в який зберігається стандартній потік виводу задачі
-e <назва файлу>
Шлях до файлу, в який зберігається стандартній потік помилок задачі
-k o|e|oe|n
Вказує менеджеру не копіювати файли виводу на вузол, з якого задача була поставлена. Натомість, вони залишаються на вузлі, на якому відбувалось
виконання задачі.
-t <список>
Зручна можливість запускати масив задач.
Без даної опції процес виконання задачі має такий вигляд:
# задача ставиться в чергу
# відповідно до специфікації ресурсів обираються вузли, на яких задача буде виконуватись
# скрипт задачі запускається на одному з вузлів із встановленими змінними середовища, які дозволяють дізнатись список виділених ресурсів.
# далі за розподіл навантаження відповідає сам скрипт задачі
Така модель запуску типова, якщо, наприклад, запускається програма з використанням бібліотеки для паралельних обчислень (OpenMPI).
Однак вона не завжди зручна. Наприклад, потрібно запустити одну непаралельну задачу, але з різними наборами вхідних даних.
Тоді в пригоді стає дана опція. Вона інструктує менеджер задач, що потрібно запустити вказану кількість екземплярів скрипта задачі на виділених ій
ресурсах. При цьому кожен екземпляр отримує через змінну середовища PBS_ARRAYID свій порядковий номер, що може використовуватись для вибору вхідніх
даних.

Приклади

Запуск масиву з 5 задач, кожній з яких потрібно 4 процесора на вузлі, тіло задачі читається зі стандартного вводу.

[test1@n001 ~]$ qsub -q local -t 1-5 -l nodes=1:ppn=4
hostname

122.pbs.kpi

Запуск задачі за допомогою файлу опису задачі.

Вхідний файл має наступний вигляд:

#!/bin/bash
#PBS -l nodes=1:ppn=4
#PBS -S /bin/bash
#PBS -N test
#PBS -o job.out
#PBS -e job.err
echo Running on host `hostname`
echo Time is `date`
echo Directory is `pwd`
echo This jobs runs on the following processors:
echo `cat $PBS_NODEFILE`
echo $PBS_NODEFILE

У вигляді рядків-коментарів для програми-інтерпретатора даного скрипта із префіксом PBS задаються ті ж самі опції, які приймає команда qsub. Файл повинен мати права, що дозволяють його виконання. Постановка задачі в цьому разі:

[test1@n001 ~]$ qsub job.job 
136.pbs.kpi

qstat

Команда призначена для перегляду стану черг та виконуваних задач.

Опції
<без параметрів>
Інформація про власні задачі у стандартному вигляді.
-q
Інформація про черги.
-a
Інформація про задачі усіх користувачів.
-f
Інформація про задачі у розширеному вигляді.

qalter

Команда дозволяє змінювати параметри поставлених задач. Не можна змінювати параметри задач, що виконуються на даний момент. Список опцій схожий на такий у команди qsub.

qhold

За допомогою команди можна перевести задачу у стан очікування.

qrls

Команда звільняє задачу зі стану очікування.

qrerun

Перезапуск задачі.

qdel

Команда видаляє задачі з системи керування ресурсами.

qsig

Команда дозволяє надіслати задачі сигнал на зразок UNIX-команди kill

Середовище задачі

Змінні середовища, що передаються задачі
PBS_VERSION версія системи керування задачами (СКЗ)
PBS_SERVER DNS-ім'я сервера СКЗ
PBS_JOBNAME назва задачі, визначена користувачем
PBS_JOBID ідентифікатор задачі, визначений сервером СКЗ
PBS_JOBCOOKIE
PBS_ENVIRONMENT тип задачі: PBS_BATCH - для пакетної, та PBS_INTERACTIVE - для інтерактивної
PBS_ARRAYID порядковий номер, якщо запущений масив задач (qsub -t ...)
PBS_TASKNUM
PBS_NODENUM
PBS_VNODENUM
PBS_NODEFILE шлях до файлу, в якому записаний список вузлів, призначений задачі
PBS_QUEUE назва черги, в яку потрапила задача
PBS_MOMPORT
PBS_O_HOST назва вузла, з якого запущено задачу
PBS_O_LOGNAME реєстраційне ім'я користувача-власника
PBS_O_WORKDIR робоча директорія, з якої було запущено задачу
PBS_O_HOME домашня тека користувача на вузлі, з якого запущено задачу
PBS_O_SHELL інтерпретатор команд користувача-власника
PBS_O_PATH список шляхів користувача-власника
PBS_O_LANG мова користувача-власника
PBS_O_MAIL шлях до поштової директорії користувача-власника


Більше деталей можна дізнатися із man-сторінок відповідних команд.

Отримано від "http://hpcc.org.ua/index.php/PBSMan"