Share via


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.