OpenPBS
OpenPBS можно легко включить в кластере CycleCloud, изменив "run_list" в разделе конфигурации определения кластера. Два основных компонента кластера PBS Professional — это главный узел, предоставляющий общую файловую систему, на которой выполняется программное обеспечение PBS Professional, и узлы execute, которые являются узлами, которые подключают общую файловую систему и выполняют отправленные задания. Например, фрагмент простого шаблона кластера может выглядеть следующим образом:
[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 узлов выполнения:
cyclecloud add_node my-pbspro -t execute -c 10
Автомасштабирование на основе ресурсов PBS
Cyclecloud поддерживает два ресурса для расширения возможностей динамической подготовки. Эти ресурсы являются nodearray и machinetype.
Если отправить задание и указать ресурс nodearray, qsub -l nodearray=highmem -- /bin/hostname
CycleCloud добавит узлы в nodearray с именем 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.
Добавление дополнительных очередей, назначенных nodearrays
В кластерах с несколькими узлами обычно создаются отдельные очереди для автоматического перенаправления заданий в соответствующий тип виртуальной машины. В этом примере предполагается, что в шаблоне кластера определен следующий nodearray 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
Ниже приведены параметры конфигурации PBS Профессиональный, которые можно включить для настройки функциональных возможностей.
Параметры PBS Pro | Описание |
---|---|
pbspro.slots | Количество слотов для данного узла, отчитываемых в PBS Pro. Количество слотов — это количество параллельных заданий, которые может выполнять узел, это значение по умолчанию равно количеству ЦП на данном компьютере. Это значение можно переопределить в тех случаях, когда задания не выполняются на основе ЦП, а на памяти, gpu и т. д. |
pbspro.slot_type | Имя типа слота, который предоставляет узел. Значение по умолчанию — execute. Если задание помечается жестким ресурсом slot_type=<type> , это задание будет выполняться только на компьютере с тем же типом слота. Это позволяет создавать разные конфигурации программного обеспечения и оборудования для каждого узла и гарантировать, что соответствующее задание всегда запланировано на правильном типе узла. |
pbspro.version | Значение по умолчанию: 18.1.3-0. Это версия PBS Professional для установки и запуска. В настоящее время это параметр по умолчанию и единственный вариант. В будущих дополнительных версиях программного обеспечения PBS Professional могут поддерживаться. |
Подключение 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"
}]
}
Именованный mem
ресурс OpenPBS приравнивается к атрибуту узла с именем node.memory
, который представляет собой общую память любой виртуальной машины. Эта конфигурация позволяет 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), а CC будет управлять именованной группой размещения для каждого набора развернутых узлов. Используйте ресурс group_id
PBS для этого имени группы размещения.
Очередь 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.stop_enabled | Включена ли автостопом на этом узле? [true/false] |
cyclecloud.cluster.autoscale.idle_time_after_jobs | Время (в секундах) для узла, которое будет простаивать после завершения заданий, прежде чем оно будет уменьшено. |
cyclecloud.cluster.autoscale.idle_time_before_jobs | Время (в секундах) для узла, которое будет простаивать перед выполнением заданий, прежде чем оно будет уменьшено. |
Примечание
CycleCloud не поддерживает конфигурацию ускорения с помощью Open PBS.
Примечание
Несмотря на то, что Windows является официально поддерживаемой платформой Open PBS, CycleCloud в настоящее время не поддерживает запуск Open PBS в Windows.