Поделиться через


OpenPBS

Тип кластера OpenPBS в Azure CycleCloud предоставляет надежное и масштабируемое решение для управления рабочими нагрузками высокопроизводительных вычислений (HPC) с помощью PBS Professional. Эта интеграция позволяет пользователям развертывать кластеры на основе PBS и управлять ими в облаке с упрощенной конфигурацией и автоматизацией. Подробные инструкции по настройке, поддерживаемые функции и руководство по использованию см. в руководстве по использованию CycleCloud Open PBS и PBS Professional Cluster Project README.

Вы можете включить OpenPBS в кластере CycleCloud, изменив run_list раздел конфигурации определения кластера. Кластер PBS Professional (PBS Pro) состоит из двух основных частей: основного узла, который запускает программное обеспечение на общей файловой системе, и узлы выполнения, которые подключают файловую систему и выполняют отправленные задания. Например, простой фрагмент шаблона кластера может выглядеть следующим образом:

[cluster my-pbspro]

[[node master]]
    ImageName = cycle.image.centos7
    MachineType = Standard_A4 # 8 cores

    [[[configuration]]]
    run_list = role[pbspro_master_role]

[[nodearray execute]]
    ImageName = cycle.image.centos7
    MachineType = Standard_A1  # 1 core

    [[[configuration]]]
    run_list = role[pbspro_execute_role]

При импорте и запуске кластера с этим определением в CycleCloud вы получите один первичный узел. Вы можете добавить узлы выполнения в кластер с помощью cyclecloud add_node команды. Например, чтобы добавить еще 10 узлов execute, используйте:

cyclecloud add_node my-pbspro -t execute -c 10

Автомасштабирование на основе ресурсов PBS

CycleCloud поддерживает два ресурса, чтобы расширить возможности динамического предоставления ресурсов. Эти ресурсы являются nodearray и machinetype.

При отправке задания и указании ресурса массива узлов с помощью qsub -l nodearray=highmem -- /bin/hostname CycleCloud добавляет узлы в массив узлов с именем highmem. Если массива узлов не существует, задание остается в простое.

При указании ресурса типа компьютера в отправке задания, например qsub -l machinetype:Standard_L32s_v2 my-job.sh, CycleCloud автомасштабирует Standard_L32s_v2 компьютеры в execute массиве узлов (по умолчанию). Если тип машины недоступен в массиве execute узлов, задание остается в состоянии ожидания.

Эти ресурсы можно использовать вместе:

qsub -l nodes=8:ppn=16:nodearray=hpc:machinetype=Standard_HB60rs my-simulation.sh

Автомасштабирование происходит только при указании Standard_HB60rs машин в массиве hpc узлов.

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

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

    [[nodearray gpu]]
    Extends = execute
    MachineType = Standard_NC24rs

        [[[configuration]]]
        pbspro.slot_type = gpu

После импорта шаблона кластера и запуска кластера выполните следующие команды на узле сервера, чтобы создать gpu очередь:

/opt/pbs/bin/qmgr -c "create queue gpu"
/opt/pbs/bin/qmgr -c "set queue gpu queue_type = Execution"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.ungrouped = false"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.place = scatter"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.slot_type = gpu"
/opt/pbs/bin/qmgr -c "set queue gpu default_chunk.ungrouped = false"
/opt/pbs/bin/qmgr -c "set queue gpu default_chunk.slot_type = gpu"
/opt/pbs/bin/qmgr -c "set queue gpu enabled = true"
/opt/pbs/bin/qmgr -c "set queue gpu started = true"

Примечание.

Как показано в примере, определение очереди упаковывает все виртуальные машины в очередь в один масштабируемый набор виртуальных машин для поддержки заданий MPI. Чтобы определить очередь для серийных заданий и разрешить несколько масштабируемых наборов виртуальных машин, задайте ungrouped = true как для resources_default, так и для default_chunk. Задайте resources_default.place = pack, если планировщик должен сгруппировать задания на ВМ вместо использования циклического распределения заданий. Дополнительные сведения о распределении заданий PBS см. в официальной документации по PBS Professional OSS.

Справочник по конфигурации PBS Professional

В следующей таблице описаны конкретные параметры конфигурации PBS Профессиональный (PBS Pro), которые можно переключить для настройки функциональных возможностей:

Параметры PBS Pro Описание
pbspro.slots Число слотов, которые данный узел должен сообщить в PBS Pro. Количество слотов — это количество одновременных заданий, которые может выполнять узел. Это значение по умолчанию равно количеству ЦП на заданном компьютере. Это значение можно переопределить в случаях, когда задания не выполняются на основе ЦП, а на памяти, GPU и других ресурсах.
pbspro.slot_type Имя типа слота, которое предоставляет узел. Значение по умолчанию — «выполнить». Когда вы помечаете задание жестким ресурсом slot_type=<type>, задание выполняется только на машинах с тем же типом слота. Этот параметр позволяет создавать разные конфигурации программного обеспечения и оборудования для каждого узла и гарантирует, что правильное задание всегда запланировано на правильном типе узла.
pbspro.version Значение по умолчанию: "18.1.3-0". Эта версия в настоящее время используется по умолчанию и доступна только для установки и запуска. В будущем могут поддерживаться дополнительные версии программного обеспечения PBS Pro.

Подключение PBS с помощью CycleCloud

