Preskočiť na obsah

Praktické SLURM príkazy

Základné SLURM príkazy

sinfo - všeobecné informácie o stave systému

Existujúce fronty a uzly, ktoré obsahujú, ako aj všeobecný stav systému možno zistiť pomocou príkazu sinfo.

Výstup sinfo

sinfo
  PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
  ncpu         up 1-00:00:00     22 drain* n[014-021,026-031,044-051]
  ncpu         up 1-00:00:00     10    mix n[001-002,025,052,058,067,073,079,081,105]
  ncpu         up 1-00:00:00     86  alloc n[003-008,012-013,022-024,032-033,036-043,053-057,059-066,068-072,074,077-078,080,082-094,097-099,102-104,106-116,119-127,131,135-136,140]
  ncpu         up 1-00:00:00     22   idle n[009-011,034-035,075-076,095-096,100-101,117-118,128-130,132-134,137-139]
  ngpu         up 2-00:00:00      4    mix n[141-143,148]
  ngpu         up 2-00:00:00      1  alloc n144
  ngpu         up 2-00:00:00      3   idle n[145-147]
  testing      up      30:00      2   idle login[01-02]
  gpu          up 2-00:00:00      4    mix n[141-143,148]
  gpu          up 2-00:00:00      1  alloc n144
  gpu          up 2-00:00:00      3   idle n[145-147]
  short*       up 1-00:00:00     22 drain* n[014-021,026-031,044-051]
  short*       up 1-00:00:00     10    mix n[001-002,025,052,058,067,073,079,081,105]
  short*       up 1-00:00:00     86  alloc n[003-008,012-013,022-024,032-033,036-043,053-057,059-066,068-072,074,077-078,080,082-094,097-099,102-104,106-116,119-127,131,135-136,140]
  short*       up 1-00:00:00     22   idle n[009-011,034-035,075-076,095-096,100-101,117-118,128-130,132-134,137-139]
  medium       up 2-00:00:00     22 drain* n[014-021,026-031,044-051]
  medium       up 2-00:00:00     10    mix n[001-002,025,052,058,067,073,079,081,105]
  medium       up 2-00:00:00     86  alloc n[003-008,012-013,022-024,032-033,036-043,053-057,059-066,068-072,074,077-078,080,082-094,097-099,102-104,106-116,119-127,131,135-136,140]
  medium       up 2-00:00:00     22   idle n[009-011,034-035,075-076,095-096,100-101,117-118,128-130,132-134,137-139]
  long         up 4-00:00:00     22 drain* n[014-021,026-031,044-051]
  long         up 4-00:00:00     10    mix n[001-002,025,052,058,067,073,079,081,105]
  long         up 4-00:00:00     86  alloc n[003-008,012-013,022-024,032-033,036-043,053-057,059-066,068-072,074,077-078,080,082-094,097-099,102-104,106-116,119-127,131,135-136,140]
  long         up 4-00:00:00     22   idle n[009-011,034-035,075-076,095-096,100-101,117-118,128-130,132-134,137-139]

Symbol * v názve fronty označuje predvolenú frontu. Vidíme, že uzly v každej fronte sú v rôznych stavoch - napríklad idle, alloc (alokované používateľom) alebo drain. Informácie o frontách sa môžu nachádzať na viacerých riadkov, aby sa dali identifikovať uzly v rôznych stavoch. Symbol * v stĺpci STATE (napr. drain*) označuje, že uzol je **práve umiesťovaný do stavu drain; uzly, ktoré neodpovedajú, sú označené v stĺpci NODELIST značkou ~.

Príkaz sinfo má mnoho možností, ktoré umožňujú zobraziť požadované informácie vo formáte, ktorý preferujete. Viac informácií nájdete v dokumentácii sinfo alebo pomocou príkazu sinfo --help.


squeue - informácie o odoslaných úlohách

Zistiť aké úlohy v systéme existujú, pomocou príkazu squeue.

Zobrazenie existujúcich úloh

