HTCondor
HTCondor può essere facilmente abilitato in un cluster CycleCloud modificando la "run_list" nella sezione di configurazione della definizione del cluster. Esistono tre componenti di base di un cluster HTCondor. Il primo è il "gestore centrale" che fornisce i daemon di pianificazione e gestione. Il secondo componente di un cluster HTCondor è uno o più utilità di pianificazione da cui vengono inviati processi nel sistema. Il componente finale è uno o più nodi di esecuzione che sono gli host eseguono il calcolo. Un modello HTCondor semplice può essere simile al seguente:
[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]
L'importazione e l'avvio di un cluster con definizione in CycleCloud restituirà un nodo "manager" e un nodo "scheduler", oltre a un nodo "execute". È possibile aggiungere nodi di esecuzione al cluster tramite il cyclecloud add_node
comando . Per aggiungere 10 altri nodi di esecuzione:
cyclecloud add_node htcondor -t execute -c 10
Scalabilità automatica DI HTCondor
CycleCloud supporta la scalabilità automatica per HTCondor, il che significa che il software monitorerà lo stato della coda e disattiva i nodi in base alle esigenze per completare il lavoro in un periodo di tempo/costo ottimale. È possibile abilitare la scalabilità automatica per HTCondor aggiungendo Autoscale=true
alla definizione del cluster:
[cluster htcondor]
Autoscale = True
Utilizzo avanzato di HTCondor
Se si conosce il runtime medio dei processi, è possibile definire average_runtime
(in minuti) nel processo. CycleCloud userà tale valore per avviare il numero minimo di nodi, ad esempio cinque processi di 10 minuti inizierà solo un singolo nodo anziché cinque quando average_runtime
è impostato su 10.
Scalabilità automatica nodearray
Per impostazione predefinita, HTCondor richiederà core dal nodearray denominato 'execute'. Se un processo richiede un nodoarray diverso, ad esempio se determinati processi all'interno di un flusso di lavoro hanno un requisito di memoria elevato, è possibile specificare un slot_type
attributo per il processo. Ad esempio, l'aggiunta +slot_type = "highmemory"
[[[configuration]]]
causerà la richiesta di un nodo da "highmemory" nodearray anziché "execute" (si noti che attualmente è necessario htcondor.slot_type = "highmemory"
impostare nella sezione nodearray). Ciò non influisce sul modo in cui HTCondor pianifica i processi, pertanto è possibile includere l'attributo slot_type
requirements
iniziale nelle espressioni o rank
nel processo. Ad esempio: Requirements = target.slot_type = "highmemory"
.
Invio di processi a HTCondor
Il modo più generico per inviare processi a un utilità di pianificazione HTCondor è il comando (eseguito da un nodo 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
Di seguito sono riportate le opzioni di configurazione specifiche di HTCondor che è possibile impostare per personalizzare le funzionalità:
Opzioni di configurazione HTCondor-Specific | Descrizione |
---|---|
htcondor.agent_enabled | Se true, usare il condor_agent per l'invio e il polling dei processi. Valore predefinito: false |
htcondor.agent_version | Versione del condor_agent da usare. Impostazione predefinita: 1.27 |
htcondor.classad_lifetime | Durata predefinita di classads (in secondi). Impostazione predefinita: 700 |
htcondor.condor_owner | L'account Linux proprietario degli script di scalabilità HTCondor. Impostazione predefinita: radice |
htcondor.condor_group | Gruppo Linux proprietario degli script di scalabilità di HTCondor. Impostazione predefinita: radice |
htcondor.data_dir | Directory per i log, le directory di spool, le directory di esecuzione e il file di configurazione locale. Impostazione predefinita: /mnt/condor_data (Linux), C:\All Services\condor_local (Windows) |
htcondor.ignore_hyperthreads | (solo Windows) Impostare il numero di CPU da metà delle CPU rilevate come modo 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]]. Valore predefinito: false |
htcondor.install_dir | Directory in cui è installato HTCondor. Impostazione predefinita: /opt/condor (Linux), C:\condor (Windows) |
htcondor.job_start_count | Il numero di processi che un schedd inizierà per ciclo. 0 corrisponde a senza limiti. Impostazione predefinita: 20 |
htcondor.job_start_delay | Numero di secondi tra ogni intervallo di inizio del processo. 0 è immediato. Predefinito: 1 |
htcondor.max_history_log | Dimensioni massime del file di cronologia dei processi in byte. Impostazione predefinita: 20971520 |
htcondor.max_history_rotations | Numero massimo di file di cronologia dei processi da mantenere. Impostazione predefinita: 20 |
htcondor.negotiator_cycle_delay | Il numero minimo di secondi prima dell'avvio di un nuovo ciclo di negoziatori. Impostazione predefinita: 20 |
htcondor.negotiator_interval | La frequenza (in secondi) dell'condor_negotiator avvia un ciclo di negoziazione. Impostazione predefinita: 60 |
htcondor.negotiator_inform_startd | Se true, il negotiatore informa l'inizio quando corrisponde a un processo. Predefinito: true |
htcondor.remove_stopped_nodes | Se true, i nodi di esecuzione arrestati vengono rimossi dalla visualizzazione CycleServer anziché essere contrassegnati come "down". |
htcondor.running | Se true, l'agente di raccolta HTCondor e i daemon di negotiator vengono eseguiti nel gestore centrale. In caso contrario, viene eseguita solo la condor_master. Predefinito: true |
htcondor.scheduler_dual | Se true, gli utilità di pianificazione eseguono due schedds. Predefinito: true |
htcondor.single_slot | Se true, considera la macchina come singolo slot (indipendentemente dal numero di core che la macchina possiede). Valore predefinito: false |
htcondor.slot_type | Definisce la slot_type di una matrice di nodi per la scalabilità automatica. Impostazione predefinita: esegui |
htcondor.update_interval | Intervallo (in secondi) per l'avvio per pubblicare un aggiornamento all'agente di raccolta. Impostazione predefinita: 240 |
htcondor.use_cache_config | Se true, usare cache_config per avere il pollserver dell'istanza per la configurazione. Valore predefinito: false |
htcondor.version | Versione di HTCondor da installare. Impostazione predefinita: 8.2.6 |
File di configurazione generato automaticamente da HTCondor
HTCondor ha un numero elevato di impostazioni di configurazione, inclusi gli attributi definiti dall'utente. CycleCloud offre la possibilità di creare un file di configurazione personalizzato usando attributi definiti nel cluster:
Attributo | Descrizione |
---|---|
htcondor.custom_config.enabled | Se true, viene generato un file di configurazione usando gli attributi specificati. Valore predefinito: false |
htcondor.custom_config.file_name | Nome del file (inserito in htcondor.data_dir /config) da scrivere. Impostazione predefinita: ZZZ-custom_config.txt |
htcondor.custom_config.settings | Attributi da scrivere nel file di configurazione personalizzato, ad esempio htcondor.custom_config.settings.max_jobs_running = 5000 |
Nota
Attributi di configurazione HTCondor contenenti un oggetto . non può essere specificato usando questo metodo. Se tali attributi sono necessari, devono essere specificati in un cookbook o in un file installato con cluster-init.
CycleCloud supporta un set standard di attributi autostop tra gli utilità di pianificazione:
Attributo | Descrizione |
---|---|
cyclecloud.cluster.autoscale.stop_enabled | Il supporto automatico è abilitato in questo nodo? [true/false] |
cyclecloud.cluster.autoscale.idle_time_after_jobs | Quantità di tempo (in secondi) per un nodo inattivo dopo il completamento dei processi prima che venga ridimensionato. |
cyclecloud.cluster.autoscale.idle_time_before_jobs | Quantità di tempo (in secondi) per un nodo inattivo prima di completare i processi prima che venga ridimensionato. |