Partilhar via


HTCondor

O HTCondor pode ser facilmente ativado num cluster CycleCloud modificando o "run_list" na secção de configuração da definição do seu cluster. Existem três componentes básicos de um cluster HTCondor. O primeiro é o "gestor central" que fornece os daemons de agendamento e gestão. O segundo componente de um cluster HTCondor é um ou mais programadores a partir dos quais os postos de trabalho são submetidos ao sistema. O componente final é um ou mais nós de execução que são os anfitriões executam a computação. Um modelo HTCondor simples pode parecer:

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

Importar e iniciar um cluster com definição no CycleCloud produzirá um nó de "manager" e um nó de "scheduler", bem como um nó de "executar". Os nós de execução podem ser adicionados ao cluster através do cyclecloud add_node comando. Para adicionar mais 10 nóns de execução:

cyclecloud add_node htcondor -t execute -c 10

HTCondor Autoscaling

O CycleCloud suporta a autoscalagem para o HTCondor, o que significa que o software monitorizará o estado da sua fila e ligará e desligará os nós conforme necessário para completar o trabalho numa quantidade/custo ideal. Pode ativar a autoscalagem para o HTCondor adicionando Autoscale=true à definição de cluster:

[cluster htcondor]
Autoscale = True

HTCondor Uso Avançado

Se conhecer o tempo médio de funcionação dos trabalhos, pode definir average_runtime (em minutos) no seu trabalho. O CycleCloud usará isso para iniciar o número mínimo de nós (por exemplo, cinco empregos de 10 minutos só iniciarão um único nó em vez de cinco quando average_runtime estiver definido para 10).

Nodearray de escala automática

Por predefinição, o HTCondor solicitará núcleos do nodearray chamado "executar". Se um trabalho requer um nodearray diferente (por exemplo, se determinados trabalhos dentro de um fluxo de trabalho têm um elevado requisito de memória), pode especificar um slot_type atributo para o trabalho. Por exemplo, a adição +slot_type = "highmemory" fará com que o HTCondor solicite um nó do nó "highmemory" em vez de "executar" (note que atualmente isto requer htcondor.slot_type = "highmemory" que seja definido na secção do [[[configuration]]] nodearray). Isto não afetará a forma como o HTCondor programa os postos de trabalho, pelo que poderá querer incluir o slot_type atributo inicial nas expressões ou rank expressões do requirements trabalho. Por exemplo: Requirements = target.slot_type = "highmemory".

Submissão de Empregos à HTCondor

A forma mais genérica de submeter empregos a um programador HTCondor é o comando (executado a partir de um nó de programador):

condor_submit my_job.submit

Um ficheiro de submissão de amostras pode ser assim:

      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 HTCondor

Seguem-se as opções de configuração específicas do HTCondor que pode definir para personalizar a funcionalidade:

Opções de configuração HTCondor-Specific Description
htcondor.agent_enabled Se for verdade, use o condor_agent para submissão de emprego e sondagens. Padrão: falso
htcondor.agent_version A versão do condor_agent de usar. Predefinição: 1.27
htcondor.classad_lifetime A vida útil padrão dos classads (em segundos). Predefinição: 700
htcondor.condor_owner A conta Linux que detém os scripts de escala HTCondor. Padrão: raiz
htcondor.condor_group O grupo Linux que detém os scripts de escala HTCondor. Padrão: raiz
htcondor.data_dir O diretório de registos, diretórios de bobinas, diretórios de execução e arquivos de config locais. Predefinição: /mnt/condor_data (Linux), C:\Todos os serviços\condor_local (Windows)
htcondor.ignore_hyperthreads (Apenas janelas) Desative o número de CPUs para metade dos CPUs detetados como forma de "desativar" a hiper-leitura. Se utilizar a escala automática, especifique a contagem de núcleo não hiperfinal com a Cores definição de configuração na secção [[node]] ou [nodearray]] Padrão: falso
htcondor.install_dir O diretório a que o HTCondor está instalado. Predefinição: /opt/condor (Linux), C:\condor (Windows)
htcondor.job_start_count O número de postos de trabalho por ciclo começará por ciclo. 0 é ilimitado. Predefinição: 20
htcondor.job_start_delay O número de segundos entre cada intervalo de início de trabalho. 0 é imediato. Predefinição: 1
htcondor.max_history_log O tamanho máximo do histórico de trabalho em bytes. Predefinição: 20971520
htcondor.max_history_rotações O número máximo de ficheiros de histórico de emprego para manter. Predefinição: 20
htcondor.negotiator_cycle_delay O número mínimo de segundos antes de um novo ciclo de negociadores pode começar. Predefinição: 20
htcondor.negotiator_interval Com que frequência (em segundos) o condor_negotiator inicia um ciclo de negociação. Predefinição: 60
htcondor.negotiator_inform_startd Se for verdade, o negociador informa o início quando é igual a um trabalho. Padrão: verdadeiro
htcondor.remove_stopped_nodes Se for verdade, os nós de execução parados são removidos da vista CycleServer em vez de serem marcados como "down".
htcondor.running Se for verdade, os daemons colecionadores e negociadores da HTCondor correm no gerente central. Caso contrário, só o condor_master corre. Padrão: verdadeiro
htcondor.scheduler_dual Se for verdade, os agendadores correm dois esquemas. Padrão: verdadeiro
htcondor.single_slot Se for verdade, trata a máquina como uma única ranhura (independentemente do número de núcleos que a máquina possui). Padrão: falso
htcondor.slot_type Define a slot_type de um conjunto de nó para autoscaling. Predefinição: executar
htcondor.update_interval O intervalo (em segundos) para o início publicar uma atualização ao coletor. Predefinição: 240
htcondor.use_cache_config Se for verdade, utilize cache_config para ter a sondagem de exemplo CycleServer para configuração. Padrão: falso
htcondor.versão A versão do HTCondor para instalar. Predefinição: 8.2.6

Ficheiro de configuração gerada automaticamente HTCondor

O HTCondor tem um grande número de configurações, incluindo atributos definidos pelo utilizador. O CycleCloud oferece a capacidade de criar um ficheiro de configuração personalizado utilizando atributos definidos no cluster:

Atributo Descrição
htcondor.custom_config.habilitado Se for verdade, um ficheiro de configuração é gerado utilizando os atributos especificados. Padrão: falso
htcondor.custom_config.file_name O nome do ficheiro (colocado em htcondor.data_dir/config) para escrever. Predefinição: ZZZ-custom_config.txt
htcondor.custom_config.configurações Os atributos para escrever para o arquivo config personalizado, tais como htcondor.custom_config.settings.max_jobs_running = 5000

Nota

Atributos de configuração HTCondor que contenham um . não pode ser especificado usando este método. Se tais atributos forem necessários, devem ser especificados num livro de receitas ou num ficheiro instalado com cluster-init.

CycleCloud suporta um conjunto padrão de atributos de autostop em todos os agendadores:

Atributo Descrição
cyclecloud.cluster.autoscale.stop_enabled A paragem automática está ativada neste nó? [verdadeiro/falso]
cyclecloud.cluster.autoscale.idle_time_after_jobs A quantidade de tempo (em segundos) para que um nó se sente inativo após completar os trabalhos antes de ser reduzido.
cyclecloud.cluster.autoscale.idle_time_before_jobs A quantidade de tempo (em segundos) para que um nó se sente inativo antes de completar os trabalhos antes de ser reduzido.