squeue
  JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
  16048     short xgboost_    user1 PD       0:00      1 (Nodes required for job are DOWN, DRAINED or reserved for jobs in higher priority partitions)
  15739     short test3232    user2 PD       0:00      2 (Priority)
  15365     short   DHAI-b    user1 PD       0:00      1 (Priority)
  15349       gpu     gpu8     test  R       0:00      1 n141

Vysvetlenie polí

  • JOBID: Pole JOBID zobrazuje ID úlohy v SLURM. S týmto číslom môžete pracovať vo svojich SLURM skriptoch cez premennú SLURM_JOB_ID.
  • PARTITION: Pole PARTITION zobrazuje, v ktorej fronte sa úloha spúšťa. Viac informácií nájdete v sekciách Devana fronty alebo Perun fronty.
  • NAME: Pole NAME zobrazuje meno zadané používateľom.
  • USER: Pole USER zobrazuje prihlasovacie meno účtu osoby, ktorá odoslala úlohu.
  • ST: Pole ST zobrazuje informácie o stave úlohy.
  • TIME: Pole TIME zobrazuje, ako dlho úloha beží, vo formáte dni-hodiny:minúty:sekundy (kratšie časy sa zobrazujú ako hodiny:minúty:sekundy alebo minúty:sekundy).
  • NODES: Pole NODES zobrazuje počet alokovaných uzlov.
  • NODELIST(REASON): Pole NODELIST(REASON) uvádza, kde sa úloha spúšťa, alebo dôvod, prečo je stále v stave pending. Typické dôvody pre úlohy v stave pending sú Resources (čakanie, kým budú k dispozícii zdroje) a Priority (je vo fronte za úlohou s vyššou prioritou).

Príkaz squeue má mnoho možností, ktoré umožňujú zobraziť požadované informácie vo formáte, ktorý preferujete. Najbežnejšie možnosti zahŕňajú zobrazenie úloh konkrétneho používateľa (-u) a/alebo úloh bežiacich na konkrétnom uzle (-w).

Zobrazenie úloh pre zadaného používateľa/uzol

squeue -u user1
  JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
  120387      long   long_job   user_1  R    1:14:18      1 n008
  120396     short  short_job   user_1  R       0:34      2 n[024-025]

squeue -w n001
  JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
  107491         long jif3d_mt   user_2  R 3-13:28:20      1 n001
  108441_76      long long_job   user_1  R 2-06:50:21      1 n001
  108441_82      long long_job   user_1  R 2-06:50:21      1 n001
  120398         short     test   user_3  R       1:36     1 n001
  120379         short     test   user_3  R       5:23     1 n001
  120333         short     test   user_3  R      13:39     1 n001
  120318         short     test   user_3  R      18:00     1 n001
  120272         short     test   user_3  R      28:04     1 n001
  120242         short     test   user_3  R      35:13     1 n001

Viac informácií nájdete na stránke squeue alebo pomocou príkazu squeue --help.


srun - spustenie paralelných úloh

Pomocou príkazu srun je možné vytvoriť alokáciu zdrojov a v jednom príkazovom riadku spustiť úkony pre krok úlohy. V závislosti od použitej implementácie MPI sa takto dajú spustiť aj MPI úlohy. Príklad nižšie spúšťa interaktívny shell na predvolenej fronte. Napríklad, ak špecifikujete --partition=short (na Perun: cpu_short) a --time=2-00:00:00, dostanete chybu, pretože zadaný čas presahuje limit danej fronty.

srun --pty /bin/bash

Týmto spôsobom si môžete prispôsobiť požiadavku tak, aby vyhovovala potrebám vašej úlohy aj limitom zvolenej fronty.

srun --partition=short --export=ALL --nodes=1 --ntasks=8 --cpus-per-task=4 --mem=128G --time=02:00:00 --pty /bin/bash
srun --partition=gpu --export=ALL --nodes=1 --ntasks=16 --gres=gpu:1 --cpus-per-task=1 --mem=64G --time=02:00:00 --pty /bin/bash  # GPU partition (Devana: gpu; Perun: gpu_short/gpu_medium/gpu_long)

Viac informácií nájdete na man stránke alebo pomocou príkazu srun --help.


sbatch - odoslanie paralelných úloh

