Freigeben über


HTCondor

Sie können HTCondor auf einem CycleCloud-Cluster aktivieren, indem Sie die run_list im Konfigurationsabschnitt Ihrer Clusterdefinition ändern. Es gibt drei grundlegende Komponenten eines HTCondor-Clusters. Der erste ist der zentrale Manager, der die Planungs- und Verwaltungs-Daemons bereitstellt. Die zweite Komponente besteht aus einem oder mehreren Schedulern, von denen aus Jobs an das System übergeben werden. Die letzte Komponente besteht aus einem oder mehreren Ausführungsknoten, bei denen es sich um die Hosts handelt, die die Berechnung durchführen. Eine einfache HTCondor-Vorlage könnte wie folgt aussehen:

[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]

Wenn Sie einen Cluster mit dieser Definition in CycleCloud importieren und starten, erhalten Sie einen Manager und einen Scheduler-Knoten sowie einen Ausführungsknoten . Sie können dem Cluster Ausführungsknoten hinzufügen, indem Sie den cyclecloud add_node Befehl verwenden. Um 10 weitere Ausführungsknoten hinzuzufügen, verwenden Sie den folgenden Befehl:

cyclecloud add_node htcondor -t execute -c 10

HTCondor Automatische Skalierung

CycleCloud unterstützt die automatische Skalierung für HTCondor. Die Software überwacht den Status Ihrer Warteschlange und schaltet Knoten nach Bedarf ein und aus, um die Arbeit in optimalem Zeit- und Kostenaufwand abzuschließen. Um die automatische Skalierung für HTCondor zu aktivieren, fügen Sie Ihrer Clusterdefinition Folgendes hinzu Autoscale=true :

[cluster htcondor]
Autoscale = True

HTCondor Erweiterte Nutzung

Wenn Sie die durchschnittliche Laufzeit von Aufträgen kennen, definieren average_runtime Sie sie (in Minuten) in Ihrem Auftrag. CycleCloud verwendet diesen Wert, um die minimale Anzahl von Knoten zu starten. Wenn beispielsweise fünf 10-Minuten-Aufträge übermittelt werden und average_runtime auf 10 festgelegt ist, startet CycleCloud nur einen Knoten anstelle von fünf.

Nodearray automatisch skalieren

Standardmäßig fordert HTCondor Kerne vom nodearray mit dem Namen execute. Wenn für einen Auftrag ein anderes nodearray erforderlich ist (z. B. wenn bestimmte Aufträge innerhalb eines Workflows einen hohen Speicherbedarf aufweisen), geben Sie ein slot_type Attribut für den Auftrag an. Zum Beispiel bewirkt das Hinzufügen +slot_type = "highmemory" , dass HTCondor einen Knoten vom highmemory nodearray execute anfordert (diese Einstellung muss htcondor.slot_type = "highmemory" derzeit im Abschnitt des nodearrays [[[configuration]]] festgelegt werden). Diese Einstellung wirkt sich nicht darauf aus, wie HTCondor die Aufträge plant, daher sollten Sie das slot_type startd-Attribut in die Ausdrücke des requirements Auftrags einschließen rank . Beispiel: Requirements = target.slot_type = "highmemory".

Übermitteln von Aufträgen an HTCondor

Die allgemeinste Methode, Aufträge an einen HTCondor-Scheduler zu senden, ist der Befehl (ausgeführt von einem Scheduler-Knoten):

condor_submit my_job.submit

Eine Beispiel-Übermittlungsdatei könnte wie folgt aussehen:

      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

HTCondor Konfigurationsreferenz

Die folgenden HTCondor-spezifischen Konfigurationsoptionen passen die Funktionalität an:

HTCondor-Specific Konfigurationsoptionen BESCHREIBUNG
htcondor.agent_enabled Wenn true, verwenden Sie die condor_agent für die Auftragsübermittlung und den Abruf. Standardwert: FALSCH
htcondor.agent_version Die Version der zu verwendenden condor_agent. Voreinstellung: 1.27
htcondor.classad_lifetime Die standardmäßige Lebensdauer von Kleinanzeigen (in Sekunden). Standardwert: 700
htcondor.condor_owner Das Linux-Konto, das die HTCondor-Skripts zum Skalieren besitzt. Voreinstellung: root
htcondor.condor_group Die Linux-Gruppe, die die HTCondor-Skripts für die Skalierung besitzt. Voreinstellung: root
htcondor.data_dir Das Verzeichnis für Protokolle, Aufbereitungsverzeichnisse, Ausführungsverzeichnisse und die lokale Konfigurationsdatei. Standard: /mnt/condor_data (Linux), C:\Alle Dienste\condor_local (Windows)
htcondor.ignore_hyperthreads (Nur Windows) Legen Sie die Anzahl der CPUs auf die Hälfte der erkannten CPUs fest, um das Hyperthreading zu "deaktivieren". Wenn Sie die automatische Skalierung verwenden, geben Sie die Anzahl der Nicht-Hyperthread-Kerne mit der Cores Konfigurationseinstellung im Abschnitt [[node]] oder [[nodearray]] an. Standardwert: FALSCH
htcondor.install_dir Das Verzeichnis, in dem HTCondor installiert wird. Standardwert: /opt/condor (Linux), C:\condor (Windows)
htcondor.job_start_count Die Anzahl der Jobs, die ein Zeitplan pro Zyklus startet. 0 ist unbegrenzt. Standard: 20
htcondor.job_start_delay Die Anzahl der Sekunden zwischen den einzelnen Auftragsstartintervallen. 0 ist unmittelbar. Standardwert: 1
htcondor.max_verlauf_protokoll Die maximale Größe der Auftragsverlaufsdatei in Bytes. Standardeinstellung: 20971520
htcondor.max_Geschichte_Rotationen Die maximale Anzahl von Auftragsverlaufsdateien, die aufbewahrt werden sollen. Standard: 20
htcondor.negotiator_cycle_delay Die Mindestanzahl von Sekunden, bevor ein neuer Verhandlungszyklus gestartet werden kann. Standard: 20
htcondor.negotiator_interval Wie oft (in Sekunden) das condor_negotiator einen Verhandlungszyklus startet. Standardwert: 60
htcondor.negotiator_inform_startd Wenn true, informiert der Verhandlungsführer den startd, wenn er mit einem Job übereinstimmt. Voreinstellung: true
htcondor.remove_stopped_nodes Wenn true, werden gestoppte Ausführungsknoten aus der CycleServer-Ansicht entfernt, anstatt als "down" markiert zu werden.
htcondor.running Wenn true, werden HTCondor Collector- und Negotiator-Daemons auf dem zentralen Manager ausgeführt. Andernfalls wird nur der condor_master ausgeführt. Voreinstellung: true
htcondor.scheduler_dual Wenn true, führen die Planer zwei schedds aus. Voreinstellung: true
htcondor.single_slot Wenn true, wird der Computer als einzelner Steckplatz behandelt (unabhängig von der Anzahl der Kerne, die der Computer besitzt). Standardwert: FALSCH
htcondor.slot_type Definiert die slot_type eines Knotenarrays für die automatische Skalierung. Standardeinstellung: ausführen
htcondor.update_interval Das Intervall (in Sekunden), das startd benötigt, um eine Aktualisierung für den Collector zu veröffentlichen. Voreinstellung: 240
htcondor.use_cache_config Wenn true, verwenden Sie cache_config, damit die Instanz CycleServer für die Konfiguration abfragt. Standardwert: FALSCH
htcondor.version Die Version von HTCondor, die installiert werden soll. Voreinstellung: 8.2.6

HTCondor Automatisch generierte Konfigurationsdatei

HTCondor verfügt über eine große Anzahl von Konfigurationseinstellungen, einschließlich benutzerdefinierter Attribute. CycleCloud bietet die Möglichkeit, eine benutzerdefinierte Konfigurationsdatei mit Attributen zu erstellen, die im Cluster definiert sind:

Merkmal BESCHREIBUNG
htcondor.custom_config.aktiviert Wenn true, wird eine Konfigurationsdatei mit den angegebenen Attributen generiert. Standardwert: FALSCH
htcondor.custom_config.Dateiname Der Name der Datei (in htcondor.data_dir/config abgelegt), die geschrieben werden soll. Voreinstellung: ZZZ-custom_config.txt
htcondor.custom_config.Einstellungen Die Attribute, die in die benutzerdefinierte Konfigurationsdatei geschrieben werden sollen, z. B. htcondor.custom_config.settings.max_jobs_running = 5000

Hinweis

Mit dieser Methode können Sie keine HTCondor-Konfigurationsattribute angeben, die a . enthalten. Wenn Sie solche Attribute benötigen, geben Sie sie in einem Rezeptbuch oder einer Datei an, die mit installiert wird cluster-init.

CycleCloud unterstützt einen Standardsatz von Autostop-Attributen für verschiedene Scheduler:

Merkmal BESCHREIBUNG
cyclecloud.cluster.autoscale.stop_enabled Ist "Autostop" auf diesem Knoten aktiviert? [wahr/falsch]
cyclecloud.cluster.autoscale.Leerlaufzeit_nach_Aufträgen Die Zeit (in Sekunden), die ein Knoten nach Abschluss von Aufträgen im Leerlauf bleibt, bevor er herunterskaliert wird.
cyclecloud.cluster.autoscale.Wartezeit_vor_Arbeiten Die Zeitspanne (in Sekunden), die ein Knoten im Leerlauf verbleiben soll, nachdem er Aufträge abgeschlossen hat und bevor er verkleinert wird.