Kategorie:PBS Professional

Z MetaCentrum
Skočit na navigaci Skočit na vyhledávání

Tato stránka popisuje důvody a způsoby použití dávkového systému PBS Professional v MetaCentru.

Důvody nasazení systému PBS Professional

MetaCentrum jako svůj hlavní dávkový systém pro spouštění úloh dosud používá výrazně upravený a rozšířený TORQUE Resource Manager verze 2.4. Během 6 let provozu však naše produkční verze (2.4) zaostala za hlavní vývojovou verzí od firmy Adaptive Computing, která je nyní na verzi 6.0.2. Současně jsme stále častěji naráželi na principiální problémy současné produkční verze, které snižovaly propustnost a škálovatelnost systému.

S ohledem na budoucí rozvoj a očekávaný nárůst výpočetních kapacit MetaCentra tak bylo zřejmé, že je potřeba aktualizovat a modernizovat náš dávkový systém. Při důkladné analýze se ukázalo, že aktualizace naší produkční verze na současnou podporovanou verzi by byla velice náročná, s nejistým výsledkem.

V létě 2016 pak došlo k uvolnění zdrojových kódů konkurenčního systému PBS Professional, který jsme již dříve v MetaCentru využívali. Po důkladné analýze se ukázalo, že tento dávkový systém splňuje většinu našich aktuálních požadavků, podporuje rozšiřitelnost, nabízí kompatibilitu s ostatními PBS Pro systémy, a dále nabízí i mnohé dosud nepodporované funkcionality. Jedná se například o:

  • podporu Docker kontejnerů
  • vysokou propustnost a škálovatelnost (50 000 uzlů, ~1000 000 jader, >1000 000 úloh/den)
  • detailní specifikace přidělování zdrojů úlohám pomocí parametru "-l select=..." a popis jejich alokace na uzly parametrem "-l place=..."

PBS Pro nabízí výrazně pokročilejší možnosti specifikace požadovaných zdrojů. Lze tedy kupříkladu specifikovat kolik zdrojů požaduje paralelní úloha pro jednotlivé "chunky" (chunk je dále nedělitelná množina zdrojů přidělených úloze na 1 fyz. uzlu), a zároveň i ovlivnit, jakým způsobem se tyto chunky budou plánovat na fyzické uzly. Lze tak například dosáhnout toho, že všechny chunky musí být na 1 stroji "vedle sebe" nebo naopak vždy na různých strojích, případně volně umístěné dle aktuální dostupnosti zdrojů.

Z výše uvedených důvodů jsme se rozhodli experimentálně nasadit tento dávkový systém v testovacím provozu na novém clusteru tarkil(1-16).grid.cesnet.cz v MetaCentru, s cílem postupně jej nasadit i na zbývající zdroje, které prozatím zůstávají pod správou systému TORQUE.

Největší změny oproti PBS Torque

  • jiná syntaxe příkazu qsub
  • nutnost specifikovat VŽDY typ scratche

Použití prostředí PBS Pro v MetaCentru

Experimentální prostředí PBS Pro obsluhuje server arien-pro.ics.muni.cz. Na server se nelze hlásit přímo. Prostředí má vlastní čelní uzel, tarkil.grid.cesnet.cz, na který se lze hlásit stejně jako na jiné čelní uzly.

Prostředí PBS Pro je oddělené od prostředí systému Torque v Metacentru. Z jiných čelních uzlů nelze zadávat úlohy do prostředí PBS Pro. Syntaxe zadávání úloh se v PBS Pro liší. Použití syntaxe "-l nodes=..." je považováno za zastaralé a je zablokované. Používejte prosím pouze novou syntax "select", která je níže popsaná. Vždy prosím zadávejte požadovaný walltime. Walltime oproti prostředí metacentra nelze zadávat pomocí jednotek ale pouze pomocí syntaxe [[hh:]mm:]ss. V syntaxi select se požadované zdroje dělí na tzv. chunky, které mohou být naplánované na jeden nebo více uzlů.