Častejším režimom práce je odoslanie skriptu na neskoršie vykonanie pomocou príkazu sbatch. V tomto príklade sa odošle skript pomocou príkazu sbatch_submit.sh na uzly n067 a n066 (--nodelist "n[066-067]", všimnite si použitie výrazu rozsahu uzlov), v ktorom nasledujúce kroky úlohy spustia 8 taskov (4 na uzol) so 4 CPU. Výstup sa objaví v súbore stdout.<jobid>.out (nastavené pomocou --output stdout.%J.out), pričom skript využíva aj definíciu časového limitu úlohy.

cat sbatch_submit.sh
  #!/bin/bash
  #SBATCH --account=<project_name>
  #SBATCH --partition=short
  #SBATCH --time=01:00:00
  #SBATCH --nodes=2
  #SBATCH --ntasks-per-node=4
  #SBATCH --cpus-per-task=4
  #SBATCH --mem=64G
  #SBATCH --nodelist=n[066-067]
  #SBATCH --output stdout.%J.out 
  #SBATCH --error stderr.%J.out 


  ## End of sbatch section
  ## Commands to be executed during the run of the script

sbatch sbatch_submit.sh
  Submitted batch job 38793

Ďalšie možnosti je možné zadať podľa potreby použitím príkazu “#SBATCH” nasledovanej možnosťou na začiatku skriptu (pred akýmikoľvek príkazmi, ktoré sa majú v skripte vykonať).

Alternatívne sa možnosti dajú poskytnúť sbatch v príkazovom riadku:

Odoslanie úloh pomocou sbatch

cat sbatch_submit.sh
  #!/bin/bash
  #SBATCH --account=<project_name>
  #SBATCH --partition=short

  ## End of sbatch section
  ## Commands to be executed during the run of the script

sbatch --nodes 2 --nodelist "n[066-067]" --ntasks-per-node=4 --cpus-per-task=4 --mem=64G --output stdout.%J.out --error stderr.%J.out sbatch_submit.sh
  Submitted batch job 38794

Možnosti zadané v príkazovom riadku prepíšu všetky možnosti špecifikované vo vnútri skriptu.

Viac informácií nájdete na man stránke alebo pomocou príkazu sbatch --help.


scancel - ukončenie bežiacich úloh

Príkaz scancel sa používa na odoslanie signálu alebo zrušenie úloh, array job-ov alebo krokov úloh. Takýto príkaz môže použiť len vlastník tejto úlohy alebo root. Ak sa o to pokúsi nepovolený používateľ, zobrazí sa chybová správa a úloha sa neukončí.

scancel --user <username>

Úlohy sa zvyčajne dajú zrušiť pomocou mena úlohy a/alebo jej ID SLURM.

scancel --name "test_job"
#OR
scancel 666

scancel sa dá použiť aj na zrušenie všetkých vašich úloh v konkrétnom stave, fronte atď.

scancel --state PENDING --user <username>

Ľubovoľný počet úloh alebo krokov úloh možno zvoliť využitím filtrov špecifikácie úlohy alebo medzerou v zozname konkrétnych ID úloh a/alebo krokov úloh. Ak sa ID úlohy array job špecifikuje spolu s ID array elementu, zruší sa iba tento element. Ak sa ID array job špecifikuje bez ID elementu, zrušia sa všetky elementy array jobu. Kým je heterogénna úloha v stave PENDING, môže sa zrušiť iba celá úloha, nie jej jednotlivé komponenty.

Viac informácií nájdete na man stránke alebo pomocou príkazu scancel --help.


Doplnkové SLURM príkazy

sacct - accounting informácie o úlohách

Príkaz sacct je možné použiť na zobrazenie stavových informácií z histórie úloh používateľa na základe mena používateľa a/alebo ID úlohy SLURM. V predvolenom nastavení sacct zobrazuje iba informácie o úlohách používateľa za aktuálny deň.

sacct --jobs=<jobid> [--format=metric1,...]

