Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Het OpenPBS-clustertype in Azure CycleCloud biedt een robuuste en schaalbare oplossing voor het beheren van HPC-workloads (High Performance Computing) met behulp van PBS Professional. Met deze integratie kunnen gebruikers OP PBS gebaseerde clusters implementeren en beheren in de cloud met gestroomlijnde configuratie en automatisering. Raadpleeg het README-bestand CycleCloud Open PBS en PBS Professional Cluster Project voor gedetailleerde installatie-instructies, ondersteunde functies en gebruiksrichtlijnen
U kunt OpenPBS inschakelen op een CycleCloud-cluster door de run_list sectie configuratie van uw clusterdefinitie te wijzigen. Een PBS Professional-cluster (PBS Pro) heeft twee hoofdonderdelen: het primaire knooppunt, waarmee de software wordt uitgevoerd op een gedeeld bestandssysteem en de uitvoeringsknooppunten , die dat bestandssysteem koppelen en de ingediende taken uitvoeren. Een eenvoudig clustersjabloonfragment kan er bijvoorbeeld als volgt uitzien:
[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]
Wanneer u een cluster importeert en start met deze definitie in CycleCloud, krijgt u één primair knooppunt. U kunt uitvoerknooppunten toevoegen aan het cluster met behulp van de cyclecloud add_node opdracht. Als u bijvoorbeeld tien meer uitvoerknooppunten wilt toevoegen, gebruikt u:
cyclecloud add_node my-pbspro -t execute -c 10
Automatische schaalaanpassing op basis van PBS-resources
CycleCloud onderhoudt twee middelen om de dynamische voorzieningsmogelijkheden uit te breiden. Deze resources zijn nodearray en machinetype.
Wanneer u een taak verzendt en een knooppuntmatrixresource met qsub -l nodearray=highmem -- /bin/hostnameopgeeft, voegt CycleCloud knooppunten toe aan de knooppuntmatrix met de naam highmem. Als de knooppuntmatrix niet bestaat, blijft de taak inactief.
Wanneer u een machinetyperesource opgeeft in een taakinzending, zoals qsub -l machinetype:Standard_L32s_v2 my-job.shCycleCloud, worden de Standard_L32s_v2 machines in de execute (standaard) knooppuntmatrix automatisch geschaald. Als het machinetype niet beschikbaar is in de execute knooppuntmatrix, blijft de taak inactief.
U kunt deze resources samen gebruiken als:
qsub -l nodes=8:ppn=16:nodearray=hpc:machinetype=Standard_HB60rs my-simulation.sh
Automatisch schalen alleen als u de Standard_HB60rs machines in de hpc knooppuntmatrix opgeeft.
Extra wachtrijen toevoegen die zijn toegewezen aan knooppuntmatrices
Maak op clusters met meerdere knooppuntmatrices afzonderlijke wachtrijen om taken automatisch naar het juiste VM-type te routeren. In dit voorbeeld wordt ervan uitgegaan dat de volgende gpu knooppuntmatrix is gedefinieerd in uw clustersjabloon:
[[nodearray gpu]]
Extends = execute
MachineType = Standard_NC24rs
[[[configuration]]]
pbspro.slot_type = gpu
Nadat u de clustersjabloon hebt geïmporteerd en het cluster hebt gestart, voert u de volgende opdrachten uit op het serverknooppunt om de gpu wachtrij te maken:
/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"
Opmerking
Zoals in het voorbeeld wordt weergegeven, worden met de wachtrijdefinitie alle VM's in de wachtrij in één virtuele-machineschaalset verpakt ter ondersteuning van MPI-taken. Als u de wachtrij voor seriële taken wilt definiëren en meerdere virtuele-machineschaalsets wilt toestaan, stelt u ungrouped = true in voor zowel resources_default als default_chunk. Stel resources_default.place = pack in als u wilt dat de scheduler taken inpakt op VM's in plaats van round robin-toewijzing van taken. Zie de officiële PBS Professional OSS-documentatie voor meer informatie over PBS-jobverpakkingen.
Referentie voor PBS Professional-configuratie
In de volgende tabel worden de specifieke configuratieopties voor PBS Professional (PBS Pro) beschreven die u kunt in-/uitschakelen om de functionaliteit aan te passen:
| PBS Pro-opties | Beschrijving |
|---|---|
| pbspro.slots | Het aantal slots voor een bepaald knooppunt dat moet rapporteren naar PBS Pro. Het aantal slots is het aantal gelijktijdige taken dat een knooppunt kan uitvoeren. Deze waarde wordt standaard ingesteld op het aantal CPU's op een bepaalde computer. U kunt deze waarde overschrijven in gevallen waarin u geen taken uitvoert op basis van CPU, maar op geheugen, GPU's en andere resources. |
| pbspro.slot_type | De naam van het type 'slot' dat een knooppunt biedt. De standaardwaarde is 'execute'. Wanneer u een taak tagt met de vaste resource slot_type=<type>, wordt de taak alleen uitgevoerd op de computers met hetzelfde slot-type. Met deze instelling kunt u voor elk knooppunt verschillende software- en hardwareconfiguraties maken en ervoor zorgen dat de juiste taak altijd wordt gepland op het juiste type knooppunt. |
| pbspro.version | Standaard: '18.1.3-0'. Deze versie is momenteel de standaard en enige optie om te installeren en uit te voeren. In de toekomst worden mogelijk meer versies van de PBS Pro-software ondersteund. |
PBS verbinden met CycleCloud
CycleCloud beheert OpenPBS-clusters via een installeerbare agent met de naam azpbs. Deze agent maakt verbinding met CycleCloud om cluster- en VM-configuraties te lezen. Het kan ook worden geïntegreerd met OpenPBS om de taak en hostgegevens te verwerken. U vindt alle azpbs configuraties in het autoscale.json bestand, meestal in /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",
Belangrijke bestanden
De azpbs agent analyseert de PBS-configuratie telkens wanneer deze wordt aangeroepen: taken, wachtrijen, middelen. De agent verstrekt deze informatie via de stderr en stdout van de opdracht, evenals in een logbestand, op beide instelbare niveaus. De agent registreert ook alle PBS-beheeropdrachten (qcmd) met argumenten naar een bestand.
U vindt al deze bestanden in de map /opt/cycle/pbspro/ waar u de agent installeert.
| Bestand | Locatie | Beschrijving |
|---|---|---|
| Configuratie voor automatisch schalen | autoscale.json | Configuratie voor Autoscale, resources map, CycleCloud-toegangsgegevens |
| Log automatisch schalen | autoscale.log | Hoofdthreadlogboek van de agent, inclusief beheer van CycleCloud-hosts |
| Aanvraaglogboek | demand.log | Gedetailleerd logboek voor middelenkoppeling |
| qcmd Trace-logboek | qcmd.log | De aanroepen van de agent registreren qcmd |
| Configuratie van logboekregistratie | logging.conf | Configuraties voor logmaskers en bestandslocaties |
Het definiëren van OpenPBS-resources
Met dit project kunt u OpenPBS-resources koppelen aan Azure VM-resources via het cyclecloud-pbspro-project (azpbs). U definieert deze resourcerelatie in autoscale.json.
De clustersjabloon bevat de volgende standaardbronnen:
{"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"
}]
}
De OpenPBS-resource met de naam mem komt overeen met een knooppuntkenmerk met de naam node.memory, dat het totale geheugen van elke virtuele machine vertegenwoordigt. Met deze configuratie kan azpbs een resourceaanvraag zoals -l mem=4gb verwerken door de waarde van de vereisten voor taakbronnen te vergelijken met knooppuntbronnen.
Op dit moment is de schijfgrootte ingesteld op size::20g. Hier volgt een voorbeeld van het afhandelen van de vm-grootte van een specifieke schijfgrootte:
{
"select": {"node.vm_size": "Standard_F2"},
"name": "disk",
"value": "size::20g"
},
{
"select": {"node.vm_size": "Standard_H44rs"},
"name": "disk",
"value": "size::2t"
}
Automatisch schalen en schaalsets
CycleCloud behandelt spannings- en seriële taken anders in OpenPBS-clusters. Taken die zich uitstrekken landen op nodes die behoren tot dezelfde plaatsingsgroep. De plaatsingsgroep heeft een specifiek platform waarbij VirtualMachineScaleSet en SinglePlacementGroup=true) wordt gebruikt, en CycleCloud beheert een benoemde plaatsingsgroep voor elke uitgebreide knooppuntset. Gebruik de PBS-resource group_id voor de naam van deze plaatsingsgroep.
De hpc wachtrij voegt het equivalent van -l place=scatter:group=group_id toe door gebruik te maken van systeemeigen wachtrijstandaarden.
De CycleCloud OpenPBS-agent installeren azpbs
Het OpenPBS CycleCloud-cluster beheert de installatie en configuratie van de agent op het serverknooppunt. De voorbereidingsstappen omvatten het instellen van PBS-resources, wachtrijen en hooks. U kunt ook een scriptinstallatie uitvoeren buiten CycleCloud.
# 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 ondersteunt een standaardset autostopkenmerken voor schedulers:
| Kenmerk | Beschrijving |
|---|---|
| cyclecloud.cluster.autoscale.stop_enabled - "stop_enabled" verwijst naar een functie waarmee het stoppen van autoscaling is ingeschakeld. | Hiermee schakelt u autostop in op dit knooppunt. [waar/onwaar] |
| cyclecloud.cluster.autoscale.wachttijd_na_taken | De hoeveelheid tijd (in seconden) voor een knooppunt dat inactief is na het voltooien van taken voordat het automatisch stopt. |
| cyclecloud.cluster.autoscale.idle_tijd_voor_taken | De hoeveelheid tijd (in seconden) dat een knooppunt inactief blijft, voordat het taken voltooit en automatisch stopt. |
Opmerking
CycleCloud biedt geen ondersteuning voor de bursting-configuratie met Open PBS.
Opmerking
Hoewel Windows een officieel ondersteund Open PBS-platform is, biedt CycleCloud momenteel geen ondersteuning voor het uitvoeren van Open PBS in Windows.