OpenPBS

OpenPBS kan eenvoudig worden ingeschakeld op een CycleCloud-cluster door de 'run_list' te wijzigen in de configuratiesectie van uw clusterdefinitie. De twee basisonderdelen van een PBS Professional-cluster zijn het hoofdknooppunt dat een gedeeld bestandssysteem biedt waarop de PBS Professional-software wordt uitgevoerd, en de 'execute'-knooppunten die de hosts zijn die het gedeelde bestandssysteem koppelen en de verzonden 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]

Het importeren en starten van een cluster met definitie in CycleCloud levert één hoofdknooppunt op. Voer knooppunten uit aan het cluster via de cyclecloud add_node opdracht. Als u bijvoorbeeld nog 10 knooppunten wilt toevoegen, gaat u als volgt te werk:

cyclecloud add_node my-pbspro -t execute -c 10

Automatisch schalen op basis van PBS-resources

Cyclecloud onderhoudt twee resources om de dynamische inrichtingsmogelijkheid uit te breiden. Deze resources zijn nodearray en machinetype.

Als u een taak verzendt en een knooppuntmaarrayresource opgeeft, qsub -l nodearray=highmem -- /bin/hostname voegt CycleCloud knooppunten toe aan de nodearray met de naam highmem. Als er geen dergelijke nodearray is, blijft de taak inactief.

Op dezelfde manier als een machinetype-resource is opgegeven waarin een taak wordt verzonden, bijvoorbeeld qsub -l machinetype:Standard_L32s_v2 my-job.shCycleCloud, wordt de 'Standard_L32s_v2' automatisch geschaald in de knooppuntmaarray 'execute' (standaard). Als dat computertype niet beschikbaar is in de knooppuntmatrix uitvoeren, blijft de taak inactief.

Deze resources kunnen in combinatie worden gebruikt als:

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

die alleen automatisch wordt geschaald als de Standard_HB60rs-machines een hpc-knooppuntmatrix worden opgegeven.

Extra wachtrijen toevoegen die zijn toegewezen aan nodearrays

Op clusters met meerdere knooppuntarrays is het gebruikelijk om afzonderlijke wachtrijen te maken om taken automatisch te routeren naar het juiste VM-type. In dit voorbeeld gaan we ervan uit dat de volgende gpu-knooppuntmaarray 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, kunnen de volgende opdrachten worden uitgevoerd 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"

Notitie

Met de bovenstaande wachtrijdefinitie worden alle VM's in de wachtrij in één VM-schaalset verpakt ter ondersteuning van MPI-taken. Als u de wachtrij voor seriële taken wilt definiëren en meerdere VM-schaalsets wilt toestaan, stelt u deze in ungrouped = true voor beide resources_default en default_chunk. U kunt ook instellen resources_default.place = pack of u wilt dat de planner 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 Job Packing.

Naslaginformatie voor PBS Professional-configuratie

Hieronder vindt u de specifieke configuratieopties van PBS Professional die u kunt in- of uitschakelen om de functionaliteit aan te passen:

PBS Pro-opties Description
pbspro.slots Het aantal sleuven voor een bepaald knooppunt dat moet worden rapporteren aan PBS Pro. Het aantal sites 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, enzovoort.
pbspro.slot_type De naam van het type 'site' dat een knooppunt biedt. De standaardwaarde is 'uitvoeren'. Wanneer een taak is gelabeld met de harde resource slot_type=<type>, wordt die taak alleen uitgevoerd op een computer met hetzelfde sitetype. Zo kunt u verschillende software- en hardwareconfiguraties per knooppunt maken en ervoor zorgen dat een geschikte taak altijd wordt gepland op het juiste type knooppunt.
pbspro.version Standaard: '18.1.3-0'. Dit is de PBS Professional-versie die moet worden geïnstalleerd en uitgevoerd. Dit is momenteel de standaardoptie en alleen de optie . In de toekomst kunnen aanvullende versies van de PBS Professional-software worden 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 en kan ook worden geïntegreerd met OpenPBS om de taak- en hostgegevens effectief te verwerken. Alle azpbs configuraties zijn te vinden in het autoscale.json bestand, normaal gesproken /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 parseert de PBS-configuratie telkens wanneer deze wordt aangeroepen: taken, wachtrijen, resources. Informatie wordt verstrekt in de stderr en stdout van de opdracht en aan een logboekbestand, beide op configureerbare niveaus. Alle PBS-beheeropdrachten (qcmd) met argumenten worden ook vastgelegd in het bestand.

