HTCondor

Вы можете включить HTCondor в кластере CycleCloud, изменив раздел конфигурации вашего определения кластера run_list . Кластер 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 вы получаете узел менеджера и планировщика , а также один узел выполнения . Вы можете добавить узлы выполнения в кластер с помощью 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, CycleCloud запустит только один узел вместо пяти.

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

По умолчанию HTCondor запрашивает ядра из массива узлов с именем execute. Если для задания требуется другой массив узлов (например, если определенные задания в рабочем процессе требуют большого объема памяти), укажите slot_type атрибут для задания. Например, добавление приводит к тому +slot_type = "highmemory" , что HTCondor запрашивает узел из highmemory nodearray вместо execute (этот параметр в настоящее время необходимо htcondor.slot_type = "highmemory" установить в разделе nodearray [[[configuration]]] ). Этот параметр не влияет на то, как HTCondor планирует задания, поэтому может потребоваться включить slot_type атрибут startd в задания 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 Время жизни classads по умолчанию (в секундах). По умолчанию: 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) Установите количество процессоров, равное половине обнаруженных процессоров, чтобы «отключить» технологию Hyper-Threading. Если используется автомасштабирование, укажите количество ядер без гиперпотока с помощью параметра 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_журнал_истории Максимальный размер файла истории заданий в байтах. По умолчанию: 20971520
htcondor.max_история_вращений Максимальное количество хранимых файлов журнала заданий. По умолчанию: 20
htcondor.negotiator_cycle_delay Минимальное количество секунд до начала нового цикла переговоров. По умолчанию: 20
htcondor.negotiator_interval Как часто (в секундах) condor_negotiator начинает цикл переговоров. По умолчанию: 60
htcondor.negotiator_inform_startd Если true, переговорщик информирует стартового партнера, когда он подходит для работы. Значение по умолчанию: true
htcondor.remove_stopped_nodes Если true, остановленные выполняемые узлы удаляются из представления CycleServer, а не помечаются как "неработающие".
htcondor.running Если значение true, демоны сборщика и переговорщика HTCondor работают на центральном менеджере. В противном случае запускается только condor_master. Значение по умолчанию: true
htcondor.scheduler_dual Если значение равно true, планировщики запускают два расписания. Значение по умолчанию: true
htcondor.single_slot Если true, то машина рассматривается как один слот (независимо от количества ядер на машине). Значение по умолчанию: false
htcondor.slot_type Определяет slot_type массива узлов для автоматического масштабирования. По умолчанию: execute
htcondor.update_interval Интервал (в секундах) для начала публикации обновления в сборщике. По умолчанию: 240
htcondor.use_cache_config Если значение true, используйте cache_config, чтобы экземпляр опрашивал CycleServer для настройки. Значение по умолчанию: false
htcondor.версия Версия HTCondor для установки. По умолчанию: 8.2.6

Автоматически сгенерированный конфигурационный файл HTCondor

HTCondor имеет большое количество конфигурационных параметров, в том числе определяемых пользователем атрибутов. CycleCloud предлагает возможность создания пользовательского файла конфигурации с использованием атрибутов, определенных в кластере:

Свойство Описание
htcondor.custom_config.enabled Если значение true, то файл конфигурации генерируется с использованием указанных атрибутов. Значение по умолчанию: false
htcondor.custom_config.имя_файла Имя файла (помещается в htcondor.data_dir/config) для записи. По умолчанию: ZZZ-custom_config.txt
htcondor.custom_config.настройки Атрибуты для записи в пользовательский файл конфигурации, такие как htcondor.custom_config.settings.max_jobs_running = 5000

Замечание

Вы не можете указать конфигурационные атрибуты HTCondor, содержащие этот метод.. Если вам нужны такие атрибуты, укажите их в кулинарной книге или файле, установленном с помощью cluster-init.

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

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