Condividi tramite


HTCondor

È possibile abilitare HTCondor in un cluster CycleCloud modificando la run_list sezione nella configurazione della definizione del cluster. Ci sono tre componenti di base di un cluster HTCondor. Il primo è il gestore centrale, che fornisce i daemon di pianificazione e gestione. Il secondo componente è costituito da uno o più scheduler, da cui i lavori vengono inviati al sistema. Il componente finale è costituito da uno o più nodi di esecuzione, ovvero gli host che eseguono il calcolo. Un semplice modello HTCondor potrebbe assomigliare 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]

Quando si importa e si avvia un cluster con questa definizione in CycleCloud, si ottiene un nodo di gestione , uno di pianificazione e un nodo di esecuzione . È possibile aggiungere nodi di esecuzione al cluster utilizzando il cyclecloud add_node comando. Per aggiungere altri 10 nodi di esecuzione , utilizzare il seguente comando:

cyclecloud add_node htcondor -t execute -c 10

Ridimensionamento automatico HTCondor

CycleCloud supporta la scalabilità automatica per HTCondor. Il software monitora lo stato della coda e attiva e disattiva i nodi in base alle esigenze per completare il lavoro in un lasso di tempo e costi ottimali. Per abilitare la scalabilità automatica per HTCondor, aggiungere Autoscale=true alla definizione del cluster:

[cluster htcondor]
Autoscale = True

Utilizzo avanzato di HTCondor

Se si conosce il tempo di esecuzione medio dei processi, definirlo average_runtime (in minuti) nel processo. CycleCloud utilizza tale valore per avviare il numero minimo di nodi. Ad esempio, se vengono inviati cinque processi di 10 minuti ed average_runtime è impostato su 10, CycleCloud avvia un solo nodo anziché cinque.

Nodearray di scalabilità automatica

Per impostazione predefinita, HTCondor richiede i core dal nodearray chiamato execute. Se un processo richiede un nodearray diverso (ad esempio, se alcuni processi all'interno di un flusso di lavoro hanno un requisito di memoria elevato), specificare un slot_type attributo per il processo. Ad esempio, l'aggiunta +slot_type = "highmemory" fa sì che HTCondor richieda un nodo dall'array highmemory di execute nodi anziché (questa impostazione richiede htcondor.slot_type = "highmemory" attualmente di essere impostata nella sezione dell'array di [[[configuration]]] nodi). Questa impostazione non influisce sul modo in cui HTCondor pianifica i processi, quindi potrebbe essere necessario includere l'attributo slot_typerequirements startd nelle espressioni del processo o rank in quelle del processo. Ad esempio: Requirements = target.slot_type = "highmemory".

Invio di lavori a HTCondor

Il modo più generico per inviare lavori a un'utilità di pianificazione HTCondor è il comando (eseguito da un nodo dell'utilità di pianificazione):

condor_submit my_job.submit

Un file di invio di esempio potrebbe essere simile al seguente:

      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

Informazioni di riferimento sulla configurazione di HTCondor

Le seguenti opzioni di configurazione specifiche di HTCondor personalizzano la funzionalità:

