Sdílet prostřednictvím


OpenPBS

OpenPBS je možné v clusteru CycleCloud snadno povolit úpravou run_list v části konfigurace definice clusteru. Dvě základní komponenty clusteru PBS Professional jsou hlavním uzlem, který poskytuje sdílený systém souborů, na kterém běží software PBS Professional, a uzly "execute", které jsou hostiteli, kteří připojují sdílený systém souborů a spouští odeslané úlohy. Například jednoduchý fragment šablony clusteru může vypadat takto:

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

Import a spuštění clusteru s definicí v CycleCloudu zajistí jeden hlavní uzel. Spuštění uzlů je možné přidat do clusteru cyclecloud add_node pomocí příkazu. Pokud chcete například přidat 10 dalších spuštěných uzlů:

cyclecloud add_node my-pbspro -t execute -c 10

Automatické škálování založené na prostředcích PBS

Cyclecloud udržuje dva prostředky, které rozšiřují možnosti dynamického zřizování. Tyto prostředky jsou nodearray a machinetype.

Pokud odešlete úlohu a zadáte prostředek nodearray, qsub -l nodearray=highmem -- /bin/hostname pak CycleCloud přidá uzly do uzlu s názvem highmem. Pokud takový uzel neexistuje, zůstane úloha nečinná.

Podobně pokud je zadán prostředek typu machinetype, který odeslání úlohy, např. qsub -l machinetype:Standard_L32s_v2 my-job.sh, pak CycleCloud automaticky škáluje "Standard_L32s_v2" v uzlu execute (výchozí) nodearray. Pokud tento typ počítače není v poli uzlu execute dostupný, zůstane úloha nečinná.

Tyto prostředky lze použít v kombinaci jako:

qsub -l nodes=8:ppn=16:nodearray=hpc:machinetype=Standard_HB60rs my-simulation.sh

které se automaticky škáluje pouze v případě, že jsou počítače Standard_HB60rs zadány pole uzlů hpc.

Přidání dalších front přiřazených k nodearrays

V clusterech s více uzly je běžné vytvářet samostatné fronty pro automatické směrování úloh do příslušného typu virtuálního počítače. V tomto příkladu předpokládáme, že v šabloně clusteru je definován následující nodearray gpu:

    [[nodearray gpu]]
    Extends = execute
    MachineType = Standard_NC24rs

        [[[configuration]]]
        pbspro.slot_type = gpu

Po importu šablony clusteru a spuštění clusteru je možné na uzlu serveru spustit následující příkazy, které vytvoří frontu gpu:

/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"

Poznámka

Výše uvedená definice fronty zabalí všechny virtuální počítače ve frontě do jedné škálovací sady virtuálních počítačů pro podporu úloh MPI. Chcete-li definovat frontu pro sériové úlohy a povolit více škálovacích sad virtuálních počítačů, nastavte ungrouped = true pro obě resources_default a default_chunk. Můžete také nastavit resources_default.place = pack , pokud chcete, aby plánovač zabalil úlohy na virtuální počítače místo přidělení úloh kruhovým dotazem. Další informace o balení pracovních úloh PBS najdete v oficiální dokumentaci k operačnímu systému PBS Professional.

Referenční informace o konfiguraci PBS Professional

Níže jsou uvedené možnosti konfigurace specifické pro PBS Professional, které můžete přepnout a přizpůsobit funkce:

Možnosti PBS Pro Description
pbspro.sloty Početslotch Počet slotů je počet souběžných úloh, které může uzel spustit. Tato hodnota se ve výchozím nastavení nastaví na počet procesorů na daném počítači. Tuto hodnotu můžete přepsat v případech, kdy nespouštíte úlohy na základě procesoru, ale na paměti, GPU atd.
pbspro.slot_type Název typu slotu, který uzel poskytuje. Výchozí hodnota je "execute". Pokud je úloha označena pevným prostředkem slot_type=<type>, tato úloha se spustí pouze na počítači se stejným typem slotu. To vám umožní vytvořit různé konfigurace softwaru a hardwaru na jeden uzel a zajistit, aby byla odpovídající úloha vždy naplánována na správný typ uzlu.
pbspro.version Výchozí hodnota: 18.1.3-0. Toto je verze PBS Professional pro instalaci a spuštění. Toto je aktuálně výchozí a jediná možnost. V budoucnu se můžou podporovat další verze softwaru PBS Professional.

