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. |