Oficiální dokumentace

Detailní dokumentace je k dispozici na stránkách Altair Engineering, Inc.: PBS Professional documentation

Nejdůležitější z uživatelského hlediska je pak uživatelský manuál: PBS Professional User's Guide

Příkaz qsub a jeho použití v PBS Pro

Následující příklady ukazují nejčastější způsoby práce s příkazem qsub v PBS Pro.

Základní příklady požadavku na úlohu

Pokud není specifikováno jinak, úloze je jako výchozí nastavení přidělen jeden procesor na jednom uzlu a 400 MB paměti. Takovéto úloze není přidělován žádný scratch. Následující příklady ukazují základní požadavky na úlohy.

Požadavek na úlohu o dvou procesorech (v jednom chunku) a 1 GB paměti s požadovanou dobou běhu 1 hodina.

qsub -l select=1:ncpus=2:mem=1gb -l walltime=1:00:00 skript.sh

Požadovat lze samozřejmě i úlohu s více "chunky" (analogie více uzlové úlohy v TORQUE). Tento příklad popisuje hodinovou úlohu požadující tři chunky po dvou procesorech a 1 GB paměti (na každém chunku obdržíme 2 CPU a 1 GB RAM).

qsub -l select=3:ncpus=2:mem=1gb -l walltime=1:00:00 skript.sh 

O prostor na scratch disku a jeho typ je třeba explicitně žádat, stejně tak o licence. Následující příklad rozšiřuje předchozí příklad o požadavek na 1 GB lokálního scratche a 3 licence MATLABu.

qsub -l select=3:ncpus=2:mem=1gb:scratch_local=1gb -l walltime=1:00:00 -l matlab=3 skript.sh  

Na clusteru tarkil je k dispozici take sdílený scratch. O ten požádáme následujícím způsobem.

qsub -l select=3:ncpus=2:mem=1gb:scratch_shared=1gb -l walltime=1:00:00 skript.sh  


Pokročilá syntaxe select

Nová synaxe "select" nabízí více možností. V následujících příkladech se podrobněji popisuje:

  • použití chunků
  • zadávání požadavků na konkrétní stroj
  • práce s cgroupami
  • způsob žádání o přítomnost/nepřítomnost dané vlastnosti stroje
  • práce se scratch disky

Pokud Vás tyto možnosti zajímají, čtěte dále, případně konzultujete uživatelskou dokumentaci: PBS Professional User's Guide.

Zakladní příklad, kde jsou požadovány 2 procesory na jednom uzlu a 1 GB paměti po dobu 1 hodiny. Požadován je jeden chunk:

qsub -l select=1:ncpus=2:mem=1gb -l walltime=1:00:00 skript.sh

Dva chunky po jednom procesoru:

qsub -l select=2:ncpus=1 -l walltime=1:00:00 skript.sh

Dva chunky, jeden po jednom procesoru a druhý se dvěma procesory:

qsub -l select=1:ncpus=1+1:ncpus=2 -l walltime=1:00:00 skript.sh

Žádost o konkrétní uzel storm3.metacentrum.cz (použijte vždy krátké jméno):

qsub -l select=1:ncpus=1:host=storm3 -l walltime=1:00:00 skript.sh

Žádost o uzel mající vlastnost "cl_storm". Je potřeba explicitně napsat hodnotu vlastnosti - True:

qsub -l select=1:ncpus=1:cl_storm=True -l walltime=1:00:00 skript.sh

Žádost o uzel nemající vlastnost "cl_storm":

qsub -l select=1:ncpus=1:cl_storm=False -l walltime=1:00:00 skript.sh

Příklad žádosti o stroj se cgroups:

qsub -l select=1:ncpus=1:cgroups=True -l walltime=1:00:00 skript.sh

O scratch je třeba požádat. Při žádosti o scratch je třeba žádat o konkrétní typ, neexistuje defaultní typ scratche:

qsub -l select=1:ncpus=1:mem=4gb:scratch_local=10gb,walltime=1:00:00 skript.sh
qsub -l select=1:ncpus=1:mem=4gb:scratch_ssd=1gb,walltime=1:00:00 skript.sh
qsub -l select=1:ncpus=1:mem=4gb:scratch_shared=1gb,walltime=1:00:00 skript.sh

Po žádosti o scratch jsou v úloze dostupné následující proměnné prostředí:

$SCRATCH_VOLUME=<vyhrazená kapacita>
$SCRATCHDIR=<adresář>
$SCRATCH_TYPE=<scratch_local|scratch_ssd|scratch_shared>

Plánování chunků pomocí parametru place

Oproti výpočetnímu prostředí Torque lze lépe specifikovat, jak budou jednotlivé chunky naplánované na uzly. K tomuto účelu slouží parametr "-l place=" nebo se parametr uvede za čárkou po specifikaci chunků.

Žádost o dva chunky na exkluzivním uzlu/ech (nikoliv nutně dva uzly), tj. na uzlu/ech bez dalších běžících úloh:

qsub -l select=2:ncpus=1:mem=1gb -l walltime=1:00:00 -l place=excl skript.sh

Povolení plánovat chunky na uzly libovolně, tj. dle aktuálního stavu dostupnosti zdrojů na uzlech (chunky mohou být na jednom nebo více uzlech, toto chování je výchozí):

qsub -l select=2:ncpus=1:mem=1gb,walltime=1:00:00,place=free skript.sh

Všechny chunky musí být na jednom uzlu (pokud dost velký uzel neexistuje, úloha se nespustí nikdy):

qsub -l select=2:ncpus=1:mem=1gb -l walltime=1:00:00 -l place=pack skript.sh

Každý chunk se umístí na jiný uzel (takto se chová prostředí Torque):

qsub -l select=2:ncpus=1:mem=1gb -l walltime=1:00:00 -l place=scatter skript.sh

Je možné kombinovat exkluzivitu se specifikací plánování chunků, vyžádání třech exkluzivních uzlů se provede následovně:

qsub -l select=3:ncpus=1:mem=1gb -l walltime=1:00:00 -l place=scatter:excl skript.sh

Infiniband

Parametr "-l place" se rovněž používá pro žádost o infiniband:

qsub -l select=3:ncpus=1 -l walltime=1:00:00 -l place=group=infiniband skript.sh

Při žádosti o konkrétní hodnotu infinibandu už je třeba požádat uvnitř chunku:

qsub -l select=3:ncpus=1:infiniband=brno -l walltime=1:00:00 skript.sh

Licence

O licence se žádá stejně jako v systému Torque, tedy ve zvláštním parametru -l nebo za čárkou po specifikaci chunku.

qsub -l select=3:ncpus=1  -l walltime=1:00:00 -l matlab=3 skript.sh

Další uživatelské rozdíly PBS Pro oproti Torque

  • Dokončená úloha je ve stavu "F" (finished), nikoliv "C" (completed) jak je zvykem v Torque.
  • Příkaz qstat standardně zobrazuje pouze čekající a bežící úlohy. Pro zobrazení dokončených úloh je třeba zavolat qstat -x.
  • U menší skupinky jobu může PBS Pro zobrazovat očekávaný start (Est Start Time). Zobrazení je možné pomocí příkazu qstat -T.
  • Cgrupy jsou na stroji buď zapnuté nebo vypnuté nelze na konkrétním stroji žádat o zapnutí/vypnutí cgroup.
  • Všechny požadavky na chunky musí být uvnitř jednoho -l parametru, nelze tedy například žádat o pamět zvlášť. Takto ne: -l select=2:ncpus=1 -l mem=1gb
  • minspec, maxspec není k dispozici

Tato kategorie neobsahuje žádné stránky či soubory.