Zobrazenie informácií o dokončenej úlohe

 sacct --jobs=<jobid>
   JobID            JobName  Partition    Account  AllocCPUS      State ExitCode
   ------------- ---------- ---------- ---------- ---------- ---------- --------
   <jobid>             name      short  <project>        512    TIMEOUT      0:0
   <jobid>.batch      batch             <project>         64  CANCELLED     0:15
   <jobid>.exte+     extern             <project>        512  COMPLETED      0:0
   <jobid>.0     hydra_bst+             <project>        512     FAILED      5:0

Použite -X slúži na agregáciu štatistík relevantných pre samotnú alokáciu úlohy, bez zohľadnenia krokov úlohy.

Zobrazenie agregovaných informácií o dokončenej úlohe

 sacct -X --jobs=<jobid>
   JobID            JobName  Partition    Account  AllocCPUS      State ExitCode
   ------------- ---------- ---------- ---------- ---------- ---------- --------
   <jobid>             name      short  <project>        512    TIMEOUT      0:0

Použitím --starttime (-S) príkaz hľadá ďalej do minulosti až po zadaný dátum. Môže sa kombinovať s --endtime (-E):

sacct [-X] -u <user>  [-S YYYY-MM-DD] [-E YYYY-MM-DD] [--format=metric1,...] # Specify user and start and end dates

--format sa dá použiť na výber výstupu príkazu (úplný zoznam premenných nájdete s príznakom --helpformat):

sacct [-X] -A <account> --format=JobID,JobName,Partition,State,Elapsed,MaxRSS # Display account jobs in a custom format

sacct názvy premenných formátu
Premenná Popis
Account Účet, pod ktorým sa úloha spúšťala.
AveCPU Priemerný (systém + používateľ) čas CPU všetkých úkonov v úlohe.
AveRSS Priemerná veľkosť rezidentnej množiny (RSS) všetkých úkonov v úlohe.
AveVMSize Priemerná veľkosť virtuálnej pamäte všetkých úkonov v úlohe.
CPUTime Formátovaný (uplynutý čas * CPU) počet použitého úlohou alebo krokom.
Elapsed Uplynutý čas úlohy formátovaný ako DD-HH:MM:SS.
ExitCode Exit kód vrátený skriptom úlohy alebo salloc.
JobID ID úlohy.
JobName Názov úlohy.
MaxRSS Maximálna veľkosť rezidentnej množiny (RSS) všetkých úkonov v úlohe.
MaxVMSize Maximálna veľkosť virtuálnej pamäte všetkých úkonov v úlohe.
MaxDiskRead Maximálny počet bajtov prečítaných všetkými úkonmi v úlohe.
MaxDiskWrite Maximálny počet bajtov zapisaných všetkými úkonmi v úlohe.
ReqCPUS Požadovaný počet CPU.
ReqMem Požadované množstvo pamäte.
ReqNodes Požadovaný počet uzlov.
NCPUS Počet CPU použitých v úlohe.
NNodes Počet uzlov použitých v úlohe.
User Prihlasovacie meno osoby, ktorá spúšťala úlohu.

Úplný zoznam premenných je možné zobrasiť s využitím --helpformat, v dokumentácii sacct alebo pomocou príkazu sacct --help.


seff - správa o efektívnosti úlohy

Tento príkaz sa dá použiť na zistenie informácií o efektívnosti úloh, ktoré sa dokončili a opustili frontu. Ak tento príkaz spustíte, keď je úloha ešte v stave R (Running), môže poskytovať nesprávne informácie.

Utility seff vám pomôže sledovať efektívnosť CPU/pamäte. Príkaz sa volá takto:

seff <jobid>

Úlohy s rozdielnou efektívnosťou využitia CPU/pamäte
seff <jobid>
  Job ID: <jobid>
  User/Group: user1/group1
  State: COMPLETED (exit code 0)
  Nodes: 1
  Cores per node: 32
  CPU Utilized: 41-01:38:14
  CPU Efficiency: 99.64% of 41-05:09:44 core-walltime
  Job Wall-clock time: 1-11:19:38
  Memory Utilized: 2.73 GB
  Memory Efficiency: 2.13% of 128.00 GB
