Московский государственный университет имени М.В.Ломоносова
Опубликован: 16.06.2008 | Доступ: свободный | Студентов: 764 / 147 | Оценка: 4.39 / 3.96 | Длительность: 07:59:00
Специальности: Программист
Дополнительный материал 4:

Приложение 4. Использование системы управления заданиями Cleo

Блокировки

Системой Cleo поддерживаются следующие виды блокировок:

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

Блокировка очереди на запуск задач означает, что задачи, стоящие в очереди, не будут запущены на счет, пока блокировка не снята. При этом уже запущенные задачи со счета не снимаются. Любая очередь может быть в любой момент времени заблокирована на добавление новых задач. На работающих и уже стоящих в очереди задачах это никак не отражается. Указанные блокировки могут быть установлены рекурсивно, то есть не только на конкретную очередь, но и на все ее дочерние очереди.

Блокировкой процессора можно запретить исполнение задач на конкретном процессоре или узле. Отложенная блокировка процессора активируется только после того, как процессор заканчивает выполнение пользовательской задачи. Когда это происходит, администратору высылается уведомление.

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

Схема запуска задач

Для запуска задач в системе Cleo предусмотрено несколько режимов, но предпочтительным является следующий. Задача запускается в псевдотерминале (используется пакет empty-cleo )1Основан на пакете empty, автор Михаил Захаров (zmey20000@yahoo.com) обычным для выбранной среды способом. Например, для MPICH или LAM будет запущена программа mpirun из соответствующего дистрибутива. При запуске программе передаются данные о процессорах, на которых надо запускаться.

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

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

Запущенные задачи не зависят от сервера Cleo, т.к. работают в собственных псевдотерминалах. Это значит, что сервер может быть остановлен или перезапущен во время работы задач.

Возможности дополнения и расширения

Статус очередей можно получать не только посредством команд серверу, но и из файлов состояния. Именно так работает пакет qs-web, позволяющий представлять состояние очередей или задач в любом удобном виде, например, как web-страницу или в текстовом виде.

Система сделана расширяемой за счет использования модулей. В данный момент реализованы следующие типы модулей:

  • модули стратегий распределения процессоров;
  • модули, вызываемые при запуске или завершении задачи;
  • планировщики задач.

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

Запуск задач осуществляется командой mpirun:

mpirun -np N [-q queue][-maxtime|-l lim][-p pri][-stdin file]
[-stdout file] [-stderr file] prog [prog_args],

либо той же командой в таком варианте:

mpirun -np N [-q queue][-maxtime|-l lim][-p pri][-stdin file]
[-stdout file] [-stderr file] -f batch_file

Ключи, указанные в скобках, являются необязательными, a prog и prog_args - это исполняемый файл задачи и ее аргументы соответственно. Второй вариант запуска предполагает наличие файла batch_file, в котором перечислены программы с аргументами. В данном случае происходит последовательный запуск перечисленных программ в рамках одной задачи.

Ниже описаны значения ключей mpirun.

-np - количество процессоров.
-q - название очереди, в которую ставится задача.
-maxtime - лимит времени счета в минутах.
-l - лимит времени счета в секундах.
-p - приоритет задачи в очереди.
-stdin - файл для стандартного ввода.
-stdout - файл для стандартного вывода.
-stderr - файл для стандартного потока ошибок.

Например, команда вида:

mpirun -np 15 —q users -maxtime 10 my_test -dummy -i 50

поставит задачу 'my_test' с параметрами '-dummy -i 50' в очередь users с лимитом работы в 1 о минут и запросом на 15 процессоров. Следующая команда:

mpirun -np 15 my_test2 /tmp/my_test.tmp -n 10

поставит задачу 'my_test2' с параметрами '/tmp/my_test.tmp -n 10' в очередь по умолчанию с запросом на 15 процессоров.

Если ключ -maxtime (или -1 ) не задан, то будет взято значение из переменной окружения QS_TIMELIMIT. Если оно пустое, или данная переменная не определена, то будет использовано значение, заданное в пользовательском файле ~/.qconf параметром def_time. Если в пользовательском файле этого параметра нет, то он будет взят из глобального файла конфигурации.

Указывая ключ -maxtime, пользователь может ускорить запуск своей задачи, так как дает системе возможность планировать время счета этой задачи и, как следствие, возможность выполнить ее "досрочно", если будет такая возможность.

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

После запуска задачи ее стандартный вывод будет перенаправлен в файл, имя которого определяется настройками по умолчанию, либо индивидуальными настройками пользователя, либо ключом -stdout. Обычно этот файл создается в том же каталоге, откуда задача была запущена, и имеет имя <имя_задачи>.out-<номер>, где номер — это номер задачи в очереди.

Удалить задачу из очереди или досрочно снять задачу со счета можно командой tasks с ключом -d. Например:

/home/usr2> tasks -d 2141

удалит задачу с номером 2141 из очереди.

По окончании работы задачи создается файл отчета (его имя обычно аналогично имени файла вывода задачи, но суффикс out меняется на rep ), в котором указываются полное имя задачи, аргументы, время счета, имя файла вывода, код возврата и, если задача завершилась аварийно, причина останова.

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

Просмотр состояния очереди

Посмотреть состояние очереди можно командой tasks:

tasks [—q queue][-r][-l][—t][—f][-o][—m mask][—u userlist] 
                  [-b][-d id ... id|-v]

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

-q - название очереди,
-r - показывать очереди рекурсивно,
-l - показывать дополнительную информацию,
-t - показывать лимит времени по умолчанию для пользователя,
-f - учитывать чужие задачи,
-o - учитывать свои задачи,
-m mask - использовать маску для выборки задач,
-u list - использовать список пользователей для выборки задач,
-b - показывать информацию о заблокированных узлах,
-v - показывать состояние очереди (по умолчанию),
-d - удаление задачи.

Параметры -f, -o указывают выборку задач. По умолчанию в выборку попадают все задачи, если не указано иначе в файле конфигурации.

Более полная информация по системе управления заданиями Cleo, включая дистрибутив и документацию, доступна на следующей странице: http://parcon.parallel.ru/cleo.html.