OpenPBS
OpenPBS kan enkelt aktiveras i ett CycleCloud-kluster genom att ändra "run_list" i konfigurationsavsnittet i klusterdefinitionen. De två grundläggande komponenterna i ett PBS Professional-kluster är "huvudnoden" som tillhandahåller ett delat filsystem där PBS Professional-programvaran körs och de "kör"-noder som är värdar som monterar det delade filsystemet och kör de jobb som skickas. Ett enkelt kodfragment för klustermallar kan till exempel se ut så här:
[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]
Om du importerar och startar ett kluster med definition i CycleCloud får du en enda huvudnod. Kör noder kan läggas till i klustret via cyclecloud add_node
kommandot . Om du till exempel vill lägga till ytterligare 10 kör noder:
cyclecloud add_node my-pbspro -t execute -c 10
PBS-resursbaserad autoskalning
Cyclecloud har två resurser för att utöka funktionen för dynamisk etablering. Dessa resurser är nodearray och machinetype.
Om du skickar ett jobb och anger en nodearray-resurs innan qsub -l nodearray=highmem -- /bin/hostname
dess lägger CycleCloud till noder i nodmatrisen med namnet "highmem". Om det inte finns någon sådan nodmatris förblir jobbet inaktivt.
På samma sätt om en maskintypsresurs anges som ett jobb skickas, t.ex. qsub -l machinetype:Standard_L32s_v2 my-job.sh
, skalar CycleCloud automatiskt "Standard_L32s_v2" i nodmatrisen "execute" (standard). Om den datortypen inte är tillgänglig i nodmatrisen "kör" förblir jobbet inaktivt.
Dessa resurser kan användas i kombination som:
qsub -l nodes=8:ppn=16:nodearray=hpc:machinetype=Standard_HB60rs my-simulation.sh
som endast skalar automatiskt om "Standard_HB60rs"-datorerna anges som en "hpc"-nodmatris.
Lägga till ytterligare köer som tilldelats nodearrays
I kluster med flera nodmatriser är det vanligt att skapa separata köer för att automatiskt dirigera jobb till lämplig typ av virtuell dator. I det här exemplet antar vi att följande "gpu"-nodearray har definierats i klustermallen:
[[nodearray gpu]]
Extends = execute
MachineType = Standard_NC24rs
[[[configuration]]]
pbspro.slot_type = gpu
När du har importerat klustermallen och startat klustret kan du köra följande kommandon på servernoden för att skapa "gpu"-kön:
/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"
Anteckning
Ovanstående ködefinition packar alla virtuella datorer i kön till en enda VM-skalningsuppsättning för att stödja MPI-jobb. Om du vill definiera kön för seriejobb och tillåta flera VM Scalesets anger du ungrouped = true
för både resources_default
och default_chunk
. Du kan också ange resources_default.place = pack
om du vill att schemaläggaren ska packa jobb på virtuella datorer i stället för resursallokering av jobb. Mer information om PBS-jobbpackning finns i den officiella PBS Professional OSS-dokumentationen.
Referens för PBS Professional-konfiguration
Följande är de PBS Professional-specifika konfigurationsalternativ som du kan växla för att anpassa funktioner:
PBS Pro-alternativ | Description |
---|---|
pbspro.slots | Antalet platser för en viss nod som ska rapporteras till PBS Pro. Antalet platser är antalet samtidiga jobb som en nod kan köra, vilket är standardvärdet för antalet processorer på en viss dator. Du kan åsidosätta det här värdet i fall där du inte kör jobb baserat på CPU utan på minne, GPU:er osv. |
pbspro.slot_type | Namnet på typen av "fack" som en nod tillhandahåller. Standardvärdet är "execute". När ett jobb är taggat med den hårda resursen slot_type=<type> körs jobbet bara på en dator av samma facktyp. På så sätt kan du skapa olika programvaru- och maskinvarukonfigurationer per nod och se till att ett lämpligt jobb alltid schemaläggs på rätt typ av nod. |
pbspro.version | Standard: "18.1.3-0". Det här är PBS Professional-versionen för att installera och köra. Detta är för närvarande standardalternativet och det enda alternativet. I framtiden kan ytterligare versioner av PBS Professional-programvaran stödjas. |
Ansluta PBS med CycleCloud
CycleCloud hanterar OpenPBS-kluster via en installerbar agent som heter azpbs
. Den här agenten ansluter till CycleCloud för att läsa kluster- och VM-konfigurationer och integreras även med OpenPBS för att effektivt bearbeta jobbet och värdinformationen. Alla azpbs
konfigurationer finns i autoscale.json
filen, vanligtvis /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",
Viktiga filer
Agenten azpbs
parsar PBS-konfigurationen varje gång den anropas – jobb, köer, resurser.
Information finns i stderr och stdout för kommandot samt till en loggfil, både på konfigurerbara nivåer. Alla PBS-hanteringskommandon (qcmd
) med argument loggas också till filen.
Alla dessa filer finns i katalogen /opt/cycle/pbspro/ där agenten är installerad.
Fil | Location | Description |
---|---|---|
Autoskalningskonfiguration | autoscale.json | Konfiguration för autoskalning, resurskarta, CycleCloud-åtkomstinformation |
Autoskalningslogg | autoscale.log | Agentens huvudtrådsloggning inklusive CycleCloud-värdhantering |
Begärandelogg | demand.log | Detaljerad logg för resursmatchning |
qcmd-spårningslogg | qcmd.log | Logga agentanropen qcmd |
Loggningskonfiguration | logging.conf | Konfigurationer för loggningsmasker och filplatser |
Definiera OpenPBS-resurser
Det här projektet möjliggör en allmän association av OpenPBS-resurser med Azure VM-resurser via projektet cyclecloud-pbspro (azpbs). Den här resursrelationen definieras i autoscale.json
.
Standardresurserna som definieras med klustermallen som vi skickar med är
{"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"
}]
}
OpenPBS-resursen med namnet mem
motsvarar ett nodattribut med namnet node.memory
, vilket är det totala minnet för alla virtuella datorer. Med den här konfigurationen kan azpbs
du bearbeta en resursbegäran, till exempel -l mem=4gb
genom att jämföra värdet för jobbresurskraven med nodresurserna.
Observera att disken för närvarande är hårdkodad till size::20g
.
Här är ett exempel på hantering av vm-storleksspecifik diskstorlek
{
"select": {"node.vm_size": "Standard_F2"},
"name": "disk",
"value": "size::20g"
},
{
"select": {"node.vm_size": "Standard_H44rs"},
"name": "disk",
"value": "size::2t"
}
Autoskalning och skalningsuppsättningar
CycleCloud behandlar utsträcknings- och seriejobb på olika sätt i OpenPBS-kluster.
Utsträckningsjobb hamnar på noder som ingår i samma placeringsgrupp. Placeringsgruppen har en viss plattform som betyder (VirtualMachineScaleSet med SinglePlacementGroup=true) och CC kommer att hantera en namngiven placeringsgrupp för varje spanned node set. Använd PBS-resursen group_id
för det här placeringsgruppnamnet.
Kön hpc
lägger till motsvarigheten -l place=scatter:group=group_id
till med hjälp av interna köstandardvärden.
Installera CycleCloud OpenPBS-agenten azpbs
OpenPBS CycleCloud-klustret hanterar installationen och konfigurationen av agenten på servernoden. Förberedelsen omfattar inställning av PBS-resurser, köer och hookar. En skriptinstallation kan även göras utanför 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 stöder en standarduppsättning autostop-attribut 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. |
Anteckning
CycleCloud stöder inte burst-konfigurationen med Open PBS.
Anteckning
Även om Windows är en Open PBS-plattform som stöds officiellt har CycleCloud inte stöd för att köra Open PBS på Windows just nu.