seff <jobid>
  Job ID: <jobid>
  User/Group: user1/group1
  State: COMPLETED (exit code 0)
  Nodes: 1
  Cores per node: 16
  CPU Utilized: 14:24:49
  CPU Efficiency: 23.72% of 2-12:46:24 core-walltime
  Job Wall-clock time: 03:47:54
  Memory Utilized: 193.04 GB
  Memory Efficiency: 75.41% of 256.00 GB
seff <jobid>
  Job ID: <jobid>
  User/Group: user1/group1
  State: COMPLETED (exit code 0)
  Nodes: 1
  Cores per node: 64
  CPU Utilized: 87-16:58:22
  CPU Efficiency: 86.58% of 101-07:16:16 core-walltime
  Job Wall-clock time: 1-13:59:19
  Memory Utilized: 212.39 GB
  Memory Efficiency: 82.96% of 256.00 GB

Tento príklad ilustruje veľmi zlú úlohu z hľadiska efektívnosti využitia CPU/pamäte (pod 4%): úloha používateľa zaberala celý 64-jadrový uzol, pričom využila len 3,55 % prideleného core-walltime.

seff <jobid>
  Job ID: <jobid>
  User/Group: user1/group1
  State: COMPLETED (exit code 0)
  Nodes: 1
  Cores per node: 64
  CPU Utilized: 00:08:33
  CPU Efficiency: 3.55% of 04:00:48 core-walltime
  Job Wall-clock time: 00:08:36
  Memory Utilized: 55.84 MB
  Memory Efficiency: 0.05% of 112.00 GB

seff <jobid>
  Job ID: <jobid>
  User/Group: user1/group1
  State: COMPLETED (exit code 0)
  Nodes: 1
  Cores per node: 64
  CPU Utilized: 34-17:07:26
  CPU Efficiency: 95.80% of 36-05:41:20 core-walltime
  Job Wall-clock time: 13:35:20
  Memory Utilized: 5.18 GB
  Memory Efficiency: 0.00% of 0.00 MB
  Nvidia SXM A100 40GB #1:
    GPU Efficiency: 36.90%
    Memory Utilized: 0.00 GB (0.00%)
  Nvidia SXM A100 40GB #2:
    GPU Efficiency: 36.82%
    Memory Utilized: 0.00 GB (0.00%)
  Nvidia SXM A100 40GB #3:
    GPU Efficiency: 36.92%
    Memory Utilized: 0.00 GB (0.00%)
  Nvidia SXM A100 40GB #4:
    GPU Efficiency: 36.74%
    Memory Utilized: 0.00 GB (0.00%)

sprojects - Zobrazenie informácií o projektoch

Tento príkaz zobrazuje informácie o projektoch dostupných pre používateľa a podrobnosti projektov, ako sú dostupné alokácie, zdieľané adresáre a členovia tímu projektu.

Skript sprojects zobrazuje dostupné SLURM účty (projekty) pre zadané ID používateľa. Ak používateľ nie je zadaný pomocou -u, skript zobrazí informácie o aktuálnom používateľovi.

Zobrazenie dostupných účtov aktuálneho používateľa

sprojects
   The following slurm accounts are available for user user1:
   p70-23-t

Možnosť -a spôsobí, že skript zobrazí alokácie v CPU hodinách a GPU hodinách vo formáte spotrebované/udelené.

Zobrazenie všetkých dostupných alokácií aktuálneho používateľa

sprojects -a
   +=================+=====================+
   |     Project     |     Allocations     |
   +-----------------+---------------------+
   | p70-23-t        | CPU:      10/50000  |
   |                 | GPU:       0/12500  |
   +=================+=====================+

Pomocou možnosti -f skript zobrazí podrobnejšie informácie vrátane dostupných alokácií.

Zobrazenie kompletných informácií o aktuálnom používateľovi

