Поделиться через


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 Время (в секундах) для узла, которое будет находиться в состоянии простоя перед завершением заданий, прежде чем оно будет уменьшено.