HTCondor
HTCondor kan enkelt aktiveras i ett CycleCloud-kluster genom att ändra "run_list" i konfigurationsavsnittet i klusterdefinitionen. Det finns tre grundläggande komponenter i ett HTCondor-kluster. Den första är den "centrala chefen" som tillhandahåller daemonerna för schemaläggning och hantering. Den andra komponenten i ett HTCondor-kluster är en eller flera schemaläggare från vilka jobb skickas till systemet. Den sista komponenten är en eller flera kör noder som är värdar som utför beräkningen. En enkel HTCondor-mall kan se ut så här:
[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]
Om du importerar och startar ett kluster med definition i CycleCloud får du en "manager" och en "scheduler"-nod, samt en "kör"-nod. Kör noder kan läggas till i klustret via cyclecloud add_node
kommandot . Så här lägger du till ytterligare 10 kör noder:
cyclecloud add_node htcondor -t execute -c 10
Autoskalning av HTCondor
CycleCloud stöder autoskalning för HTCondor, vilket innebär att programvaran övervakar statusen för din kö och aktiverar och inaktiverar noder efter behov för att slutföra arbetet på en optimal tid/kostnad. Du kan aktivera automatisk skalning för HTCondor genom att lägga Autoscale=true
till i klusterdefinitionen:
[cluster htcondor]
Autoscale = True
Avancerad HTCondor-användning
Om du känner till den genomsnittliga körningen av jobb kan du definiera average_runtime
(i minuter) i jobbet. CycleCloud använder det för att starta det minsta antalet noder (till exempel startar fem 10-minutersjobb bara en enskild nod i stället för fem när average_runtime
är inställt på 10).
Autoskalning av Nodearray
Som standard begär HTCondor kärnor från nodearray med namnet "execute". Om ett jobb kräver en annan nodearray (till exempel om vissa jobb i ett arbetsflöde har ett högt minneskrav) kan du ange ett slot_type
attribut för jobbet. Om du till exempel lägger till +slot_type = "highmemory"
kommer HTCondor att begära en nod från noden "highmemory" i stället för "execute" (observera att detta för närvarande måste htcondor.slot_type = "highmemory"
anges i avsnittet nodearray [[[configuration]]]
). Detta påverkar inte hur HTCondor schemalägger jobben, så du kanske vill inkludera attributet slot_type
startd i jobbets requirements
eller rank
uttrycken. Exempel: Requirements = target.slot_type = "highmemory"
.
Skicka jobb till HTCondor
Det mest allmänna sättet att skicka jobb till en HTCondor-schemaläggare är kommandot (kör från en scheduler-nod):
condor_submit my_job.submit
En exempelfil för att skicka kan se ut så här:
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
Konfigurationsreferens för HTCondor
Följande är de HTCondor-specifika konfigurationsalternativ som du kan ange för att anpassa funktioner:
HTCondor-Specific konfigurationsalternativ | Description |
---|---|
htcondor.agent_enabled | Om det är sant använder du condor_agent för jobböverföring och avsökning. Standard: false |
htcondor.agent_version | Den version av condor_agent att använda. Standard: 1.27 |
htcondor.classad_lifetime | Standardlivslängden för classads (i sekunder). Standard: 700 |
htcondor.condor_owner | Linux-kontot som äger HTCondor scaledown-skripten. Standard: rot |
htcondor.condor_group | Den Linux-grupp som äger HTCondor scaledown-skripten. Standard: rot |
htcondor.data_dir | Katalogen för loggar, poolkataloger, kör kataloger och lokal konfigurationsfil. Standard: /mnt/condor_data (Linux), C:\All Services\condor_local (Windows) |
htcondor.ignore_hyperthreads | (Endast Windows) Ange att antalet processorer ska vara hälften av de identifierade processorerna som ett sätt att "inaktivera" hypertrådning. Om du använder autoskalning anger du antalet kärnor som inte är hypertrådade med konfigurationsinställningen Cores i avsnittet [[node]] eller [[nodearray]] . Standard: false |
htcondor.install_dir | Katalogen som HTCondor är installerad i. Standard: /opt/condor (Linux), C:\condor (Windows) |
htcondor.job_start_count | Antalet jobb som en schedd startar per cykel. 0 är obegränsad. Standard: 20 |
htcondor.job_start_delay | Antalet sekunder mellan varje jobbstartintervall. 0 är omedelbar. Standard: 1 |
htcondor.max_history_log | Den maximala storleken på jobbhistorikfilen i byte. Standard: 20971520 |
htcondor.max_history_rotations | Det maximala antalet jobbhistorikfiler som ska behållas. Standard: 20 |
htcondor.negotiator_cycle_delay | Det minsta antalet sekunder innan en ny förhandlare kan starta. Standard: 20 |
htcondor.negotiator_interval | Hur ofta (i sekunder) condor_negotiator startar en förhandlingscykel. Standard: 60 |
htcondor.negotiator_inform_startd | Om det är sant informerar förhandlaren den som startas när den matchas med ett jobb. Standard: true |
htcondor.remove_stopped_nodes | Om det är sant tas stoppade körningsnoder bort från CycleServer-vyn i stället för att markeras som "ned". |
htcondor.running | Om det är sant körs HTCondor-insamlaren och förhandlarens daemoner på den centrala chefen. Annars körs bara condor_master. Standard: true |
htcondor.scheduler_dual | Om det är sant kör schemaläggare två schedds. Standard: true |
htcondor.single_slot | Om det är sant behandlar datorn som en enda plats (oavsett antalet kärnor som datorn har). Standard: false |
htcondor.slot_type | Definierar slot_type för en nodmatris för automatisk skalning. Standard: kör |
htcondor.update_interval | Intervallet (i sekunder) för startd att publicera en uppdatering till insamlaren. Standard: 240 |
htcondor.use_cache_config | Om det är sant använder du cache_config för att låta instansen avsöka CycleServer för konfiguration. Standard: false |
htcondor.version | Den version av HTCondor som ska installeras. Standard: 8.2.6 |
HTCondor Automatiskt genererad konfigurationsfil
HTCondor har ett stort antal konfigurationsinställningar, inklusive användardefinierade attribut. CycleCloud erbjuder möjligheten att skapa en anpassad konfigurationsfil med attribut som definierats i klustret:
Attribut | Beskrivning |
---|---|
htcondor.custom_config.enabled | Om det är sant genereras en konfigurationsfil med de angivna attributen. Standard: false |
htcondor.custom_config.file_name | Namnet på filen (placeras i htcondor.data_dir /config) för att skriva. Standard: ZZZ-custom_config.txt |
htcondor.custom_config.settings | Attributen som ska skrivas till den anpassade konfigurationsfilen, till exempel htcondor.custom_config.settings.max_jobs_running = 5000 |
Anteckning
HTCondor-konfigurationsattribut som innehåller en . kan inte anges med den här metoden. Om sådana attribut behövs bör de anges i en kokbok eller en fil som är installerad med cluster-init.
CycleCloud stöder en standarduppsättning autostopattribut mellan schemaläggare:
Attribut | Beskrivning |
---|---|
cyclecloud.cluster.autoscale.stop_enabled | Är autostop aktiverat på den här noden? [sant/falskt] |
cyclecloud.cluster.autoscale.idle_time_after_jobs | Hur lång tid (i sekunder) en nod ska vara inaktiv när jobben har slutförts innan den skalas ned. |
cyclecloud.cluster.autoscale.idle_time_before_jobs | Hur lång tid (i sekunder) en nod ska vara inaktiv innan jobben slutförs innan den skalas ned. |