CycleCloud управляет кластерами OpenPBS с помощью устанавливаемого агента azpbs. Этот агент подключается к CycleCloud для чтения конфигураций кластера и виртуальных машин. Он также интегрируется с OpenPBS для обработки сведений о задании и информации о хосте. Все azpbs конфигурации можно найти в файле autoscale.json, обычно расположенном по адресу /opt/cycle/pbspro/autoscale.json.

  "password": "260D39rWX13X",
  "url": "https://cyclecloud1.contoso.com",
  "username": "cyclecloud_api_user",
  "logging": {
    "config_file": "/opt/cycle/pbspro/logging.conf"
  },
  "cluster_name": "mechanical_grid",

Важные файлы

Агент azpbs анализирует конфигурацию PBS при каждом вызове — задания, очереди, ресурсы. Агент предоставляет эти сведения в stderr и stdout команды и в файл журнала как на настраиваемых уровнях. Агент также записывает все команды управления PBS (qcmd) с аргументами в файл.

Все эти файлы можно найти в каталоге /opt/cycle/pbspro/ , где устанавливается агент.

Файл Местоположение Описание
Настройка автомасштабирования autoscale.json Настройка автомасштабирования, карты ресурсов, сведений о доступе CycleCloud
Журнал автомасштабирования autoscale.log Ведение журнала основного потока агента, включая управление узлом CycleCloud
Журнал запросов demand.log Подробный журнал сопоставления ресурсов
Трассировочный журнал qcmd qcmd.log Ведение журнала вызовов агента qcmd
Конфигурация логирования logging.conf Конфигурации для маски ведения журнала и расположения файлов

Определение ресурсов OpenPBS

Этот проект позволяет связать ресурсы OpenPBS с ресурсами виртуальной машины Azure через проект cyclecloud-pbspro (azpbs). Вы определяете эту связь ресурсов в autoscale.json. Шаблон кластера включает следующие ресурсы по умолчанию:

{"default_resources": [
   {
      "select": {},
      "name": "ncpus",
      "value": "node.vcpu_count"
   },
   {
      "select": {},
      "name": "group_id",
      "value": "node.placement_group"
   },
   {
      "select": {},
      "name": "host",
      "value": "node.hostname"
   },
   {
      "select": {},
      "name": "mem",
      "value": "node.memory"
   },
   {
      "select": {},
      "name": "vm_size",
      "value": "node.vm_size"
   },
   {
      "select": {},
      "name": "disk",
      "value": "size::20g"
   }]
}

Имя ресурса OpenPBS соответствует атрибуту узла mem, который представляет общую память любой виртуальной машины. Эта конфигурация позволяет azpbs обрабатывать запрос ресурсов, например -l mem=4gb сравнивая значение требований к ресурсу задания с ресурсами узла.

В настоящее время для размера диска задано значение size::20g. Ниже приведен пример обработки размера диска, специфичного для размера виртуальной машины.

   {
      "select": {"node.vm_size": "Standard_F2"},
      "name": "disk",
      "value": "size::20g"
   },
   {
      "select": {"node.vm_size": "Standard_H44rs"},
      "name": "disk",
      "value": "size::2t"
   }

Автомасштабирование и масштабируемые наборы

CycleCloud обрабатывает параллельные и последовательные задания по-разному в кластерах OpenPBS. Задания, охватывающие распределение, размещаются на узлах, принадлежащих той же группе размещения. Группа размещения имеет особое значение, связанное с платформой VirtualMachineScaleSet с параметром SinglePlacementGroup=true, и CycleCloud управляет именованной группой размещения для каждого распределенного набора узлов. Используйте ресурс PBS group_id для этого имени группы размещения.

Очередь hpc добавляет эквивалент -l place=scatter:group=group_id, используя настройки очередей по умолчанию.

Установка агента CycleCloud OpenPBS azpbs

Кластер OpenPBS CycleCloud управляет установкой и настройкой агента на узле сервера. Этапы подготовки включают настройку ресурсов PBS, очередей и хук-скриптов. Вы также можете выполнить установку скриптов за пределами CycleCloud.

# Prerequisite: python3, 3.6 or newer, must be installed and in the PATH
wget https://github.com/Azure/cyclecloud-pbspro/releases/download/2.0.5/cyclecloud-pbspro-pkg-2.0.5.tar.gz
tar xzf cyclecloud-pbspro-pkg-2.0.5.tar.gz
cd cyclecloud-pbspro

# Optional, but recommended. Adds relevant resources and enables strict placement
./initialize_pbs.sh

# Optional. Sets up workq as a colocated, MPI focused queue and creates htcq for non-MPI workloads.
./initialize_default_queues.sh

# Creates the azpbs autoscaler
./install.sh  --venv /opt/cycle/pbspro/venv

# Otherwise insert your username, password, url, and cluster name here.
./generate_autoscale_json.sh --install-dir /opt/cycle/pbspro \
                             --username user \
                             --password password \
                             --url https://fqdn:port \
                             --cluster-name cluster_name

azpbs validate

CycleCloud поддерживает стандартный набор атрибутов автоостановки во всех планировщиках.

Атрибут Описание
cyclecloud.cluster.autoscale.остановка_включена Включает автостоп на этом узле. [истина/ложь]
cyclecloud.cluster.autoscale.время_бездействия_после_завершения_задач Время (в секундах), в течение которого узел остаётся бездействующим после завершения заданий до автоматической остановки.
cyclecloud.cluster.autoscale.время_простоя_перед_задачами Время (в секундах), в течение которого узел простаивает перед выполнением заданий и перед автостопом.

Примечание.

CycleCloud не поддерживает конфигурацию наращивания ресурсов с помощью Open PBS.

Примечание.

Несмотря на то, что Windows является официально поддерживаемой платформой Open PBS, CycleCloud в настоящее время не поддерживает запуск Open PBS в Windows.