sprojects -f
   +=================+=========================+============================+=====================+
   |     Project     |       Allocations       |      Shared storages       |    Project users    |
   +-----------------+-------------------------+----------------------------+---------------------+
   | p371-23-1       | CPU:    182223/500000   | /project/p371-23-1         | user1               |
   |                 | GPU:       542/1250     | /scratch/p371-23-1         | user2               |
   |                 |                         |                            | user3               |
   +-----------------+-------------------------+----------------------------+---------------------+
   | p81-23-t        | CPU:     50006/50000    | /project/p81-23-t          | user1               |
   |                 | GPU:       766/781      | /scratch/p81-23-t         | user2               |
   +-----------------+-------------------------+----------------------------+---------------------+
   | p70-23-t        | CPU:    485576/5000000  | /project/p70-23-t          | user1               |
   |                 | GPU:       544/31250    | /scratch/p70-23-t         | user2               |
   |                 |                         |                            | user4               |
   |                 |                         |                            | user5               |
   |                 |                         |                            | user6               |
   |                 |                         |                            | user7               |
   +=================+=========================+============================+=====================+

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

Požiadavka na HPC zdroje zvyčajne prevyšuje ich dostupnosť, preto je potrebné určiť poradie, v akom sa úlohy môžu spustiť. V predvolenom nastavení plánovač prideľuje zdroje na princípe FIFO. Implementované pravidlá však môžu meniť prioritu úloh, ktoré sú plánovaču vyjadrené číselnou hodnotou. Príkaz sprio je možné použiť na zobrazenie priorít a ich zložiek pri čakajúcich úlohách.

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         1026833          0       2444      24390          0    1000000
   674528 long          512442          0       1682     510760          0          0
Hodnota QoS rovná nule pre úlohu 674528 naznačuje, že bola odoslaná v rámci projektu, ktorý presiahol svoju trvanie.

Viac informácií nájdete 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.


salloc - pridelenie zdrojov a spustenie shellu

Príkaz salloc slúži na pridelenie výpočtových zdrojov (napr. uzlov), prípadne s určitými obmedzeniami (napr. počtom procesorov na uzol), ktoré sa následne môžu využiť na spúšťanie úloh. Po odoslaní príkazu salloc zostáva terminál zablokovaný až do pridelenia požadovaných zdrojov. Shell však naďalej beží na login node. Samotné príkazy sa na pridelenom výpočtovom uzle vykonajú až po použití príkazu srun. Keďže požadované zdroje už boli pridelené, tasky spustené pomocou srun môžu byť vykonané okamžite.

hostname
  login01.devana.local

salloc --nodes=1 --ntasks-per-node=4 --mem-per-cpu=2G --time=01:00:00
  salloc: Pending job allocation 63752579
  salloc: job 63752579 queued and waiting for resources
  salloc: job 63752579 has been allocated resources
  salloc: Granted job allocation 63752579

hostname
  login01.devana.local

srun hostname
  n007

salloc spúšťa shell na prihlasovacom uzle, nie na alokovanom uzle.

Viac informácií nájdete na man stránke alebo pomocou príkazu salloc --help.


sattach - pripojenie k bežiacim úlohám

Príkaz sattach slúži na pripojenie k už spustenému job step-u a umožňuje sledovať jeho štandardný vstup, výstup a chybový výstup z aktuálnej terminálovej relácie.

Pri použití príkazu sattach je potrebné uviesť ID úlohy aj ID job step-u. Napríklad:

sattach 12345.5
   [...output of your job...]
n007:~$ [Ctrl-C]
login01:~$

V tomto príklade je 12345 ID úlohy a 5 je ID job step-u. Po pripojení sa výstup daného job step-u zobrazuje v termináli. Stlačením Ctrl-C sa od job step-u odpojí terminálová relácia. Samotná úloha tým nie je zrušená a môže pokračovať v behu.

Viac informácií je uvedených na man stránke alebo pomocou príkazu sattach --help.


sbcast - presun súboru na lokálny disk uzla

Niekedy môže byť výhodné skopírovať executable na lokálny disk výpočtových uzlov pridelených úlohe namiesto jeho spúšťania priamo zo zdieľaného súborového systému. To môže byť užitočné najmä v prípade veľkých executable alebo pri úlohách, ktoré spúšťajú executable na viacerých uzloch.

Executable je možné pred spustením úlohy skopírovať na výpočtové uzly pomocou príkazu sbcast alebo pomocou príznaku srun --bcast. Následne sa executable spustí z lokálneho disku výpočtového uzla, napríklad z adresára /tmp:

