Monitorovanie úloh¶
Monitorovanie úloh v SLURM je nevyhnutné pre pochopenie využitia zdrojov a riešenie problémov s výkonom úloh.
Štatistické metriky bežiacich úloh¶
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, informáciách o 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 --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 váš skript nepoužíva srun, sstat poskytuje informácie o kroku .batch.
Pre metriky jednotlivých krokov pustite každý krok s srun: vaše batch skripty by mali
dodržiavať nasledovný formát:
#!/bin/bash
#SBATCH ...
#SBATCH ...
# set environment up
module load ...
# launch job steps
srun <command to run> # that would be step 1
srun <command to run> # that would be step 2
Hlavné metriky, ktoré si môžete chcieť prejsť, sú uvedené nižšie.
| Premenná | Popis |
|---|---|
avecpu |
Priemerný čas CPU všetkých úkonov v úlohe. |
averss |
Priemerná veľkosť rezidentnej množiny (RSS) všetkých úkonov. |
avevmsize |
Priemerná virtuálna pamäť všetkých úkonov v úlohe. |
jobid |
ID úlohy. |
maxrss |
Maximálna veľkosť rezidentnej množiny (RSS) všetkých úkonov v úlohe. |
maxvsize |
Maximálna veľkosť virtuálnej pamäte všetkých úkonov v úlohe. |
ntasks |
Počet úkonov v úlohe. |
Viac informácií nájdete v dokumentácii sstat alebo zadajte sstat --help.
Monitorovanie využitia CPU bežiacich úloh¶
Po spustení úlohy vám bude poskytnuté číslo úlohy. Vracia sa okamžite po odoslaní úlohy. Napríklad:
sbatch my_script.sh
Submitted batch job 38678
V príklade vyššie je "38678" naše číslo úlohy. Ak ste to číslo nestihli zapísať, existujú ďalšie spôsoby, ako ho nájsť. Jedným je použitie ;squeue`:
squeue -u user1
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
38678 short myjob.sh user1 R 3:35 1 n079
V príklade vyššie špecifikujeme filtre používateľa -u, čím obmedzíme
output na úlohy daného používateľa.
Opäť vidíme JOBID 38678. Vidíme aj stĺpec NODELIST;, ktorý nám ukazuje, že
úloha je spustená na uzlen079`. Táto informácia je kľúčová pre monitorovanie výkonu úlohy.
Keď viete, na akom uzle (uzloch) vaša úloha beží, môžete sa k nemu priamo
pripojiť pomocou SSH. Napríklad, ak vaša úloha beží na n079:
ssh n079
Najpriamejší spôsob monitorovania bežiacej úlohy je prihlásenie sa na príslušný uzol pomocou ssh
a použitie rôznych nástrojov na monitorovanie kľúčových ukazovateľov výkonu, ako sú zaťaženie,
využitie pamäte, správanie sa vlákien atď.
Užitočné príkazové riadkové nástroje¶
Mnohé príkazy sú prístupné priamo zo shellu a niektoré ďalšie sú poskytované ako inštalácie modulových súborov. Niektoré bežne používané príkazy sú:
top- zobrazuje zoznam bežiacich procesov so zhrnutím využitia CPU, využitia pamäte atď.free- zobrazuje využitie pamäte. Pridajte-gna zobrazenie využitia pamäte v gigabytoch.vmstat- zobrazuje štatistiky využitia pamätelsof- "list open files" (vypísať otvorené súbory) je užitočný na zobrazenie otvorených súborov, ktoré sa čítajú a/alebo zapisujúuptime- zobrazuje zaťaženie systému pre 1-, 5- a 15-minútové priemeryps -e- zobrazuje aktívne bežiace procesypstree- zobrazuje schématický strom procesov
Každý z vyššie uvedených príkazov možno vypísať ako je, alebo s rôznymi modifikáciami.
Iné príkazy, ako je grep, môžu byť užitočné na filtrovanie výstupu príkazov a izoláciu žiadaných položiek.
Možnosti použitia týchto príkazov sú prakticky neobmedzené a tento dokument nemože pokrývať všetky.
Možnosti príkazov ktoréhokoľvek z nich môžete zistiť použitím príkazu man <command name>. Nižšie je uvedených
niekoľko užitočných príkladov, ktoré sa môžu hodiť.
Príkaz uptime a zaťaženie uzla
Príkaz uptime sa dá použiť na odhad zaťaženia výpočtového uzla.
Hodnota load average (priemeru zaťaženia) približne zodpovedá počtu procesov, ktoré sú aktívne bežiace alebo čakajú na čas CPU.
Všeobecné pravidlo: ak je load average blízko počtu CPU jadier
dostupných na uzle, uzol je plne využitý. Napríklad na uzle
so 64 CPU jadrami naznačuje load average blízko 64, že všetky jadrá
sú obsadené.
ssh n079
uptime
13:56:51 up 150 days, 22:48, 1 user, load average: 63.8, 64.1, 62.6
V príklade vyššie sú load average pre 1, 5 a 15 minút blízko počtu CPU jadier na uzle, čo naznačuje, že uzol je plne využitý.
Príkaz top a využitie CPU podľa procesov
Príkaz top je obzvlášť užitočný, keď sa snažíte zistiť, koľko procesorov vaše úlohy používajú.
Napríklad, ak vidíte, že na uzle beží viacero úloh (vrátane vašej), a kontrola zaťaženia ukazuje, že uzol je príliš zaťažený.
Ako môžete zistiť či ide o váš proces, alebo niekoho iného? Príkaz "top" pomáha rozložiť využitie CPU podľa procesov:
ssh n079
top
top - 14:01:15 up 150 days, 22:43, 1 user, load average: 63.8, 64.1, 62.6
Tasks: 716 total, 65 running, 651 sleeping, 0 stopped, 0 zombie
%Cpu(s): 99.1 us, 0.9 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 26379443+total, 21490476+free, 36416432 used, 12473228 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 21900358+avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2080 user1 20 0 10.2g 427328 85664 R 100.0 0.2 11:55.89 vasp_std
2081 user1 20 0 10.2g 404920 64316 R 100.0 0.2 11:55.70 vasp_std
2082 user1 20 0 10.2g 390936 57336 R 100.0 0.1 11:56.08 vasp_std
2083 user1 20 0 10.2g 415048 78996 R 100.0 0.2 11:55.64 vasp_std
...
2144 user1 20 0 10.2g 388968 84112 R 99.0 0.1 13:19.48 vasp_std
365 root 20 0 0 0 0 S 0.3 0.0 0:07.53 kworker/8:1
373 root 20 0 0 0 0 S 0.3 0.0 0:07.10 kworker/5:1
2718 root 20 0 173692 3012 1624 R 0.3 0.0 0:00.74 top
Obmedzený SSH prístup
Pozor, priamy prístum máte len k uzlom, na ktorých vaša aplikácia beží. Keď úloha skončí, vaše `ssh; spojenie sa tiež ukončí.
Štatistické metriky minulých úloh¶
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 - accounting informácie o úlohách¶
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%)