Al deze bestanden zijn te vinden in de map /opt/cycle/pbspro/ waar de agent is geïnstalleerd.

File Locatie Beschrijving
Configuratie automatisch schalen autoscale.json Configuratie voor automatisch schalen, resourcetoewijzing, cycleCloud-toegangsgegevens
Logboek voor automatisch schalen autoscale.log Hoofdthreadlogboekregistratie van agents, inclusief CycleCloud-hostbeheer
Aanvraaglogboek demand.log Gedetailleerd logboek voor resourcekoppeling
qcmd-traceringslogboek qcmd.log De aanroepen van de agent qcmd registreren
Configuratie van logboekregistratie logging.conf Configuraties voor logboekregistratiemaskers en bestandslocaties

OpenPBS-resources definiëren

Dit project maakt een algemene koppeling van OpenPBS-resources met Azure VM-resources mogelijk via het project cyclecloud-pbspro (azpbs). Deze resourcerelatie gedefinieerd in autoscale.json.

De standaardbronnen die zijn gedefinieerd met de clustersjabloon waarmee we verzenden, zijn

{"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 is gelijk aan een knooppuntkenmerk met de naam node.memory, het totale geheugen van een virtuele machine. Met deze configuratie kunt azpbs u een resourceaanvraag verwerken, bijvoorbeeld -l mem=4gb door de waarde van de taakresourcevereisten te vergelijken met knooppuntresources.

Houd er rekening mee dat de schijf momenteel is vastgelegd in size::20g. Hier volgt een voorbeeld van het verwerken van de vm-grootte die specifiek is voor de schijfgrootte

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

Automatische schaalaanpassing en schaalsets

CycleCloud behandelt spannings- en seriële taken anders in OpenPBS-clusters. Spanningstaken komen terecht op knooppunten die deel uitmaken van dezelfde plaatsingsgroep. De plaatsingsgroep heeft een bepaalde platformbetekening (VirtualMachineScaleSet met SinglePlacementGroup=true) en CC beheert een benoemde plaatsingsgroep voor elke spanned-knooppuntset. Gebruik de PBS-resource group_id voor de naam van deze plaatsingsgroep.

De hpc wachtrij voegt het equivalent toe van het gebruik van -l place=scatter:group=group_id standaardinstellingen voor systeemeigen wachtrijen.

De CycleCloud OpenPBS-agent installeren azpbs

Het OpenPBS CycleCloud-cluster beheert de installatie en configuratie van de agent op het serverknooppunt. De voorbereiding omvat het instellen van PBS-resources, wachtrijen en hooks. Er kan ook een script worden geïnstalleerd 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 Is autostop ingeschakeld op dit knooppunt? [waar/onwaar]
cyclecloud.cluster.autoscale.idle_time_after_jobs De hoeveelheid tijd (in seconden) voor een knooppunt dat inactief is na het voltooien van taken voordat het omlaag wordt geschaald.
cyclecloud.cluster.autoscale.idle_time_before_jobs De hoeveelheid tijd (in seconden) voor een knooppunt dat inactief is voordat taken worden voltooid voordat het omlaag wordt geschaald.

Notitie

CycleCloud biedt geen ondersteuning voor de bursting-configuratie met Open PBS.

Notitie

Hoewel Windows een officieel ondersteund Open PBS-platform is, biedt CycleCloud momenteel geen ondersteuning voor het uitvoeren van Open PBS in Windows.