sbcast exe_on_slow_fs /tmp/${USER}_exe_filename
srun /tmp/${USER}_exe_filename

Názov dočasného súboru

Je potrebné zvoliť názov súboru, ktorý nebude kolidovať so súbormi iných používateľov. Odporúča sa preto zahrnúť prihlasovacie meno pomocou premennej $USER.

Pomocou sbcast je možné okrem executable prenášať aj ďalšie súbory, napríklad veľké vstupné súbory alebo zdieľané knižnice. Pri veľkom množstve súborov môže byť výhodné vytvoriť tar archív, preniesť ho pomocou sbcast a následne ho na výpočtových uzloch rozbaliť. Tým sa môže zjednodušiť prenos veľkého množstva jednotlivých súborov.

Viac informácií je uvedených na man stránke alebo pomocou príkazu sbcast --help.


sstat - zobrazenie zdrojov využitéch úlohou

Príkaz sstat umožňuje používateľom získať stavové informácie o momentálne bežiacich úlohách, vrátane detailov o využití CPU, informáciách o taskoch, uzloch, využití pamäte (RSS) a virtuálnej pamäti (VM).

Na skontrolovanie štatistík úlohy použite:

sstat --jobs=<jobid>

Zobrazenie informácií o bežiacej úlohe

sstat --jobs=<jobid>
  JobID         MaxVMSize  MaxVMSizeNode  MaxVMSizeTask  AveVMSize     MaxRSS MaxRSSNode MaxRSSTask     AveRSS MaxPages MaxPagesNode   MaxPagesTask   AvePages     MinCPU MinCPUNode MinCPUTask     AveCPU   NTasks AveCPUFreq ReqCPUFreqMin ReqCPUFreqMax ReqCPUFreqGov ConsumedEnergy  MaxDiskRead MaxDiskReadNode MaxDiskReadTask  AveDiskRead MaxDiskWrite MaxDiskWriteNode MaxDiskWriteTask AveDiskWrite TRESUsageInAve TRESUsageInMax TRESUsageInMaxNode TRESUsageInMaxTask TRESUsageInMin TRESUsageInMinNode TRESUsageInMinTask TRESUsageInTot TRESUsageOutAve TRESUsageOutMax TRESUsageOutMaxNode TRESUsageOutMaxTask TRESUsageOutMin TRESUsageOutMinNode TRESUsageOutMinTask TRESUsageOutTot
  ------------ ---------- -------------- -------------- ---------- ---------- ---------- ---------- ---------- -------- ------------ -------------- ---------- ---------- ---------- ---------- ---------- -------- ---------- ------------- ------------- ------------- -------------- ------------ --------------- --------------- ------------ ------------ ---------------- ---------------- ------------ -------------- -------------- ------------------ ------------------ -------------- ------------------ ------------------ -------------- --------------- --------------- ------------------- ------------------- --------------- ------------------- ------------------- ---------------
  152295.0          2884M           n143              0   2947336K    253704K       n143          0    253704K       11         n143              0         11   00:06:04       n143          0   00:06:04        1     10.35M       Unknown       Unknown       Unknown              0     29006427            n143               0     29006427     11096661             n143                0     11096661 cpu=00:06:04,+ cpu=00:06:04,+ cpu=n143,energy=n+ cpu=00:00:00,fs/d+ cpu=00:06:04,+ cpu=n143,energy=n+ cpu=00:00:00,fs/d+ cpu=00:06:04,+ energy=0,fs/di+ energy=0,fs/di+ energy=n143,fs/dis+           fs/disk=0 energy=0,fs/di+ energy=n143,fs/dis+           fs/disk=0 energy=0,fs/di+

V predvolenom nastavení sstat poskytuje rozsiahly výstup. Na prispôsobenie zobrazovaných metrík použite príznak --format. Príklad niektorých z týchto premenných je uvedený v tabuľke nižšie:

Zobrazenie formátovaných informácií o bežiacej úlohe

