TORQUE Job Submission
Документация по менеджеру ресурсов TORQUE
Авторские права: Adaptive Computing Enterprises Inc.
Перевод: Щербаков А.С.
Это не дословный перевод. В некоторых случаях текст перевода может отличаться от оригинала. Обсудить перевод специфических терминов можно связавшись с автором перевода.
Оригинал:http://www.adaptivecomputing.com/resources/docs/torque/2.1jobsubmission.php
Постановка задач
- 1. Множественная постановка задач
- 2. Запрос ресурсов
- 3. Запрос обычных ресурсов
- 4. Запрос разделенных ресурсов
- 5. Запрос прочих ресурсов
- 6. Экспортируемые переменные окружения
- 7. Настройка разрешенных хостов для постановки задач
- 8. Пример
Постановка задач выполняется с использованием комманды qsub, которая принимает аргументы коммандной сстроки и выполняет заданный PBS-скрипт (коммандный файл). PBS-скрипт может быть передан как имя файла в коммандной строке qsub или введен через STDIN.
- PBS-скрипт не обязательно должен быть исполняемым.
- PBS-скрипт может быть передан через конвейер (pipe) в qsub (например, cat pbs.cmd | qsub)
- В случае параллельных задач PBS-скрипт загружается и исполняется только на первом выделенном вычислительном узле. (Используйте pbsdsh для параллельного запуска на нескольких узлах.)
- Коммандный файл во всех случаях выполняется из домашнего каталога пользователя. (Скрипт может установить каталог, из которого выполнена постановка задачи, при помощи переменной окружения $PBS_O_WORKDIR)
- Коммандный файл запускается со стандартным набором пользовательских переменных окружения, если иное не задано флагами -V или -v.
По умолчанию, постановка задач разрешена только из TORQUE сервера (хоста, на котором исполняется pbs_server). Разрешение запуска из других узлов описано в разделе Configuring Job Submit Hosts. |
Версии TORQUE младше 2.4.5 пытались применить настойки по умолчанию очереди и сервера к задачам, для которых не были заданы умолчания. Если после этого параметр задачи остается не задан, то TORQUE применяет для этого параметра максимальное соответствующее значение из настроек очереди и сервера. В TORQUE 2.4.5 и старше максимальные значения для очереди и сервера больше не используются как значения для не заданных параметров. |
1. Множественная постановка задач
Иногда пользователям требуется поставить на исполнение большое число задач, основанных на одном и том же скрипте. Для этого, вместо использования скрипта для циклического запуска qsub, нужно использовать массивы задач. Эта возможность позволяет создавать множество задач одним вызовом qsub. Кроме того, эта особенность включает в себя новое именование задач, которое позволяет пользователю оперировать целым набором задач как одной, или каждой задачей в отдельности.
Массивы задач задаются через опцию -t в qsub, или через #PBS -t в скрипте. Эта опция принимает разделенный запятой список, состоящий из номера задачи или пары чисел разделенных дефисом. Каждая из этих созданных задач будет использовать один и тот же скрипт и будет запущена в идентичном окружении.
> qstat -t 0-4 job_script 1098[].hostname > qstat 1098[0].hostname ... 1098[1].hostname ... 1098[2].hostname ... 1098[3].hostname ... 1098[4].hostname ...
Версии TORQUE младше 2.3 имеют другую семантику опции -t. В этих версиях -t принимает только один целочисленный аргумент — число задач, которые нужно создать. |
Каждая 1098[x] задача имеет переменную окружения PBS_ARRAYID, которая установлена в значение индекса задачи, т.е. для 1098[0].hostname переменная окружения PBS_ARRAYID будет установлена в 0. Это позволяет создавать массивы задач, где каждая задача выполняет различные действия, основываясь на значении этой переменной, такие как выполнение одинаковых действий над различными входными файлами. Еще одно различие в окружениях задач из одного массива — это значение переменной PBS_JOBNAME.
# Эти два примера одинаковы в TORQUE 2.2 > qsub -t 0-99 > qsub -t 100 # Можно также задавать разделенные запятыми идентификаторы или диапазоны: > qsub -t 0,10,20,30,40 > qsub -t 0-50,60,70,80
Запуск qstat отобразит состояние массивов задач. Чтобы увидеть статус всех задач в массиве, используйте qstat -t.
Комманды qalter, qdel, qhold и qrls могут оперировать массивами задач — как целыми массивами, так и диапазонами задач. Кроме того каждая задача в массиве доступна по её идентификатору, как и любая задача. Например, следующая комманда запустит только конкретную задачу:
qrun 1098[0].hostname
2 Запрос ресурсов
Различные ресурсы могут быть запрошены при постановке задачи. Задача може запросить особый узел, особый атрибут узла или даже несколько узлов с особыми атрибутами. Могут быть указаны как ресурсы TORQUE, так и ресурсы внешнего планировщика. Ресурсы TORQUE перечислены в таблице ниже:
Ресурс | Формат | Описание |
---|---|---|
arch | строка | Задает определяемую администратором требуемую архитектуру. По умолчанию это любое строковое значение PBS_MACH в "local.mk". |
cput | секунды или [[HH:]MM:]SS | Лимит процессорного времени, которое может быть использовано всеми процессами в задаче. |
epilogue | строка | Задает пользовательский скрипт эпилога, который выполняется перед системным эпилогом и скриптом epilogue.user по завершению задачи. Синтакс: epilogue=<file>. Имя файла может быть абсолютным или относительным. |
file | размер* | Объем дискового пространства, запрашиваемый задачей. (Игнорируется в Unicos.) |
host | строка | Имя хоста, на котором задача должна быть запущена. |
mem | размер* | Максимальный объем физической памяти, используемый задачей. (Игнорируется в Darwin, Digital Unix®, Free BSD, HPUX 11, IRIX, NetBSD, and SunOS. Также игнорируется в Linux® если число нодов отлично от 1. Не реализовано для AIX и HPUX 10.) |
nice | целое | Число от -20 (высший приоритет) до 19 (низший приоритет). Задает приоритет процесса. |
nodes | {<node_count> | <hostname>} [:ppn=<ppn>][:gpus=<gpu>][:<property>[:<property>]...] [+ ...] |
Число и/или тип узлов, которые резервируются эксклюзивно для задачи. Значение — один или более спецификаторов (node_spec) объединенных символом + (плюс): node_spec[+node_spec...]. Каждый спецификатор (node_spec) — это число узлов с типом, указанным в спецификаторе, и имя одного или нескольких параметров требуемых от узла. Число, имя и каждое свойство в спецификаторе разделяются символом : (двоеточие). Если число не задано, потразумевается единица.
Имя узла — это его hostname. Свойства узлов следующие:
|
opsys | строка | Определяет заданную администратором операционную систему, как определено в конфигурационном файле MOM. |
other | строка | Позволяет пользователю определить специфичную для HPC-ресурса информацию. Это ресурс предоставляется только в соответствии с политиками планировщика. |
pcput | секунды или [[HH:]MM:]SS | Лимит процессорного времени, которое может использоваться единичным процессом в задаче. |
pmem | размер* | Максимальный объем физической памяти, который может использоваться единичным процессом в задаче. (Игнорируется в Fujitsu. Не реализовано для Digital Unix® и HPUX.) |
procs | procs=<целое> | (Применимо с версии 2.5.0 и старше.) Число процессоров, которое требуется выделить задаче. Процессоры могут быть от одного или нескольких узлов. Только одна декларация procs может быть использована при постановке задачи коммандой qsub.> qsub -l nodes=3+procs=2 |
procs_bitmap | строка | Строка из нулей и единиц, расположенных в обратном порядке от запрашиваемых ядер. procs_bitmap=1110 означает, что задача требует узел с четырьмя доступными ядрами, но задача исполняется только на ядрах два, три и четыре. При этой маске ядро один не используется. |
prologue | строка | Задает пользовательский скрипт пролога, который выполняется после системного пролога и скрипта prologue.user перед запуском задачи. Синтакс: prologue=<file>. Имя файла может быть абсолютным или относительным. |
pvmem | размер* | Максимальный объем виртуальной памяти, используемой единичным процессом в пределах задачи. (Игнорируется в Unicos.) |
software | строка | Позволяет пользователю указать ПО требуемое задачей. Это полезно, если некоторые пакеты доступны только на конкретных системах в HPC. Это ресурс предоставляется только в соответствии с политиками планировщика. |
vmem | размер* | Максимальный объем виртуальной памяти, используемой всеми процессами в пределах задачи. (Игнорируется в Unicos.) |
walltime | секунды или [[HH:]MM:]SS | Лимит реального времени, в течение которого задача может находиться в состоянии исполнения. |
Размер указывает максимальное количество в байтах или словах. Он выражается в формате целое[суффикс]. Суффикс - — это множитель из перечисленных ниже ('b' означает байты (по умолчанию), а 'w' — ckjdf). Размер слова определяется на сервере исполнения как word size для этого сервера.
Суффикс | Множитель | |
---|---|---|
b | w | 1 |
kb | kw | 1024 |
mb | mw | 1,048,576 |
gb | gw | 1,073,741,824 |
tb | tw | 1,099,511,627,776 |
Пример 1 (qsub -l nodes)
Применение | Описание |
---|---|
> qsub -l nodes=12 |
Запрашивает 12 узлов любого типа |
> qsub -l nodes=2:server+14 |
Запрашивает 2 «серверных» узла и четырнадцать прочих (в сумме 16 узлов) - здесь задано два спецификатора (node_specs): "2:server" и "14" |
> qsub -l nodes=server:hippi+10:noserver+3:bigmem:hippi |
Запрашивает а)один «серверный» узел, который имеет "hippi" интерфейс, б) десять не «серверных» узлов, в) три узла с большим объемом памяти, которые имеют "hippi" интерфейс |
> qsub -l nodes=b2005+b1803+b1813 |
Запрашивает три узла по их именам (hostname) |
> qsub -l nodes=4:ppn=2 |
Запрашивает по два процессора на каждом из четырех узлов |
> qsub -l nodes=1:ppn=4 |
Запрашивает четыре процессора на одном узле |
> qsub -l nodes=2:blue:ppn=2+red:ppn=3+b1014 |
Запрашивает по два процессора на каждом из двух «синих» узлов, три процессора на одном «красном» узле и узел с именем "b1014" |
Пример 2
> qsub -l mem=200mb /home/user/script.sh
Пример 3
> qsub -l nodes=node01,mem=200mb /home/user/script.sh
3. Запрос обычных ресурсов
Когда обычные (generic) ресурсы были назначены узлу через конфигурационный файл, эти ресурсы могут быть запрошены при постановке задачи при помощи поля other.
Пример 1
> qsub -l other=matlab /home/user/script.sh
Это также можно запросить во время постановки задачи используюя флаг -W x=GRES:matlab |
4. Запрос разделенных ресурсов
Когда разделенные (floating) были настроены в Moab, они могут быть запрошены также как и обычные (generic) ресурсы. Moab автоматически поймет, что эти ресурсы разделенные и обработает задачу соответствующим образом. (Смотри Floating Generic Resources в руководстве администратора по Moab Workload Manager для детальной информации о конфигурации Moab.)
Пример 2
> qsub -l other=matlab /home/user/script.sh
Это также можно запросить во время постановки задачи используюя флаг -W x=GRES:matlab |
5. Запрос прочих ресурсов
Множество других ресурсов могут быть затребованы при постановке задачи с использованием Moab Workload Manager. Смотрите Resource Manager Extensions в руководстве администратора по Moab Workload Manager для детальной информации о списке поддерживаемых запросов и корректном синтаксисе.
6. Экспортируемые переменные окружения
Когда задача запускается в ее окружение устанавливается некоторое количество переменных, которые могут быть использованы скриптом для принятия решений, создания выходных файлов и т.д. Список этих переменных приведен ниже:
Переменная | Описание |
---|---|
PBS_JOBNAME | Имя задачи |
PBS_ARRAYID | Значение индекса в массиве задач (с версии 2.2.0 и старше) |
PBS_O_WORKDIR | рабочий каталог (из которого выполнена постановка) |
PBS_ENVIRONMENT | N/A |
PBS_TASKNUM | Запрошенное число задач |
PBS_O_HOME | Домашний каталог пользователя |
PBS_MOMPORT | Активный порт MOM демона |
PBS_O_LOGNAME | Логин пользователя, поставившего задачу |
PBS_O_LANG | Языковая переменная для задачи |
PBS_JOBCOOKIE | Сookie (печеньки;-) ) задачи |
PBS_NODENUM | Номер узла (смещение) |
PBS_O_SHELL | Shell-скрипт |
PBS_O_JOBID | Уникальный идентификатор задачи (pbs job id) |
PBS_O_HOST | Хост, котором выполняется скрипт |
PBS_QUEUE | Очередь задач |
PBS_NODEFILE | Файл, содержащий список узлов, выделенных задаче (каждый узел с новой строки) |
PBS_O_PATH | Переменная PATH для доступа к исполняемым файлам из скрипта |
7 Настройка разрешенных хостов для постановки задач
По умолчанию только узел, на котором исполняется pbs_server демон может ставить задачи. Дополнительные узлы могут быть внесены в список разрешенных путем выполнения любого из этих пунктов:
- Установка allow_node_submit параметра сервера.
- Разрешает любому доверенному вычислительному хосту (узлу) также быть доверенным для постановки задач.
- Установка submit_hosts параметра сервера.
(разделитель - запятая).
- Разрешает определенным хостам быть доверенным для постановки задач.
- Использование .rhosts для аутентификации на базе ruserok().
Смотрите Job Submission Host Advanced Config для детальной информации.
Если параметр allow_node_submit установлен, параметр allow_proxy_user должен быть устаовлен для разрешения пользователям использования прокси при постановке/запуске задач. |
8 Пример
Ниже приведен пример тестового скрипта задачи:
#!/bin/sh # #This is an example script example.sh # #These commands set up the Grid Environment for your job: #PBS -N ExampleJob #PBS -l nodes=1,walltime=00:01:00 #PBS -q np_workq #PBS -M YOURUNIQNAME@umich.edu #PBS -m abe #print the time and date date #wait 10 seconds sleep 10 #print the time and date again date