OpenPBS
OpenPBS kann auf einfache Weise auf einem CycleCloud-Cluster aktiviert werden, indem sie den "run_list" im Konfigurationsabschnitt Ihrer Clusterdefinition ändern. Die beiden grundlegenden Komponenten eines PBS Professional-Clusters sind der Knoten "Master", der ein freigegebenes Dateisystem bereitstellt, auf dem die PBS Professional-Software ausgeführt wird, und die Knoten "execute", die die Hosts sind, die das freigegebene Dateisystem bereitstellen und die gesendeten Aufträge ausführen. Beispielsweise sieht ein einfacher Clustervorlagenausschnitt wie folgt aus:
[cluster my-pbspro]
[[node master]]
ImageName = cycle.image.centos7
MachineType = Standard_A4 # 8 cores
[[[configuration]]]
run_list = role[pbspro_master_role]
[[nodearray execute]]
ImageName = cycle.image.centos7
MachineType = Standard_A1 # 1 core
[[[configuration]]]
run_list = role[pbspro_execute_role]
Das Importieren und Starten eines Clusters mit Definition in CycleCloud führt zu einem einzelnen "Master"-Knoten. Ausführen von Knoten kann dem Cluster über den cyclecloud add_node
Befehl hinzugefügt werden. So fügen Sie beispielsweise 10 weitere Ausführungsknoten hinzu:
cyclecloud add_node my-pbspro -t execute -c 10
PBS Resource-based Autocaling
Cyclecloud verwaltet zwei Ressourcen, um die dynamische Bereitstellungsfunktion zu erweitern. Diese Ressourcen sind Knotenarray und Computertyp.
Wenn Sie einen Auftrag übermitteln und eine Nodearray-Ressource qsub -l nodearray=highmem -- /bin/hostname
angeben, fügt CycleCloud knoten dem Knotenarray mit dem Namen "highmem" hinzu. Wenn kein solcher Knotenarray vorhanden ist, bleibt der Auftrag leer.
Ebenso, wenn eine Machinetype-Ressource angegeben wird, die eine Auftragsübermittlung, z. B. qsub -l machinetype:Standard_L32s_v2 my-job.sh
, dann CycleCloud automatisch die "Standard_L32s_v2" im Knotenarray "execute" (Standard) abstreckt. Wenn dieser Computertyp im Knotenarray "execute" nicht verfügbar ist, bleibt der Auftrag leer.
Diese Ressourcen können in Kombination verwendet werden:
qsub -l nodes=8:ppn=16:nodearray=hpc:machinetype=Standard_HB60rs my-simulation.sh
dies wird nur automatisch skalieren, wenn die Computer "Standard_HB60rs" ein Knotenarray "hpc" angegeben werden.
Hinzufügen zusätzlicher Warteschlangen, die Knotenarrays zugewiesen sind
Bei Clustern mit mehreren Knotenarrays ist es üblich, separate Warteschlangen zu erstellen, um Aufträge automatisch an den entsprechenden VM-Typ weiterzuleiten. In diesem Beispiel wird davon ausgegangen, dass das folgende "gpu"-Knotenarray in Ihrer Clustervorlage definiert wurde:
[[nodearray gpu]]
Extends = execute
MachineType = Standard_NC24rs
[[[configuration]]]
pbspro.slot_type = gpu
Nachdem Sie die Clustervorlage importiert und den Cluster gestartet haben, können die folgenden Befehle auf dem Serverknoten ausgeführt werden, um die "gpu"-Warteschlange zu erstellen:
/opt/pbs/bin/qmgr -c "create queue gpu"
/opt/pbs/bin/qmgr -c "set queue gpu queue_type = Execution"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.ungrouped = false"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.place = scatter"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.slot_type = gpu"
/opt/pbs/bin/qmgr -c "set queue gpu default_chunk.ungrouped = false"
/opt/pbs/bin/qmgr -c "set queue gpu default_chunk.slot_type = gpu"
/opt/pbs/bin/qmgr -c "set queue gpu enabled = true"
/opt/pbs/bin/qmgr -c "set queue gpu started = true"
Hinweis
Die obige Warteschlangendefinition packt alle virtuellen Computer in der Warteschlange in eine einzelne VM-Skalierung, die zum Unterstützen von MPI-Aufträgen festgelegt ist. Um die Warteschlange für serielle Aufträge zu definieren und mehrere VM Scalesets zuzulassen, legen Sie ungrouped = true
für beide resources_default
und default_chunk
. Sie können auch festlegen resources_default.place = pack
, ob der Zeitplaner Aufträge auf VMs packen soll, anstatt die Round-Robin-Zuordnung von Aufträgen. Weitere Informationen zur PBS-Auftragsverpackung finden Sie in der offiziellen PBS Professional OSS-Dokumentation.
PBS Professional Configuration Reference
Nachfolgend finden Sie die spezifischen Konfigurationsoptionen von PBS Professional, die Sie zum Anpassen von Funktionen umschalten können:
PBS Pro-Optionen | BESCHREIBUNG |
---|---|
pbspro.slots | Die Anzahl der Steckplätze für einen bestimmten Knoten, der an PBS Pro gemeldet werden soll. Die Anzahl der Steckplätze ist die Anzahl gleichzeitiger Aufträge, die ein Knoten ausführen kann. Dieser Wert wird standardmäßig auf die Anzahl der CPUs auf einem bestimmten Computer festgelegt. Sie können diesen Wert in Fällen außer Kraft setzen, in denen Sie keine Aufträge basierend auf CPU, aber auf Arbeitsspeicher, GPUs usw. ausführen. |
pbspro.slot_type | Der Name des Typs "Slot" eines Knotens. Der Standardwert ist "execute". Wenn ein Auftrag mit der harten Ressource slot_type=<type> markiert wird, wird dieser Auftrag nur auf einem Computer desselben Slottyps ausgeführt. Auf diese Weise können Sie unterschiedliche Software- und Hardwarekonfigurationen pro Knoten erstellen und sicherstellen, dass ein geeigneter Auftrag immer für den richtigen Knotentyp geplant ist. |
pbspro.version | Standard: '18.1.3-0'. Dies ist die PBS Professional-Version, die installiert und ausgeführt werden soll. Dies ist derzeit die Standardoption und nur option. In den zukünftigen zusätzlichen Versionen der PBS Professional-Software kann unterstützt werden. |
Verbinden von PBS mit CycleCloud
CycleCloud verwaltet OpenPBS-Cluster über einen installierbaren Agent namens azpbs
. Dieser Agent stellt eine Verbindung mit CycleCloud her, um Cluster- und VM-Konfigurationen zu lesen und auch in OpenPBS zu integrieren, um die Auftrags- und Hostinformationen effektiv zu verarbeiten. Alle azpbs
Konfigurationen werden in der autoscale.json
Datei gefunden, normalerweise /opt/cycle/pbspro/autoscale.json
.
"password": "260D39rWX13X",
"url": "https://cyclecloud1.contoso.com",
"username": "cyclecloud_api_user",
"logging": {
"config_file": "/opt/cycle/pbspro/logging.conf"
},
"cluster_name": "mechanical_grid",
Wichtige Dateien
Der azpbs
Agent analysiert die PBS-Konfiguration jedes Mal, wenn er aufgerufen wird – Aufträge, Warteschlangen, Ressourcen.
Informationen werden in stderr und stdout des Befehls sowie in einer Protokolldatei bereitgestellt, sowohl auf konfigurierbaren Ebenen. Alle PBS-Verwaltungsbefehle (qcmd
) mit Argumenten werden ebenfalls in der Datei protokolliert.
Alle diese Dateien finden Sie im Verzeichnis "/opt/cycle/pbspro/ ", in dem der Agent installiert ist.
Datei | Standort | BESCHREIBUNG |
---|---|---|
Autoscale-Konfiguration | autoscale.json | Konfiguration für Autoscale, Ressourcenzuordnung, CycleCloud-Zugriffsinformationen |
Autoscale-Protokoll | autoscale.log | Agent-Hauptthreadprotokollierung einschließlich CycleCloud-Hostverwaltung |
Anforderungsprotokoll | demand.log | Detailliertes Protokoll für den Ressourcenabgleich |
qcmd Trace Log | qcmd.log | Protokollieren der Agentaufrufe qcmd |
Protokollierungskonfiguration | logging.conf | Konfigurationen für Protokollierungsmasken und Dateispeicherorte |
Definieren von OpenPBS-Ressourcen
Dieses Projekt ermöglicht eine allgemeine Zuordnung von OpenPBS-Ressourcen mit Azure VM-Ressourcen über das Cyclecloud-pbspro (azpbs)-Projekt. Diese ressourcenbeziehung definiert in autoscale.json
.
Die standardmäßigen Ressourcen, die mit der von uns gelieferten Clustervorlage definiert sind, sind
{"default_resources": [
{
"select": {},
"name": "ncpus",
"value": "node.vcpu_count"
},
{
"select": {},
"name": "group_id",
"value": "node.placement_group"
},
{
"select": {},
"name": "host",
"value": "node.hostname"
},
{
"select": {},
"name": "mem",
"value": "node.memory"
},
{
"select": {},
"name": "vm_size",
"value": "node.vm_size"
},
{
"select": {},
"name": "disk",
"value": "size::20g"
}]
}
Die OpenPBS-Ressource mit dem Namen mem
"OpenPBS" wird mit einem Knotenattribut namens node.memory
", das den Gesamtspeicher eines virtuellen Computers darstellt. Mit dieser Konfiguration kann azpbs
eine Ressourcenanforderung verarbeitet werden, z -l mem=4gb
. B. indem der Wert der Auftragsressourcenanforderungen mit Knotenressourcen verglichen wird.
Beachten Sie, dass der Datenträger derzeit hartcodiert size::20g
ist.
Nachfolgend sehen Sie ein Beispiel für die Behandlung der VM-Größe bestimmter Datenträgergröße
{
"select": {"node.vm_size": "Standard_F2"},
"name": "disk",
"value": "size::20g"
},
{
"select": {"node.vm_size": "Standard_H44rs"},
"name": "disk",
"value": "size::2t"
}
Automatische Skalierung und Skalierung
CycleCloud behandelt spannende und serielle Aufträge unterschiedlich in OpenPBS-Clustern.
Der Bereich von Aufträgen wird auf Knoten landen, die Teil derselben Platzierungsgruppe sind. Die Platzierungsgruppe hat eine bestimmte Plattform-Bedeutung (VirtualMachineScaleSet mit SinglePlacementGroup=true), und CC verwaltet eine benannte Platzierungsgruppe für jeden übergreifenden Knotensatz. Verwenden Sie die PBS-Ressource group_id
für diesen Platzierungsgruppennamen.
Die hpc
Warteschlange fügt das Äquivalent -l place=scatter:group=group_id
an, indem systemeigene Warteschlangenstandardwerte verwendet werden.
Installieren des CycleCloud OpenPBS-Agents azpbs
Der OpenPBS CycleCloud-Cluster verwaltet die Installation und Konfiguration des Agents auf dem Serverknoten. Die Vorbereitung umfasst das Festlegen von PBS-Ressourcen, Warteschlangen und Hooks. Eine skriptbasierte Installation kann auch außerhalb von CycleCloud erfolgen.
# Prerequisite: python3, 3.6 or newer, must be installed and in the PATH
wget https://github.com/Azure/cyclecloud-pbspro/releases/download/2.0.5/cyclecloud-pbspro-pkg-2.0.5.tar.gz
tar xzf cyclecloud-pbspro-pkg-2.0.5.tar.gz
cd cyclecloud-pbspro
# Optional, but recommended. Adds relevant resources and enables strict placement
./initialize_pbs.sh
# Optional. Sets up workq as a colocated, MPI focused queue and creates htcq for non-MPI workloads.
./initialize_default_queues.sh
# Creates the azpbs autoscaler
./install.sh --venv /opt/cycle/pbspro/venv
# Otherwise insert your username, password, url, and cluster name here.
./generate_autoscale_json.sh --install-dir /opt/cycle/pbspro \
--username user \
--password password \
--url https://fqdn:port \
--cluster-name cluster_name
azpbs validate
CycleCloud unterstützt einen Standardsatz von Autotopattributen in allen Zeitplanern:
attribute | BESCHREIBUNG |
---|---|
cyclecloud.cluster.autoscale.stop_enabled | Ist autotop auf diesem Knoten aktiviert? [true/false] |
cyclecloud.cluster.autoscale.idle_time_after_jobs | Die Zeit (in Sekunden) für einen Knoten, der nach Abschluss von Aufträgen im Leerlauf sitzen soll, bevor er nach unten skaliert wird. |
cyclecloud.cluster.autoscale.idle_time_before_jobs | Die Zeit (in Sekunden) für einen Knoten, der sich im Leerlauf befinden soll, bevor aufträge abgeschlossen werden, bevor er verkleinert wird. |
Hinweis
CycleCloud unterstützt die platzende Konfiguration mit Open PBS nicht.
Hinweis
Obwohl Windows eine offiziell unterstützte Open PBS-Plattform ist, unterstützt CycleCloud derzeit keine Open PBS unter Windows.