Compartilhar via


HTCondor

Você pode habilitar o HTCondor em um cluster do CycleCloud modificando a run_list na seção de configuração da definição do cluster. Há três componentes básicos de um cluster do HTCondor. O primeiro é o gerenciador central, que fornece os daemons de agendamento e gerenciamento. O segundo componente é um ou mais agendadores, dos quais os trabalhos são enviados para o sistema. O componente final é um ou mais nós de execução, que são os hosts que executam a computação. Um modelo HTCondor simples pode ter a seguinte aparência:

[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]

Ao importar e iniciar um cluster com essa definição no CycleCloud, você obtém um nó gerenciador, um nó agendador e um nó de execução. Você pode adicionar nós de execução ao cluster usando o comando cyclecloud add_node. Para adicionar mais 10 nós de execução, use o seguinte comando:

cyclecloud add_node htcondor -t execute -c 10

Dimensionamento automático do HTCondor

O CycleCloud dá suporte ao dimensionamento automático para HTCondor. O software monitora o status da fila e ativa e desativa nós conforme necessário para concluir o trabalho no menor tempo e custo possíveis. Para habilitar o dimensionamento automático para HTCondor, adicione Autoscale=true à sua definição de cluster:

[cluster htcondor]
Autoscale = True

Uso avançado do HTCondor

Se você souber o tempo médio de execução dos trabalhos, defina average_runtime (em minutos) em seu trabalho. O CycleCloud usa esse valor para iniciar o número mínimo de nós. Por exemplo, se cinco trabalhos de 10 minutos forem enviados e average_runtime for definido como 10, o CycleCloud iniciará apenas um nó em vez de cinco.

Dimensionamento automático de matriz de nós

Por padrão, o HTCondor solicita núcleos do nodearray chamado execute. Se um trabalho exigir um nodearray diferente (por exemplo, se determinados trabalhos dentro de um fluxo de trabalho tiverem um alto requisito de memória), especifique um atributo slot_type para o trabalho. Por exemplo, adicionar +slot_type = "highmemory" faz com que o HTCondor solicite um nó do nodearray highmemory em vez de execute (essa configuração atualmente requer que htcondor.slot_type = "highmemory" ser definido na seção [[[configuration]]] do nodearray). Essa configuração não afeta como o HTCondor agenda os trabalhos, portanto, talvez você queira incluir o atributo slot_type iniciado nas expressões requirements ou rank do trabalho. Por exemplo: Requirements = target.slot_type = "highmemory".

Enviando trabalhos para o HTCondor

A maneira mais genérica de enviar trabalhos para um agendador HTCondor é o comando (executar de um nó do agendador):

condor_submit my_job.submit

Um arquivo de envio de exemplo pode ter esta aparência:

      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

Referência de configuração do HTCondor

As seguintes opções de configuração específicas do HTCondor personalizam a funcionalidade:

Opções de configuração específicas do HTCondor Descrição
htcondor.agent_enabled Se for verdadeiro, use o condor_agent para envio de trabalho e sondagem. Padrão: false
htcondor.agent_version A versão do condor_agent a ser usada. Padrão: 1.27
htcondor.classad_lifetime O tempo de vida padrão dos classads (em segundos). Padrão: 700
htcondor.condor_owner A conta do Linux que possui os scripts de redução de HTCondor. Padrão: raiz
htcondor.condor_group O grupo do Linux que possui os scripts de redução de HTCondor. Padrão: raiz
htcondor.data_dir O diretório para logs, diretórios de spool, diretórios de execução e arquivo de configuração local. Padrão: /mnt/condor_data (Linux), C:\All Services\condor_local (Windows)
htcondor.ignore_hyperthreads (Somente Windows) Defina o número de CPUs como metade das CPUs detectadas para "desabilitar" o hiperthreading. Se estiver usando o dimensionamento automático, especifique a contagem de núcleos não hiperthread com a configuração Cores na seção [[nó]] ou [[matriz de nós]]. Padrão: false
htcondor.install_dir O diretório no qual o HTCondor está instalado. Padrão: /opt/condor (Linux), C:\condor (Windows)
htcondor.job_start_count O número de trabalhos que um schedd inicia por ciclo. 0 é ilimitado. Padrão: 20
htcondor.job_start_delay O número de segundos entre cada intervalo de início do trabalho. 0 é imediato. Padrão: 1
htcondor.max_history_log O tamanho máximo do arquivo de histórico de trabalhos em bytes. Padrão: 20971520
htcondor.max_history_rotations O número máximo de arquivos de histórico de trabalhos a serem mantidos. Padrão: 20
htcondor.negotiator_cycle_delay O número mínimo de segundos antes que um novo ciclo de negociadores possa começar. Padrão: 20
htcondor.negotiator_interval Com que frequência (em segundos) o condor_negotiator inicia um ciclo de negociação. Padrão: 60
htcondor.negotiator_inform_startd Se true, o negociador informa o início quando ele corresponde a um trabalho. Padrão: true
htcondor.remove_stopped_nodes Se true, os nós de execução interrompidos serão removidos da exibição CycleServer em vez de serem marcados como "inativos".
htcondor.running Se for verdade, os daemons coletor e negociador HTCondor são executados no gerente central. Caso contrário, somente o condor_master será executado. Padrão: true
htcondor.scheduler_dual Se for verdade, os agendadores executam dois schedds. Padrão: true
htcondor.single_slot Se true, trata o computador como um único slot (independentemente do número de núcleos que o computador possui). Padrão: false
htcondor.slot_type Define o slot_type de uma matriz de nós para dimensionamento automático. Padrão: executar
htcondor.update_interval O intervalo (em segundos) para o iniciado publicar uma atualização no coletor. Padrão: 240
htcondor.use_cache_config Se for verdadeiro, use cache_config para ter o CycleServer de pesquisa de instância para configuração. Padrão: false
htcondor.version A versão do HTCondor a ser instalada. Padrão: 8.2.6

Arquivo de configuração gerado automaticamente pelo HTCondor

O HTCondor tem um grande número de configurações, incluindo atributos definidos pelo usuário. O CycleCloud oferece a capacidade de criar um arquivo de configuração personalizado usando atributos definidos no cluster:

Atributo Descrição
htcondor.custom_config.enabled Se true, um arquivo de configuração será gerado usando os atributos especificados. Padrão: false
htcondor.custom_config.file_name O nome do arquivo (colocado em htcondor.data_dir/config) a ser gravado. Padrão: ZZZ-custom_config.txt
htcondor.custom_config.settings Os atributos a serem gravados no arquivo de configuração personalizado, como htcondor.custom_config.settings.max_jobs_running = 5000

Observação

Você não pode especificar atributos de configuração do HTCondor que contêm um . usando esse método. Se você precisar desses atributos, especifique-os em um guia ou em um arquivo instalado com cluster-init.

O CycleCloud oferece suporte a um conjunto padrão de atributos de parada automática entre os agendadores.

Atributo Descrição
cyclecloud.cluster.autoscale.stop_enabled Habilita a parada automática neste nó. [verdadeiro/falso]
cyclecloud.cluster.autoscale.idle_time_after_jobs A quantidade de tempo (em segundos) para um nó ficar ocioso depois de concluir os trabalhos antes de parar automaticamente.
cyclecloud.cluster.autoscale.idle_time_before_jobs A quantidade de tempo (em segundos) para um nó ficar ocioso antes de concluir os trabalhos antes de parar automaticamente.