HTCondor-Specific opzioni di configurazione Descrizione
htcondor.agent_enabled Se true, utilizzare il condor_agent per l'invio dei processi e il polling. Impostazione predefinita: false
htcondor.agent_version La versione del condor_agent da utilizzare. Impostazione predefinita: 1.27
htcondor.classad_lifetime La durata predefinita degli annunci (in secondi). Impostazione predefinita: 700
htcondor.condor_owner Account Linux proprietario degli script di riduzione HTCondor. Impostazione predefinita: root
htcondor.condor_group Gruppo Linux proprietario degli script di riduzione HTCondor. Impostazione predefinita: root
htcondor.data_dir La directory per i log, le directory di spooling, le directory di esecuzione e il file di configurazione locale. Impostazione predefinita: /mnt/condor_data (Linux), C:\Tutti i servizi\condor_local (Windows)
htcondor.ignore_hyperthreads (Solo Windows) Impostare il numero di CPU su metà delle CPU rilevate per "disabilitare" l'hyperthreading. Se si usa la scalabilità automatica, specificare il numero di core non hyperthread con l'impostazione Cores di configurazione nella sezione [[node]] o [[nodearray]]. Impostazione predefinita: false
htcondor.install_dir La directory in cui è installato HTCondor. Impostazione predefinita: /opt/condor (Linux), C:\condor (Windows)
htcondor.job_start_count Il numero di processi avviati da una schedulazione per ciclo. 0 è illimitato. Valore predefinito: 20
htcondor.job_start_delay Il numero di secondi tra l'intervallo di avvio di ogni processo. 0 è immediato. Predefinito: 1
htcondor.max_registro_cronologia Dimensione massima del file di cronologia dei processi in byte. Impostazione predefinita: 20971520
htcondor.max_rotazioni_cronologia Il numero massimo di file di cronologia dei processi da conservare. Valore predefinito: 20
htcondor.negotiator_cycle_delay Il numero minimo di secondi prima dell'avvio di un nuovo ciclo di negoziazione. Valore predefinito: 20
htcondor.negotiator_interval La frequenza (in secondi) con cui il condor_negotiator avvia un ciclo di negoziazione. Valore predefinito: 60
htcondor.negotiator_inform_startd Se true, il negoziatore informa l'iniziato quando corrisponde a un lavoro. Valore predefinito: true
htcondor.remove_stopped_nodes Se true, i nodi di esecuzione arrestati vengono rimossi dalla vista CycleServer invece di essere contrassegnati come "inattivi".
htcondor.running Se true, i demoni del raccoglitore e del negoziatore HTCondor vengono eseguiti sul gestore centrale. In caso contrario, viene eseguito solo il condor_master. Valore predefinito: true
htcondor.scheduler_dual Se true, gli scheduler eseguono due schedd. Valore predefinito: true
htcondor.single_slot Se true, considera la macchina come un singolo slot (indipendentemente dal numero di core che la macchina possiede). Impostazione predefinita: false
htcondor.slot_type Definisce il slot_type di una matrice di nodi per la scalabilità automatica. Impostazione predefinita: execute
htcondor.update_interval Intervallo (in secondi) per la pubblicazione di un aggiornamento nell'agente di raccolta. Impostazione predefinita: 240
htcondor.use_cache_config Se true, utilizzare cache_config per fare in modo che l'istanza esegua il polling di CycleServer per la configurazione. Impostazione predefinita: false
htcondor.version La versione di HTCondor da installare. Impostazione predefinita: 8.2.6

File di configurazione generato automaticamente da HTCondor

HTCondor dispone di un gran numero di impostazioni di configurazione, inclusi gli attributi definiti dall'utente. CycleCloud offre la possibilità di creare un file di configurazione personalizzato utilizzando gli attributi definiti nel cluster:

Attributo Descrizione
htcondor.custom_config.enabled Se true, viene generato un file di configurazione utilizzando gli attributi specificati. Impostazione predefinita: false
htcondor.custom_config.nome_file Il nome del file (inserito in htcondor.data_dir/config) da scrivere. Impostazione predefinita: ZZZ-custom_config.txt
htcondor.custom_config.impostazioni Gli attributi da scrivere nel file di configurazione personalizzato, ad esempio htcondor.custom_config.settings.max_jobs_running = 5000

Annotazioni

Non è possibile specificare gli attributi di configurazione HTCondor contenenti un utilizzando questo . metodo. Se tali attributi sono necessari, specificarli in un libro di ricette o in un file installato con cluster-init.

CycleCloud supporta un set standard di attributi di autostop tra utilità di pianificazione:

Attributo Descrizione
cyclecloud.cluster.autoscale.stop_enabled L'arresto automatico è abilitato su questo nodo? [vero/falso]
cyclecloud.cluster.autoscale.idle_time_after_jobs Il tempo (in secondi) in cui un nodo rimane inattivo dopo aver completato i processi prima di essere ridotto.
cyclecloud.cluster.autoscale.tempo_inattivo_prima_delle_attività Quantità di tempo (in secondi) per un nodo inattivo prima di completare i processi prima che venga ridotta.