sstat --format JobID,NTasks,nodelist,MaxRSS,MaxVMSize,AveRSS,AveVMSize 152295
  JobID          NTasks             Nodelist     MaxRSS  MaxVMSize     AveRSS  AveVMSize
  ------------ -------- -------------------- ---------- ---------- ---------- ----------
  152295.0            1                 n143 183574492K 247315988K    118664K    696216K

Ak sa v úlohe nespustia žiadne kroky pomocou srun, metriky jednotlivých krokov úlohy nebudú k dispozícii. Batch skripty by mali nasledovať túto štruktúru:

#!/bin/bash
#SBATCH ...
#SBATCH ...

module load ... # Set up environment

# launch job steps
srun <command to run> # that would be step 1
srun <command to run> # that would be step 2

Hlavné metriky, ktoré môžu byť užitočné, sú uvedené nižšie.

Premenná Popis
avecpu Priemerný čas CPU všetkých taskov v úlohe.
averss Priemerná veľkosť rezidentnej množiny (RSS) všetkých taskov.
avevmsize Priemerná virtuálna pamäť všetkých taskov v úlohe.
jobid ID úlohy.
maxrss Maximálna veľkosť rezidentnej množiny (RSS) všetkých taskov v úlohe.
maxvsize Maximálna veľkosť virtuálnej pamäte všetkých taskov v úlohe.
ntasks Počet taskov v úlohe.

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


scontrol - administratívny nástroj

Príkaz scontrol je možné použiť na zobrazenie podrobných informácií o uzloch, frontáchh, úlohách, krokoch úloh a konfigurácii. Systémoví administrátori ho môžu použiť aj na vykonanie zmien konfigurácie. Niekoľko príkladov je uvedených nižšie.

Informácie o fronte long
login01:~$ scontrol show partitions long
  PartitionName=long
    AllowGroups=ALL AllowAccounts=ALL AllowQos=ALL
    AllocNodes=ALL Default=NO QoS=N/A
    DefaultTime=4-00:00:00 DisableRootJobs=NO ExclusiveUser=NO GraceTime=0 Hidden=NO
    MaxNodes=1 MaxTime=4-00:00:00 MinNodes=0 LLN=NO MaxCPUsPerNode=UNLIMITED
    Nodes=n[001-140]
    PriorityJobFactor=0 PriorityTier=1 RootOnly=NO ReqResv=NO OverSubscribe=NO
    OverTimeLimit=NONE PreemptMode=OFF
    State=UP TotalCPUs=8960 TotalNodes=140 SelectTypeParameters=NONE
    JobDefaults=(null)
    DefMemPerCPU=4000 MaxMemPerNode=UNLIMITED
    TRES=cpu=8960,mem=35000G,node=140,billing=8960
    TRESBillingWeights=CPU=1.0,Mem=0.256G
Informácie o uzle
login01:~$ scontrol show node n148
  NodeName=n148 Arch=x86_64 CoresPerSocket=32 
    CPUAlloc=1 CPUEfctv=64 CPUTot=64 CPULoad=1.04
    AvailableFeatures=(null)
    ActiveFeatures=(null)
    Gres=gpu:A100-SXM4-40GB:4
    NodeAddr=n148 NodeHostName=n148 Version=22.05.7
    OS=Linux 3.10.0-1160.71.1.el7.x86_64 #1 SMP Tue Jun 28 15:37:28 UTC 2022 
    RealMemory=256000 AllocMem=64000 FreeMem=67242 Sockets=2 Boards=1
    State=MIXED ThreadsPerCore=1 TmpDisk=0 Weight=1 Owner=N/A MCS_label=N/A
    Partitions=gpu 
    BootTime=2023-09-06T10:29:48 SlurmdStartTime=2023-09-18T14:25:33
    LastBusyTime=2023-09-18T14:02:52
    CfgTRES=cpu=64,mem=250G,billing=64,gres/gpu=4
    AllocTRES=cpu=1,mem=62.50G,gres/gpu=1
    CapWatts=n/a
    CurrentWatts=0 AveWatts=0
    ExtSensorsJoules=n/s ExtSensorsWatts=0 ExtSensorsTemp=n/s

Viac informácií nájdete na man stránke alebo pomocou príkazu scontrol --help.

Created by: Marek Štekláč, Marek Štekláč