Документация

Установка

Перед установкой необходимо распаковать архив с исходным кодом и скомпилировать программу.

$ tar xzvf gbroker.tar.gz
$ cd gbroker/src
$ make

Далее требуется создать домашнюю директорию для пакета GBroker и установить переменную среды $GBROKER_HOME:

$ mkdir /opt/gbroker-0.0.1
$ export GBROKER_HOME=/opt/gbroker-0.0.1

После этого необходимо скопировать исполняемые файлы в созданную директорию.

$ mkdir /opt/gbroker/bin /opt/gbroker/etc
$ cp ../obj/gbroker obj/gbrun obj/gclient $GBROKER_HOME/bin

Конфигурация

Перед запуском диспетчера необходимо сконфигурировать файл $GBROKER_HOME/etc/gbroker.conf. Он имеет следующий вид.

<?xml version="1.0"?>
<gbroker-config>
  <host-list>
    <host>host1</host>
    <host>host2</host>
    <host>host3</host>
    <host> ... </host>
    <host>hostN</host>
  </host-list>
</gbroker-config>

В тегах <host-list> описывается локальная окрестность диспетчера - список диспетчеров подсистем, которым данный диспетчер может отправлять задачи из своей очереди.

Диспетчер GBroker в процессе своего функционирования использует сервисы пакета Globus Toolkit. На всех подсистемах пространственно-распределённой вычислительной системы должны функционировать подсистемы GridFTP и GRAM. Необходимо обеспечить возможность запуска команд globusrun и globus-url-copy для пользователя, от имени которого будет выполняться диспетчер.

При наличии в системе нескольких сетевых интерфейсов, рекомендуется записать в файл $GBROKER_HOME/etc/hostname тот адрес, который используется в службах Globus Toolkit.

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

Подготовка задач

Для выполнения параллельных программ необходимо сформировать паспорт задачи на языке ресурсных запросов JSDL, например:

<?xml version="1.0" encoding="UTF-8"?>
<jsdl:JobDefinition xmlns="http://www.example.org/"

xmlns:jsdl="http://schemas.ggf.org/jsdl/2005/11/jsdl"
xmlns:jsdl-posix="http://schemas.ggf.org/jsdl/2005/11/jsdl-posix"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <jsdl:JobDescription>
    <jsdl:Application>
      <jsdl:ApplicationName>AppName</jsdl:ApplicationName>
      <jsdl-posix:POSIXApplication>
        <jsdl-posix:Executable>gsiftp://host1/path/to/executable.${ARCH}</jsdl-posix:Executable>
        <jsdl-posix:Argument>arguments</jsdl-posix:Argument>
        <jsdl-posix:Output>StdOut</jsdl-posix:Output>
        <jsdl-posix:Error>StdErr</jsdl-posix:Error>
      </jsdl-posix:POSIXApplication>
    </jsdl:Application>
    <jsdl:Resources>
      <jsdl:TotalCPUCount>
        <jsdl:Exact>N</jsdl:Exact>
      </jsdl:TotalCPUCount>
    </jsdl:Resources>

    <!-- Staging-in -->

    <jsdl:DataStaging>
      <jsdl:FileName>stagein-file1</jsdl:FileName>
      <jsdl:Source>
        <jsdl:URI>gsiftp://host2/path/to/stagein/stagein-file1</jsdl:URI>
      </jsdl:Source>
    </jsdl:DataStaging>
    <jsdl:DataStaging>
      <jsdl:FileName>stagein-file2</jsdl:FileName>
      <jsdl:Source>
        <jsdl:URI>gsiftp://host3/path/to/stagein-file2</jsdl:URI>
      </jsdl:Source>
    </jsdl:DataStaging>
    ...

    <!-- Staging-out -->

    <jsdl:DataStaging>
      <jsdl:FileName>stageout-file1</jsdl:FileName>
      <jsdl:Target>
        <jsdl:URI>gsiftp://${GBHOST}/${HOME}/path/to/stageout-file1</jsdl:URI>
      </jsdl:Target>
      </jsdl:DataStaging>
      <jsdl:DataStaging>
        <jsdl:FileName>stageout-file2</jsdl:FileName>
      <jsdl:Target>
        <jsdl:URI>gsiftp://${GBHOST}/${HOME}/path/to/stageout-file2</jsdl:URI>
      </jsdl:Target>
    </jsdl:DataStaging>
    ...

  </jsdl:JobDescription>
</jsdl:JobDefinition>

Ресурсный запрос состоит из разделов описания приложения <jsdl:Application></jsdl:Application>, описания требуемых ресурсов <jsdl:Resources></jsdl:Resources> и указания входных и выходных файлов внутри тегов <jsdl:DataStaging></jsdl:DataStaging>.

Адреса исполняемых, входных и выходных файлов указываются в соответствии с протоколом GridFTP. При этом допускается использование переменных подстановки:

${ARCH} - архитектура подсистемы, на которой будет выполняться параллельная программа,
${GBHOST} - адрес подсистемы, на которой находится диспетчер,
${HOME} - домашний каталог пользователя,
${ARCH} - архитектура подсистемы, на которой будет выполняться параллельная программа.

Запуск задач

Для того, чтобы отправить задачу диспетчеру, необходимо запустить выполнить команду gbrun. Формат команды выглядит следующим образом

$ gbrun -h <host> [options] <job>

Для постановки задачи в очередь диспетчера требуется в качестве аргументов указать адрес подсистемы (через ключ -h), на которую отправляется задача, и имя паспорта задачи, например

$ gbrun -h pluto.solar.system.com pi.jsdl

Программа gbrun может иметь следующие аргументы:

-o | --output-enable - отправить задачу в интерактивном режиме,
-g | --get-output - запросить у диспетчера результат выполнения программы (стандартный поток вывода).

По умолчанию программы выполняются в пакетном режиме. В этом случае программа gbrun завершает своё выполнение и на экран выводится идентификатор задачи, например pluto.solar.syste.com:5. Далее у диспетчера можно запросить результат выполнения программы:

$ gbrun -g pluto.solar.system.com:3

В результате на экран будет представлен стандартный поток вывода параллельной программы или сообщение об ошибке:

Job is still running - программа ещё выполняется,
Invalid job id - неверно задан идентификатор задачи.

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

Список задач, запущенных диспетчером, можно посмотреть командой gbps, например

$ gbps -h pluto.solar.system.com