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
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.