Destio

Установка и настройка TORQUE

TORQUE – открытая версия PBS (Portable Batch System) для организации распределенных вычислений. Это мощная, гибкая и хорошо масштабируемая система, при этом ее установка и настройка не представляет особой сложности, поэтому ее можно использовать для обеспечения удобной работы на кластере любых размеров, да и хотя бы одном компьютере с несколькими пользователями.

Все ниженаписанное полностью справедливо для TORQUE 2.4.8. Большая часть справедлива и для остальных версий, например, в TORQUE 2.5.9 при сборке RPM получается куда больше пакетов, которые нужно установить, хотя в остальной настройке ничего не меняется.

Установка и инициализация TORQUE

Исходники лежат на оффсайте. После сборки RPM с помощью приложенного .spec-файла, получится 5 готовых RPM-пакетов:

torque
torque-client
torque-devel
torque-scheduler
torque-server

На сервере нужно установить все, кроме torque-devel, а на остальные ноды кластера хватит самого torque + torque-client

После установки на сервере в автозапуске должны быть сервисы pbs_server, pbs_sched, а на каждой ноде (и сервере если он тоже будет одной из нод) единственный процесс pbs_mom
Рабочей директорией по умолчанию является /var/spool/torque/

После установки нужно инициализировать сервер, что можно сделать командой

pbs_server -t create

Чтобы все ноды были видны с сервера, их заресолвленные имена должны быть вписаны в ./server_priv/nodes, а на каждой ноде в ./torque/mom_priv/config вписать строку $pbsserver имя_сервера


Проверить правильность установки нод можно командой

pbsnodes -a

завершить процесс можно командой

qterm -t quick

Простейший способ проверки работоспособности установленной системы:

echo "sleep 30" | qsub

Это задание провисит 30 секунд и сдохнет. Если задания висят в очереди и не хотят работать, то нужно проверить наличие запущенного pbs_sched и состояние сервера:

qmgr -c 'list server'

Нормальное рабочее состояние сервера это server_state = Active, если вместо Active там Idle, то нужно перезапустить pbs_server с параметром -a

В дальнейшем для запуска pbs_serverдостаточно просто команды

# pbs_server

Работа с очередями

Создание новой очереди и задание ключевых параметров:

qmgr -c "create queue batch queue_type=execution"
qmgr -c "set queue batch started=true"
qmgr -c "set queue batch enabled=true"
qmgr -c "set queue batch resources_default.nodes=1"
qmgr -c "set queue batch resources_default.walltime=3600"
qmgr -c "set server scheduling = True"

Время указывается в секундах.

Установить очередь по умолчанию:

qmgr -c "set server default_queue=batch"

Установка заданий в очередь

Ставить задания в очередь с помощью команды qsub:

qsub -l nodes=nodesnum -V -q queuename tg

-l указывает на количество запрашиваемых ресурсов, например nodes=3:ppn=4 потребует по 4 ядра на каждой из 3-х нод.
Чтобы запустить процесс на определенной ноде, нужно ее явно указать в nodes. Например nodes=node1:ppn=2 запустит процесс на node1.

-V очень важный параметр, показывает что TORQUE следует использовать пользовательские переменные окружения, без нее он даже ~/bin не найдет.
-q это название очереди
tg это название специального скрипта, в простейшем виде выглядящего так:

#PBS -N test
#PBS -l nodes=1,walltime=999:00:00
#PBS -S /bin/sh
#
#cd to your execution directory first
cd $PBS_O_WORKDIR
program_name

-N название задания
-l параметры выделения ресурсов (используются если они не заданы явно в qsub)

Скорее всего, есть способы ставить задания в очередь и без промежуточных скриптов, но и с ними неплохо. Если qsub запускать без параметров, то будут использоваться параметры задания из tg, если их нет и там, то из свойств запускаемой очереди.

Чтобы была возможность ставить задания в очередь с любой ноды

qmgr -c 'set server allow_node_submit=true'

Управление заданиями в очереди

qstat -a просмотреть полный список заданий в очереди
qdel number удалить задание number из очереди (только для владельца задания и администраторов)
qdel all удалить все задания из очереди

Чтобы можно было смотреть все задания в очереди, а не только свои:

qmgr -c "set server query_other_jobs=true"

Чтобы команда qstat была доступна с любой ноды, нужно вписать корректное имя сервера в файл /var/spool/torque/server_name


Выполнение задания можно приостановить командой:

qsig -s suspend PID

При этом следующее в очереди задание пойдет в работу. Чтобы возобновить выполнение нужна команда:

qsig -s resume PID

Типичные ошибки в работе

Ярлыки:


Ближайшие сообщения:

Похожие сообщения:

Комментарии к этой записи отключены.