HTCondor
HTCondor можно легко включить в кластере CycleCloud, изменив "run_list" в разделе конфигурации определения кластера. Существует три основных компонента кластера HTCondor. Первым является "центральный менеджер", который предоставляет управляющие программы планирования и управления. Вторым компонентом кластера HTCondor является один или несколько планировщиков, из которых задания отправляются в систему. Последний компонент — это один или несколько узлов выполнения, которые являются узлами, выполняющих вычисления. Простой шаблон HTCondor может выглядеть следующим образом:
[cluster htcondor]
[[node manager]]
ImageName = cycle.image.centos7
MachineType = Standard_A4 # 8 cores
[[[configuration]]]
run_list = role[central_manager]
[[node scheduler]]
ImageName = cycle.image.centos7
MachineType = Standard_A4 # 8 cores
[[[configuration]]]
run_list = role[condor_scheduler_role],role[filer_role],role[scheduler]
[[nodearray execute]]
ImageName = cycle.image.centos7
MachineType = Standard_A1 # 1 core
Count = 1
[[[configuration]]]
run_list = role[usc_execute]
Импорт и запуск кластера с определением в CycleCloud даст узел manager и планировщик, а также один узел execute. Выполнение узлов можно добавить в кластер с помощью cyclecloud add_node
команды. Чтобы добавить еще 10 узлов выполнения, выполните следующую команду:
cyclecloud add_node htcondor -t execute -c 10
Автомасштабирование HTCondor
CycleCloud поддерживает автомасштабирование для HTCondor, что означает, что программное обеспечение будет отслеживать состояние очереди и включать и отключать узлы по мере необходимости, чтобы завершить работу в оптимальном количестве времени или затрат. Автомасштабирование для HTCondor можно включить, добавив Autoscale=true
в определение кластера:
[cluster htcondor]
Autoscale = True
Расширенное использование HTCondor
Если вы знаете среднюю среду выполнения заданий, можно определить average_runtime
(в минутах) в задании. CycleCloud будет использовать это для запуска минимального количества узлов (например, пять 10-минутных заданий будут запускать только один узел, а не пять, если average_runtime
задано значение 10).
Автомасштабирование Nodearray
По умолчанию HTCondor запрашивает ядра из nodearray с именем execute. Если для задания требуется другой nodearray (например, если для некоторых заданий в рабочем процессе требуется высокая память), можно указать slot_type
атрибут для задания. Например, добавление +slot_type = "highmemory"
приведет к тому, что HTCondor запросит узел из nodearray highmemory вместо execute (обратите внимание, что в настоящее время это необходимо htcondor.slot_type = "highmemory"
задать в разделе nodearray [[[configuration]]]
). Это не повлияет на то, как HTCondor планирует задания, поэтому может потребоваться включить начальный slot_type
атрибут в задания requirements
или rank
выражения. Например: Requirements = target.slot_type = "highmemory"
.
Отправка заданий в HTCondor
Наиболее универсальным способом отправки заданий в планировщик HTCondor является команда (запуск из узла планировщика):
condor_submit my_job.submit
Пример файла отправки может выглядеть следующим образом:
Universe = vanilla
Executable = do_science
Arguments = -v --win-prize=true
Output = log/$(Cluster).$(Process).out
Error = log/$(Cluster).$(Process).err
Should_transfer_files = if_needed
When_to_transfer_output = On_exit
+average_runtime = 10
+slot_type = "highmemory"
Queue
Справочник по конфигурации HTCondor
Ниже приведены параметры конфигурации, относящиеся к HTCondor, которые можно настроить для настройки функциональных возможностей.
Параметры конфигурации HTCondor-Specific | Описание |
---|---|
htcondor.agent_enabled | Если значение равно true, используйте condor_agent для отправки и опроса заданий. Значение по умолчанию — false |
htcondor.agent_version | Используемая версия condor_agent. Значение по умолчанию: 1.27 |
htcondor.classad_lifetime | Время существования классов по умолчанию (в секундах). Значение по умолчанию: 700 |
htcondor.condor_owner | Учетная запись Linux, владеющая скриптами масштабирования HTCondor. Значение по умолчанию: root |
htcondor.condor_group | Группа Linux, владеющая скриптами масштабирования HTCondor. Значение по умолчанию: root |
htcondor.data_dir | Каталог для журналов, каталогов спуля, каталогов выполнения и локального файла конфигурации. По умолчанию: /mnt/condor_data (Linux), C:\All Services\condor_local (Windows) |
htcondor.ignore_hyperthreads | (Только для Windows) Задайте количество ЦП, равных половине обнаруженных ЦП, как способ отключить гиперпоточность. При использовании автомасштабирования укажите число ядер, отличных от hyperthread, с параметром Cores конфигурации в разделе [[node]] или [[nodearray]]. Значение по умолчанию — false |
htcondor.install_dir | Каталог, в который установлен HTCondor. По умолчанию: /opt/condor (Linux), C:\condor (Windows) |
htcondor.job_start_count | Количество заданий schedd начнется на цикл. 0 — без ограничений. По умолчанию: 20 |
htcondor.job_start_delay | Количество секунд между интервалом запуска каждого задания. 0 немедленно. Значение по умолчанию: 1. |
htcondor.max_history_log | Максимальный размер файла журнала заданий в байтах. Значение по умолчанию: 20971520 |
htcondor.max_history_rotations | Максимальное количество хранимых файлов журнала заданий. По умолчанию: 20 |
htcondor.negotiator_cycle_delay | Минимальное количество секунд до начала нового цикла переговорщика. По умолчанию: 20 |
htcondor.negotiator_interval | Как часто (в секундах) condor_negotiator начинает цикл согласования. Значение по умолчанию: 60 |
htcondor.negotiator_inform_startd | Если значение равно true, переговорщик сообщает началу, когда он соответствует заданию. Значение по умолчанию: True. |
htcondor.remove_stopped_nodes | Если значение равно true, остановленные узлы выполнения удаляются из представления CycleServer вместо того, чтобы помечаться как "down". |
htcondor.running | Если значение равно true, управляющие программы сборщика и переговорщика HTCondor выполняются в центральном диспетчере. В противном случае выполняется только condor_master. Значение по умолчанию: True. |
htcondor.scheduler_dual | Если значение равно true, планировщики выполняют два schedds. Значение по умолчанию: True. |
htcondor.single_slot | Если значение равно true, компьютер обрабатывается как один слот (независимо от количества ядер, которым обладает компьютер). Значение по умолчанию — false |
htcondor.slot_type | Определяет slot_type массива узлов для автомасштабирования. Значение по умолчанию: выполнение |
htcondor.update_interval | Интервал (в секундах) для начала публикации обновления в сборщике. Значение по умолчанию: 240 |
htcondor.use_cache_config | Если значение равно true, используйте cache_config для настройки экземпляра pollServer. Значение по умолчанию — false |
htcondor.version | Устанавливаемая версия HTCondor. Значение по умолчанию: 8.2.6 |
Автоматически созданный файл конфигурации HTCondor
HTCondor имеет большое количество параметров конфигурации, включая определяемые пользователем атрибуты. CycleCloud позволяет создать пользовательский файл конфигурации с помощью атрибутов, определенных в кластере:
Атрибут | Описание |
---|---|
htcondor.custom_config.enabled | Если значение равно true, файл конфигурации создается с помощью указанных атрибутов. Значение по умолчанию — false |
htcondor.custom_config.file_name | Имя файла (помещенного в htcondor.data_dir /config) для записи. Значение по умолчанию: ZZZ-custom_config.txt |
htcondor.custom_config.settings | Атрибуты для записи в пользовательский файл конфигурации, например htcondor.custom_config.settings.max_jobs_running = 5000 |
Примечание
Атрибуты конфигурации HTCondor, содержащие . нельзя указать с помощью этого метода. Если такие атрибуты необходимы, они должны быть указаны в книге или файле, установленном с помощью cluster-init.
CycleCloud поддерживает стандартный набор атрибутов автостопом в планировщиках:
Атрибут | Описание |
---|---|
cyclecloud.cluster.autoscale.stop_enabled | Включена ли функция автостопом на этом узле? [true/false] |
cyclecloud.cluster.autoscale.idle_time_after_jobs | Время (в секундах) для узла, которое будет находиться в состоянии простоя после завершения заданий, прежде чем оно будет уменьшено. |
cyclecloud.cluster.autoscale.idle_time_before_jobs | Время (в секундах) для узла, которое будет находиться в состоянии простоя перед завершением заданий, прежде чем оно будет уменьшено. |