Preskočiť na obsah

Priority úloh

Požiadavky na HPC zdroje zvyčajne prevyšujú ich dostupnosť, preto je potrebné určiť poradie, v akom sa úlohy môžu spustiť. V predvolenom nastavení plánovač prideľuje zdroje podľa jednoduchého prístupu FIFO. Keď je cluster obsadený, odoslané úlohy čakajú vo fronte na vykonanie. Čakajúce úlohy sa zoradia podľa priority (čím je číslo vyššie, tým skôr sa úloha spustí).

Faktory priority

Priority úloh sa vypočítavajú nasledovne:

\[ {\small \text{Priority} = 1{,}000{,}000 \cdot \text{FairShare} \;+\; 1 \cdot \text{JobAge} \;+\; 345{,}600 \cdot \text{Partition} \;+\; 1{,}000{,}000 \cdot \text{QoS} } \]
  • FairShare: Faktor fairshare s hodnotou od 0 do 1 predstavuje podiel zdrojov využitých projektom v posledných 14 dňoch. Čím viac zdrojov úlohy projektu využili v posledných 14 dňoch, tým nižšia je priorita nových úloh pre daný projekt.

  • JobAge: Priorita úlohy rastie s dĺžkou jej čakania vo fronte. JobAge zodpovedá času v sekundách, počas ktorého úloha čaká vo fronte (v tomto clustri s hornou hranicou 86 400 sekúnd).

  • Fronta: Faktor priradený úlohe podľa výberu fronty. Ďalšie informácie sú uvedené v Devana fronty a Perun fronty.

  • QoS: Faktor kvality služby slúži na priorizáciu úloh odoslaných z aktívnych projektov a zároveň zaručuje, že projekty, ktoré presiahli svoje trvanie, v plnej miere využijú pridelené účtovacie hodiny. Faktor QoS nadobúda hodnotu 1,0 pre aktívne projekty a 0,0 pre projekty, ktoré presiahli svoje trvanie.

Backfill

SLURM v clustroch HPC SAV používa backfill plánovací plugin, ktorý umožňuje spúšťať úlohy s nižšou prioritou, ak sa dokončia skôr, než bude ich zdroje potrebovať úloha s vyššou prioritou. Preto je dôležité presne špecifikovať požiadavky na CPU, pamäť a walltime, aby bolo možné backfill efektívne využívať.

Nasledujúci príkaz možno použiť na zobrazenie odhadovaného času spustenia úlohy:

squeue --start -j <jobid>

FairShare

Faktor FairShare (0–1) znižuje prioritu účtov, ktoré spotrebovali viac zdrojov v posledných 14 dňoch. Čím viac CPU/GPU hodín projekt nedávno využil, tým nižšia je plánovacia priorita jeho nových úloh.

Hodnota FairShare sa vypočíta takto:

\[ \text{FairShare} = 2^{-\left(\frac{\text{EffectiveUsage}} {\text{NormalizedShares}}\right)} \]
  • EffectiveUsage: Akumulované využitie z posledných 14 dní s časovým útlmom, normalizované naprieč hierarchiou účtov SLURM.

  • NormalizedShares: Podiel účtu na celkových podieloch clusteru. V tejto konfigurácii sú RawShares priradené úmerne počtu používateľov v každom projekte, preto:

\[ \text{NormalizedShares} = \frac{\text{RawShares}_\text{project}} {\sum_{\text{all projects}} \text{RawShares}} = \frac{\text{Number of users in project}} {\text{Total number of users in cluster}} \]

Projekty s väčším počtom používateľov získajú úmerne vyššie podiely, čo pri náraste ich nedávneho využitia znamená miernejší trest z FairShare. Naopak, projekty s malým počtom používateľov majú nižšie podiely, a preto ich pri rovnakej úrovni využitia postihne silnejší pokles priority.

Správa priorít

Na zobrazenie priorít odoslaných úloh je možné použiť najmä príkazy sprio a sshare. Príkaz sprio zobrazuje priority a ich zložky čakajúcich úloh. Príkaz sshare je možné použiť na určenie faktora fairshare, ktorý sa používa pri výpočte priority úlohy.

sprio – informácie o prioritách plánovania úloh

sprio zobrazuje priority a ich zložky čakajúcich úloh.

Triedenie všetkých čakajúcich úloh podľa ich priority

sprio -S -y
   JOBID  PARTITION    PRIORITY      SITE        AGE  FAIRSHARE  PARTITION        QoS
   674582 short        1442165          0        439      96126     345600    1000000
   674520 medium       1427035          0       1724     252511     172800    1000000
   674521 medium       1427033          0       1722     252511     172800    1000000
   674522 medium       1427031          0       1720     252511     172800    1000000
   674502 long         1026834          0       2444      24390          0    1000000
   674528 long          512442          0       1682     510760          0          0

Nullová hodnota QoS pri úlohe 674528 naznačuje, že bola odoslaná v rámci projektu, ktorý presiahol svoje trvanie.

Viac informácií je uvedených na stránke dokumentácie SLURM alebo pomocou príkazu sprio --help.

sshare – zoznam podielov asociácií

Tento príkaz zobrazuje informácie o fairshare založené na hierarchickej štruktúre účtov. V tomto prípade sa používa na určenie faktora fairshare, ktorý sa uplatňuje pri výpočte priority úlohy. Keďže hodnota faktora fairshare závisí aj od účtu (projektu používateľa), je potrebné definovať aj tento účet.

V tomto prípade má používateľ user1 prístup k projektu s názvom p70-23-t. Faktor fairshare (zobrazený v poslednom stĺpci) je možné zobraziť nasledovne:

Zobrazenie fairshare používateľa

sshare -A p70-23-t
    Account                    User  RawShares  NormShares    RawUsage  EffectvUsage  FairShare
    -------------------- ---------- ---------- ----------- ----------- ------------- ----------
    p70-23-t                                 1    0.333333   122541631      0.364839
    p70-23-t               user1             1    0.111111     4798585      0.039159   0.263158

Všetky projekty, ku ktorým má používateľ prístup, je možné vypísať pomocou príkazu sprojects.

Viac informácií je uvedených v dokumentácii SLURM alebo pomocou príkazu sshare --help.

Created by: Marek Štekláč