Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Тип кластера 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.