Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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. |