Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Você pode habilitar o HTCondor num cluster CycleCloud modificando a seção de configuração run_list da sua definição de cluster. Existem três componentes básicos de um cluster HTCondor. O primeiro é o gerente central, que fornece os daemons de agendamento e gerenciamento. O segundo componente é um ou mais agendadores, a partir dos quais os trabalhos são enviados para o sistema. O componente final é constituído por um ou mais nós de execução, que são os hosts responsáveis por executar o cálculo. Um template HTCondor simples pode assemelhar-se a:
[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 esta definição no CycleCloud, obtém um gestor, um nó agendador e um nó de execução. Você pode adicionar nós de execução ao cluster usando o cyclecloud add_node comando. Para adicionar mais 10 nós de execução , use o seguinte comando:
cyclecloud add_node htcondor -t execute -c 10
Dimensionamento automático HTCondor
O CycleCloud suporta dimensionamento automático para HTCondor. O software monitora o estado da sua fila e ativa e desativa os nós conforme necessário para concluir o trabalho em tempo e custo ótimos. 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ê sabe 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.
Nodearray de dimensionamento automático
Por padrão, o HTCondor solicita núcleos da matriz de nós chamada 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 slot_type atributo para o trabalho. Por exemplo, adicionar +slot_type = "highmemory" faz com que o HTCondor solicite um nó da matriz de nós highmemory em vez de execute (essa configuração atualmente requer que htcondor.slot_type = "highmemory" seja definida na seção [[[configuration]]] da matriz de nós). Essa configuração não afeta como o HTCondor agenda as tarefas, portanto, convém incluir o atributo slot_type startd nas expressões requirements ou rank da tarefa. Por exemplo: Requirements = target.slot_type = "highmemory".
Submeter Trabalhos para o HTCondor
A maneira mais genérica de submeter tarefas a um agendador HTCondor é o comando (executado a partir de um nó de agendador):
condor_submit my_job.submit
Um exemplo de ficheiro de submissão 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 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 verdadeiro, use o condor_agent para a submissão e verificação de trabalhos. Predefinição: falso |
| htcondor.agent_version | A versão do condor_agent a usar. 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 Linux que possui os scripts de redução do HTCondor. Padrão: root |
| htcondor.condor_group | O grupo Linux que possui os scripts de redução do HTCondor. Padrão: root |
| htcondor.data_dir | O diretório para logs, diretórios de spool, diretórios de execução e ficheiro de configuração local. Padrão: /mnt/condor_data (Linux), C:\All Services\condor_local (Windows) |
| htcondor.ignore_hyperthreads | (Apenas Windows) Defina o número de CPUs para metade das CPUs detetadas para "desativar" o hyperthreading. Se estiver a usar a autoescalabilidade, especifique o número de núcleos não-hyperthread com a configuração Cores na secção [[node]] ou [[nodearray]]. Predefinição: falso |
| htcondor.install_dir | O diretório onde 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 de trabalho. 0 é imediato. Padrão: 1 |
| htcondor.max_histórico_log | O tamanho máximo do ficheiro de histórico de tarefas em bytes. Padrão: 20971520 |
| htcondor.max_rotações_histórico_rotações | O número máximo de ficheiros de histórico de trabalhos a manter. Padrão: 20 |
| htcondor.negotiator_cycle_delay | O número mínimo de segundos antes do início de um novo ciclo de negociação. 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 verdadeiro, o negociador informa o iniciado quando ele corresponde a um trabalho. Padrão: verdadeiro |
| htcondor.remove_stopped_nodes | Se verdadeiro, os nós de execução parados são removidos da visualização do CycleServer em vez de serem marcados como "inativos". |
| htcondor.running | Se verdadeiro, os processos daemon do coletor e do negociador do HTCondor são executados no gestor central. Caso contrário, apenas o condor_master é executado. Padrão: verdadeiro |
| htcondor.scheduler_dual | Se for verdadeiro, os schedulers executam dois schedds. Padrão: verdadeiro |
| htcondor.single_slot | Se verdadeiro, trata a máquina como um único slot (independentemente do número de núcleos que a máquina possui). Predefinição: falso |
| htcondor.slot_type | Define o tipo_de_slot de um array de nós para escalonamento automático. Default: executar |
| htcondor.update_interval | O intervalo (em segundos) para o startd publicar uma atualização para o coletor. Padrão: 240 |
| htcondor.use_cache_config | Se for verdadeiro, use cache_config para que a instância consulte o CycleServer para configuração. Predefinição: falso |
| htcondor.versão | A versão do HTCondor a instalar. Padrão: 8.2.6 |
Ficheiro de Configuração de Geração Automática do HTCondor
HTCondor tem um grande número de definições de configuração, incluindo atributos definidos pelo usuário. CycleCloud oferece a capacidade de criar um ficheiro de configuração personalizado usando atributos definidos no cluster.
| Atributo | Descrição |
|---|---|
| htcondor.custom_config.ativado | Se for verdadeiro, é gerado um ficheiro de configuração usando os atributos especificados. Predefinição: falso |
| htcondor.custom_config.nome_do_arquivo | O nome do ficheiro (colocado em htcondor.data_dir/config) a escrever. Padrão: ZZZ-custom_config.txt |
| htcondor.custom_config.configurações | Os atributos a serem escritos no ficheiro de configuração personalizado, tais como htcondor.custom_config.settings.max_jobs_running = 5000 |
Observação
Não é possível especificar atributos de configuração HTCondor contendo um . usando esse método. Se precisar desses atributos, especifique-os num livro de receitas ou num ficheiro instalado com cluster-init.
O CycleCloud suporta um conjunto padrão de atributos de parada automática entre agendadores:
| Atributo | Descrição |
|---|---|
| cyclecloud.cluster.autoscale.parar_ativado | Habilita a parada automática neste nó. [verdadeiro/falso] |
| cyclecloud.cluster.autoscale.tempo_inativo_após_tarefas | O período de tempo (em segundos) durante o qual um nó permanece ocioso após concluir trabalhos, antes de parar automaticamente. |
| cyclecloud.cluster.autoscale.idle_time_before_jobs (tempo de inatividade antes dos trabalhos) | A quantidade de tempo (em segundos) que um nó permanece ocioso após concluir os trabalhos, antes de parar automaticamente. |