Připojení PBS pomocí CycleCloudu

CycleCloud spravuje clustery OpenPBS prostřednictvím instalovatelného agenta, kterému se říká azpbs. Tento agent se připojí ke službě CycleCloud ke čtení konfigurací clusteru a virtuálních počítačů a také se integruje s OpenPBS, aby efektivně zpracovával informace o úloze a hostiteli. Všechny azpbs konfigurace jsou nalezeny v autoscale.json souboru, obvykle /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",

Důležité soubory

Agent azpbs analyzuje konfiguraci PBS při každém volání – úlohy, fronty, prostředky. Informace jsou k dispozici ve stderru a stdout příkazu i v souboru protokolu, a to jak na konfigurovatelných úrovních. Všechny příkazy pro správu PBS (qcmd) s argumenty se protokolují také do souboru.

Všechny tyto soubory najdete v adresáři /opt/cycle/pbspro/, kde je agent nainstalovaný.

Soubor Umístění Popis
Konfigurace automatického škálování autoscale.json Konfigurace pro informace o přístupu k automatickému škálování, mapě prostředků, cycleCloudu
Protokol automatického škálování autoscale.log Protokolování hlavního vlákna agenta včetně správy hostitelů CycleCloud
Protokol poptávky demand.log Podrobný protokol pro porovnávání prostředků
protokol trasování qcmd qcmd.log Protokolování volání agenta qcmd
Konfigurace protokolování logging.conf Konfigurace pro masky protokolování a umístění souborů

Definování prostředků OpenPBS

Tento projekt umožňuje obecně přidružovat prostředky OpenPBS k prostředkům virtuálních počítačů Azure prostřednictvím projektu cyclecloud-pbspro (azpbs). Tento vztah prostředku definovaný v .autoscale.json

Výchozí prostředky definované šablonou clusteru, se kterými se dodáváme, jsou

{"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"
   }]
}

Prostředek OpenPBS s názvem mem se rovná atributu uzlu s názvem node.memory, což je celková paměť libovolného virtuálního počítače. Tato konfigurace umožňuje azpbs zpracovat požadavek na prostředek, například -l mem=4gb porovnáním hodnoty požadavků na prostředky úlohy s prostředky uzlu.

Všimněte si, že disk je nyní pevně zakódován na size::20g. Tady je příklad zpracování velikosti konkrétního disku velikosti virtuálního počítače.

   {
      "select": {"node.vm_size": "Standard_F2"},
      "name": "disk",
      "value": "size::20g"
   },
   {
      "select": {"node.vm_size": "Standard_H44rs"},
      "name": "disk",
      "value": "size::2t"
   }

Automatické škálování a škálovací sady

CycleCloud zpracovává spanning a sériové úlohy v clusterech OpenPBS odlišně. Úlohy, které jsou součástí stejné skupiny umístění, budou přistály na uzlech. Skupina umístění má konkrétní význam platformy (VirtualMachineScaleSet s SinglePlacementGroup=true) a kopie bude spravovat pojmenovanou skupinu umístění pro každou rozloženou sadu uzlů. Pro tento název skupiny umístění použijte prostředek group_id PBS.

Fronta hpc připojí ekvivalent -l place=scatter:group=group_id pomocí výchozích hodnot nativní fronty.

Instalace agenta CycleCloud OpenPBS azpbs

Cluster OpenPBS CycleCloud bude spravovat instalaci a konfiguraci agenta na uzlu serveru. Příprava zahrnuje nastavení prostředků, front a háků PBS. Skriptovanou instalaci je možné provést i mimo 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 podporuje standardní sadu atributů automatickéhotopu napříč plánovači:

Atribut Popis
cyclecloud.cluster.autoscale.stop_enabled Je na tomto uzlu povolené automatické dokončování? [true/false]
cyclecloud.cluster.autoscale.idle_time_after_jobs Doba (v sekundách) pro uzel, který se po dokončení úloh po dokončení úloh nastaví jako nečinný, než se škáluje.
cyclecloud.cluster.autoscale.idle_time_before_jobs Doba (v sekundách) pro uzel, která má být nečinná před dokončením úloh před vertikálním snížením kapacity.

Poznámka

CycleCloud nepodporuje konfiguraci roztrhání pomocí Open PBS.

Poznámka

I když je Windows oficiálně podporovanou platformou Open PBS, CycleCloud v tuto chvíli nepodporuje spuštění Open PBS ve Windows.