Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Поддержка планировщика Slurm была перезаписана в рамках выпуска CycleCloud 8.4.0. К ключевым функциям относятся:
- Поддержка динамических узлов и динамических разделов с помощью динамических массивов узлов, поддерживая как одиночные, так и множественные размеры виртуальных машин (VM).
- Новые версии Slurm 23.02 и 22.05.8
- Отчеты о затратах с помощью интерфейса командной строки
azslurm
-
azslurm
CLI-автомасштабирование - Поддержка Ubuntu 20
- Отпала необходимость в подключаемом модуле топологии, а следовательно, и в любом подключаемом модуле отправки.
Кластеры Slurm в версиях CycleCloud < 8.4.0
Дополнительные сведения см. в разделе "Переход с версии 2.7 на 3.0".
Внесение изменений в кластер
Кластер Slurm, развернутый в CycleCloud, содержит интерфейс командной строки, называемый azslurm
, для облегчения внесения изменений в кластер. После внесения изменений в кластер выполните следующую команду от имени пользователя root на узле планировщика Slurm, чтобы перестроить azure.conf
и обновить узлы в кластере:
$ sudo -i
# azslurm scale
Команда создает разделы с правильным числом узлов, соответствующим gres.conf
, и перезапускает slurmctld
.
Больше не выполняется предварительное создание узлов выполнения
Начиная с версии 3.0.0 проекта CycleCloud Slurm, узлы не создаются заранее. Узлы создаются при azslurm resume
вызове или вручную создавая их в CycleCloud с помощью интерфейса командной строки.
Создание дополнительных секций
Шаблон по умолчанию, который поставляется с Azure CycleCloud, содержит три раздела (hpc
, htc
и dynamic
), и можно определить пользовательские nodearrays, которые сопоставляются непосредственно с разделами Slurm. Например, чтобы создать секцию GPU, добавьте следующий раздел в шаблон кластера:
[[nodearray gpu]]
MachineType = $GPUMachineType
ImageName = $GPUImageName
MaxCoreCount = $MaxGPUExecuteCoreCount
Interruptible = $GPUUseLowPrio
AdditionalClusterInitSpecs = $ExecuteClusterInitSpecs
[[[configuration]]]
slurm.autoscale = true
# Set to true if nodes are used for tightly-coupled multi-node jobs
slurm.hpc = false
[[[cluster-init cyclecloud/slurm:execute:3.0.1]]]
[[[network-interface eth0]]]
AssociatePublicIpAddress = $ExecuteNodesPublic
Динамические разделы
Начиная с CycleCloud версии 3.0.1, мы поддерживаем динамические секции. Вы можете создать карту nodearray
для динамического раздела, добавив следующие компоненты. Это myfeature
может быть любое требуемое описание функции или несколько функций, разделенных запятой.
[[[configuration]]]
slurm.autoscale = true
# Set to true if nodes are used for tightly-coupled multi-node jobs
slurm.hpc = false
# This is the minimum, but see slurmd --help and [slurm.conf](https://slurm.schedmd.com/slurm.conf.html) for more information.
slurm.dynamic_config := "-Z --conf \"Feature=myfeature\""
Фрагмент общего кода создает динамическую секцию, как показано ниже.
# Creating dynamic nodeset and partition using slurm.dynamic_config=-Z --conf "Feature=myfeature"
Nodeset=mydynamicns Feature=myfeature
PartitionName=mydynamicpart Nodes=mydynamicns
Использование динамических секций для автомасштабирования
По умолчанию динамический раздел не включает узлы. Узлы можно запускать с помощью CycleCloud или вручную через azslurm resume
, и они присоединяются к кластеру, используя выбранное вами имя. Однако, поскольку Slurm не знает об этих узлах заранее, он не может автоматически масштабировать их.
Вместо этого можно также предварительно создать записи узлов вот так, что позволяет Slurm автоматически масштабировать их.
scontrol create nodename=f4-[1-10] Feature=myfeature State=CLOUD
Одним из других преимуществ динамических секций является поддержка нескольких размеров виртуальных машин в одной секции.
Просто добавьте имя размера виртуальной машины в качестве функции, а затем azslurm
может различать размер виртуальной машины, который вы хотите использовать.
примечание Размер виртуальной машины добавляется неявно. Его не нужно добавлять в slurm.dynamic_config
scontrol create nodename=f4-[1-10] Feature=myfeature,Standard_F4 State=CLOUD
scontrol create nodename=f8-[1-10] Feature=myfeature,Standard_F8 State=CLOUD
В любом случае, как только вы создаете эти узлы в State=Cloud
, они становятся доступными для автомасштабирования, как и другие узлы.
Для поддержки нескольких размеров виртуальных машин в пуле узлов CycleCloudможно изменить шаблон для поддержки нескольких размеров виртуальных машин путем добавления Config.Mutiselect = true
.
[[[parameter DynamicMachineType]]]
Label = Dyn VM Type
Description = The VM type for Dynamic nodes
ParameterType = Cloud.MachineType
DefaultValue = Standard_F2s_v2
Config.Multiselect = true
Динамическое уменьшение масштаба
По умолчанию все узлы в динамическом разделе масштабируются так же, как и другие разделы. Сведения об отключении динамического раздела см. в SuspendExcParts.
Масштабирование вручную
Если cyclecloud_slurm детектирует, что автомасштабирование отключено (SuspendTime=-1), он использует статус FUTURE для обозначения узлов, которые выключены, вместо того чтобы полагаться на статус питания в Slurm. То есть, если автомасштабирование включено, отключенные узлы обозначены как idle~
в sinfo. При отключении автомасштабирования неактивные узлы не отображаются в sinfo. Их определение по-прежнему отображается с помощью scontrol show nodes --future
.
Чтобы запустить новые узлы, выполните команду /opt/azurehpc/slurm/resume_program.sh node_list
(например, htc-[1-10]).
Чтобы завершить работу узлов, выполните команду /opt/azurehpc/slurm/suspend_program.sh node_list
(например, htc-[1-10]).
Чтобы запустить кластер в этом режиме, просто добавьте SuspendTime=-1
в дополнительную конфигурацию Slurm в шаблоне.
Чтобы переключить кластер в этот режим, добавьте SuspendTime=-1
в slurm.conf и запустите scontrol reconfigure
. Затем выполните azslurm remove_nodes && azslurm scale
.
Устранение неполадок
Переход с 2.7 на 3.0
Изменена папка установки
/opt/cycle/slurm
—>/opt/azurehpc/slurm
Журналы автомасштабирования теперь находятся в
/opt/azurehpc/slurm/logs
вместо/var/log/slurmctld
. Обратите внимание, чтоslurmctld.log
в этой папке.Скрипт
cyclecloud_slurm.sh
больше недоступен. Новое средство командной строки под названиемazslurm
заменилоcyclecloud_slurm.sh
, и его можно запускать от имени суперпользователя.azslurm
также поддерживает автозавершение.[root@scheduler ~]# azslurm usage: accounting_info - buckets - Prints out autoscale bucket information, like limits etc config - Writes the effective autoscale config, after any preprocessing, to stdout connect - Tests connection to CycleCloud cost - Cost analysis and reporting tool that maps Azure costs to Slurm Job Accounting data. This is an experimental feature. default_output_columns - Output what are the default output columns for an optional command. generate_topology - Generates topology plugin configuration initconfig - Creates an initial autoscale config. Writes to stdout keep_alive - Add, remove or set which nodes should be prevented from being shutdown. limits - nodes - Query nodes partitions - Generates partition configuration refresh_autocomplete - Refreshes local autocomplete information for cluster specific resources and nodes. remove_nodes - Removes the node from the scheduler without terminating the actual instance. resume - Equivalent to ResumeProgram, starts and waits for a set of nodes. resume_fail - Equivalent to SuspendFailProgram, shuts down nodes retry_failed_nodes - Retries all nodes in a failed state. scale - shell - Interactive python shell with relevant objects in local scope. Use the --script to run python scripts suspend - Equivalent to SuspendProgram, shuts down nodes wait_for_resume - Wait for a set of nodes to converge.
CycleCloud больше не создает узлы заранее. Он создает их только в том случае, если они необходимы.
Все двоичные файлы Slurm находятся внутри файла
azure-slurm-install-pkg*.tar.gz
в папкеslurm-pkgs
. Они извлекаются из определенного двоичного релиза. Текущий двоичный выпуск — 4.0.0Для заданий MPI единственная граница сети по умолчанию — это секция. В отличие от версии 2.x, каждый раздел не содержит несколько групп размещения. Таким образом, на каждый раздел используется только одна совместно размещенная группа виртуальных машин (VMSS). Подключаемый модуль топологии больше не требуется, соответственно, модуль отправки заданий тоже не нужен. Вместо этого, отправка в несколько партиций является рекомендуемым вариантом для задач, требующих отправки заданий в несколько групп размещения.
CycleCloud поддерживает стандартный набор атрибутов автоостановки во всех планировщиках.
Атрибут | Описание |
---|---|
cyclecloud.cluster.autoscale.остановка_включена | Включён ли автостоп на этом узле? [истина/ложь] |
cyclecloud.cluster.autoscale.время_бездействия_после_завершения_задач | Продолжительность времени (в секундах), в течение которого узел бездействует после завершения заданий, прежде чем уменьшится его масштаб. |
cyclecloud.cluster.autoscale.время_простоя_перед_задачами | Время (в секундах), в течение которого узел бездействует перед завершением заданий и уменьшением масштаба. |