Skoči na vsebino

Izpis informacij o gruči

Slurm nudi vrsto ukazov za delo z gručo. V tem razdelku si bomo ogledali nekaj primerov uporabe ukazov sinfo, squeue, scontrol in sacct, ki služijo izpisu uporabnih informacij o konfiguraciji in stanju gruče. Podrobne informacijo o vseh ukazih, ki jih podpira Slurm, najdete na domači strani projekta Slurm.

Ukaz sinfo

Ukaz izpiše informacije o stanju gruče, particij (delov gruče) in vozlišč ter računske kapacitete, ki so na voljo. Na voljo je množica stikal, s katerimi lahko lahko bolj natančno določimo informacije, ki jih želimo izpisati o gruči (dokumentacija).

Izpis splošnih informacij o konfiguraciji gruče:

$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
all*         up 2-00:00:00      7   drng wn[105,108,110,127,143,161-162]
all*         up 2-00:00:00      1  drain wn051
all*         up 2-00:00:00      2   resv wn[111-112]
all*         up 2-00:00:00     48    mix wn[052,064-065,101-104,113-124,128-132,134-142,144-148,150-153,155-160]
all*         up 2-00:00:00     16  alloc wn[012-016,053,061-062,106-107,109,125-126,133,149,154]
long         up 14-00:00:0      2   drng wn[161-162]
long         up 14-00:00:0      1  drain wn051
long         up 14-00:00:0     10    mix wn[052,151-153,155-160]
long         up 14-00:00:0      2  alloc wn[053,154]
gpu          up 4-00:00:00      1 drain* wn224
gpu          up 4-00:00:00      2  drain gwn03,wn221
gpu          up 4-00:00:00     24    mix gwn[01-02,04-07],wn[201,203-211,214-218,220,222-223]
gpu          up 4-00:00:00      4  alloc wn[202,212-213,219]
sinfo

V zgornjem izpisu lahko vidimo katere logične particije so na voljo, njihovo stanje, časovno omejitev poslov na posamezni particiji in sezname računskih vozlišč, ki jim pripadajo. Izpis lahko z ustreznimi stikali poljubno prilagajamo, glede na to, kaj nas zanima.

Izpis podrobnejših informacij po posameznih računskih vozliščih:

$ sinfo --Node --long
Wed Oct 30 11:15:39 2024
NODELIST   NODES PARTITION       STATE CPUS    S:C:T MEMORY TMP_DISK WEIGHT AVAIL_FE REASON              
gwn01          1       gpu       mixed 64     2:16:2 256000        0      1 amd,geno none                
gwn02          1       gpu       mixed 64     2:16:2 256000        0      1 amd,geno none                
gwn03          1       gpu     drained 64     2:16:2 256000        0      1 amd,geno maint               
gwn04          1       gpu       mixed 64     2:16:2 256000        0      1 amd,geno none                
gwn05          1       gpu       mixed 64     2:16:2 256000        0      1 amd,geno none                
gwn06          1       gpu       mixed 64     2:16:2 256000        0      1 amd,geno none                
gwn07          1       gpu       mixed 64     2:16:2 256000        0      1 amd,geno none                
wn012          1      all*   allocated 16      1:8:2 336000        0      1 amd,rome none                
wn013          1      all*   allocated 16      1:8:2 336000        0      1 amd,rome none                
wn014          1      all*   allocated 16      1:8:2 336000        0      1 amd,rome none                
wn015          1      all*   allocated 16      1:8:2 320000        0      1 amd,rome none                
wn016          1      all*       mixed 16      1:8:2 336000        0      1 amd,rome none                
...
sinfo --Node --long

Zgornji izpis nam za vsako računsko vozlišče v gruči pove: kateri particiji pripada (PARTITION), kakšno je njegovo stanje (STATE), število jeder (CPUS), število procesorskih rež (S), procesorskih jeder v reži (C), strojnih niti (T), količino sistemskega pomnilnika (MEMORY) in morebitne značilke (AVAIL_FEATURES), ki so pripisane danemu vozlišču (npr. tip procesorja, prisotnost grafičnih procesnih enot, itd.).

Deli gruče so lahko vnaprej rezervirani zaradi različnih razlogov (vzdrževalna dela, delavnice, projekti). Primer izpisa aktivnih rezervacij na gruči Arnes:

$ sinfo --reservation
RESV_NAME     STATE           START_TIME             END_TIME     DURATION  NODELIST
fri          ACTIVE  2024-10-10T13:22:20  2025-02-21T08:00:00  133-18:37:40  wn[111-112]
sinfo --reservation

Zgornji izpis nam izpiše morebitne aktivne rezervacije na gruči, obdobje trajanja rezervacije in seznam vozlišč, ki so del rezervacije. Posamezni rezervaciji je pripisana skupina uporabnikov, ki jo lahko uporablja in se tako izogne čakanju na zaključek poslov uporabnikov, ki rezervacije nimajo.

Ukaz squeue

Poleg konfiguracije gruče nas seveda zanima tudi stanje vrste s posli. Z ukazom squeue lahko poizvedujemo po poslih, ki so trenutno v čakalni vrsti, tečejo ali pa so se že uspešno oziroma neuspešno zaključili (dokumentacija).

Izpis trenutnega stanja vrste s posli:

$ squeue
JOBID    PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
52930230       all micmodel  zkolenc PD       0:00      1 (Resources)
52934494       all 13502482   dn9134 PD       0:00      1 (Priority)
52934493       all 38884188   dn9134 PD       0:00      1 (Priority)
52934492       all 29829442   dn9134 PD       0:00      1 (Priority)
52934491       all 18316019   dn9134 PD       0:00      1 (Priority)
52934490       all 68789192   dn9134 PD       0:00      1 (Priority)
52934489       all 50851613   dn9134 PD       0:00      1 (Priority)
52934488       all 19730810   dn9134 PD       0:00      1 (Priority)
52934487       all 34141707   dn9134 PD       0:00      1 (Priority)
52934486       all 31707664   dn9134 PD       0:00      1 (Priority)
52934485       all 62596266   dn9134 PD       0:00      1 (Priority)
52934484       all 92148791   dn9134 PD       0:00      1 (Priority)
52934483       all 50552286   dn9134 PD       0:00      1 (Priority)
...
squeue

Iz izpisa lahko razberemo identifikator posameznega posla, particijo na kateri teče, ime posla, kateri uporabnik ga je zagnal ter trenutno stanje posla.

Nekaj pomembnejših stanj posla

  • PD (angl. PenDing) - posel čaka v vrsti,
  • R (angl. Running) - posel se izvaja,
  • CG (angl. CompletinG) - posel se zaključuje,
  • CD (angl. CompleteD) - posel je zaključen,
  • F (angl. Failed) - napaka pri izvajanju,
  • S (angl. Suspended) - izvajanje posla je začasno ustavljeno,
  • CA (angl. CAnceled) - posel je preklican,
  • TO (angl. TimeOut) - posel je prekinjen, potekla je časovna omejitev.

Izpis nam vrne tudi informacijo o skupnem času izvajanja posla ter seznam vozlišč, na katerih se posel izvaja, oziroma razlog, zakaj se posel še ni začel izvajati.

Ponavadi nas najbolj zanima stanje poslov, ki smo jih zagnali sami. Izpis lahko omejimo na posle izbranega uporabnika s pomočjo stikala --user.

Primer izpisa poslov, ki so last uporabnika prdatlas006:

$ squeue --user=prdatlas006
JOBID    PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
52930355       all data22_1 prdatlas PD       0:00      1 (Priority)
52930498       all data23_1 prdatlas PD       0:00      1 (Priority)
52930487       all data23_1 prdatlas PD       0:00      1 (Priority)
52930459       all data22_1 prdatlas PD       0:00      1 (Priority)
52930457       all data22_1 prdatlas PD       0:00      1 (Priority)
52930456       all data22_1 prdatlas PD       0:00      1 (Priority)
52930455       all data22_1 prdatlas PD       0:00      1 (Priority)
52930454       all data22_1 prdatlas PD       0:00      1 (Priority)
52930453       all data22_1 prdatlas PD       0:00      1 (Priority)
...
squeue --user=prdatlas006

Poleg tega lahko na primer omejimo izpis samo na tiste posle, ki so v določenem stanju. To storimo s pomočjo stikala --states.

Primer izpisa vseh poslov, ki trenutno čakajo na izvajanje (PD):

$ squeue --states=PD
JOBID    PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
52930230       all micmodel  zkolenc PD       0:00      1 (Resources)
52933624       all 34318835   dn9134 PD       0:00      1 (Priority)
52933625       all 37524431   dn9134 PD       0:00      1 (Priority)
52933626       all 19299379   dn9134 PD       0:00      1 (Priority)
52933627       all 63522836   dn9134 PD       0:00      1 (Priority)
52933628       all 20181126   dn9134 PD       0:00      1 (Priority)
52933629       all 23600582   dn9134 PD       0:00      1 (Priority)
52933630       all 40800209   dn9134 PD       0:00      1 (Priority)
52933631       all 29293675   dn9134 PD       0:00      1 (Priority)
52933632       all 11208460   dn9134 PD       0:00      1 (Priority)
52933633       all 25627117   dn9134 PD       0:00      1 (Priority)
52933634       all 77397217   dn9134 PD       0:00      1 (Priority)
52933635       all 34206014   dn9134 PD       0:00      1 (Priority)
...
squeue --states=PD

Ukaz scontrol

Včasih želimo še bolj podrobne informacije o neki particiji, vozlišču ali poslu. Dobimo jih z ukazom scontrol (dokumentacija). Spodaj je navedenih nekaj primerov uporabe tega ukaza.

Primer izpisa podrobnejših informacij o posamezni particiji:

$ scontrol show partition all
PartitionName=all
    AllowGroups=ALL AllowAccounts=ALL AllowQos=ALL
    AllocNodes=ALL Default=YES QoS=N/A
    DefaultTime=00:30:00 DisableRootJobs=NO ExclusiveUser=NO GraceTime=0 Hidden=NO
    MaxNodes=UNLIMITED MaxTime=2-00:00:00 MinNodes=0 LLN=NO MaxCPUsPerNode=UNLIMITED
    Nodes=wn[012-016,051-053,061-062,064-065,101-162]
    PriorityJobFactor=1 PriorityTier=1 RootOnly=NO ReqResv=NO OverSubscribe=NO
    OverTimeLimit=NONE PreemptMode=OFF
    State=UP TotalCPUs=8272 TotalNodes=74 SelectTypeParameters=NONE
    JobDefaults=(null)
    DefMemPerCPU=2000 MaxMemPerNode=UNLIMITED
    TRES=cpu=8272,mem=21630000M,node=74,billing=10561
    TRESBillingWeights=CPU=1.0,Mem=0.5G
scontrol show partition all

Primer izpisa podrobnejših informacij o računskem vozlišču gwn01:

$ scontrol show node gwn01
NodeName=gwn01 Arch=x86_64 CoresPerSocket=16 
    CPUAlloc=32 CPUEfctv=64 CPUTot=64 CPULoad=31.38
    AvailableFeatures=amd,genoa,gpu,h100
    ActiveFeatures=amd,genoa,gpu,h100
    Gres=gpu:2
    NodeAddr=gwn01 NodeHostName=gwn01 Version=23.11.6
    OS=Linux 4.18.0-553.22.1.el8_10.x86_64 #1 SMP Tue Sep 24 05:16:59 EDT 2024 
    RealMemory=256000 AllocMem=32768 FreeMem=232983 Sockets=2 Boards=1
    State=MIXED ThreadsPerCore=2 TmpDisk=0 Weight=1 Owner=N/A MCS_label=N/A
    Partitions=gpu 
    BootTime=2024-10-22T09:15:24 SlurmdStartTime=2024-10-22T09:15:53
    LastBusyTime=2024-10-30T10:06:03
    CfgTRES=cpu=64,mem=250G,billing=125,gres/gpu=2
    AllocTRES=cpu=32,mem=32G,gres/gpu=2
    CapWatts=n/a
    CurrentWatts=0 AveWatts=0
    ExtSensorsJoules=n/s ExtSensorsWatts=0 ExtSensorsTemp=n/s
scontrol show node gwn01  

Primer izpisa podrobnejših informacij o poslu z identifikatorjem 52930355:

$ scontrol show job 387489
JobId=52930355 JobName=data22_13p6TeV_
    UserId=prdatlas006(21006) GroupId=prdatlas(21000) MCS_label=N/A
    Priority=240 Nice=21 Account=prdatlas QOS=normal
    JobState=PENDING Reason=Priority Dependency=(null)
    Requeue=0 Restarts=0 BatchFlag=1 Reboot=0 ExitCode=0:0
    RunTime=00:00:00 TimeLimit=13:42:00 TimeMin=N/A
    SubmitTime=2024-10-30T09:58:15 EligibleTime=2024-10-30T09:58:15
    AccrueTime=2024-10-30T09:58:15
    StartTime=Unknown EndTime=Unknown Deadline=N/A
    SuspendTime=None SecsPreSuspend=0 LastSchedEval=2024-10-30T11:38:18 Scheduler=Backfill:*
    Partition=all AllocNode:Sid=hpc:260900
    ReqNodeList=(null) ExcNodeList=(null)
    NodeList=
    NumNodes=1 NumCPUs=8 NumTasks=8 CPUs/Task=1 ReqB:S:C:T=0:0:*:*
    TRES=cpu=8,mem=20496M,node=1,billing=10
    Socks/Node=* NtasksPerN:B:S:C=8:0:*:* CoreSpec=*
    MinCPUsNode=8 MinMemoryCPU=2562M MinTmpDiskNode=0
    Features=(null) DelayBoot=00:00:00
    OverSubscribe=OK Contiguous=0 Licenses=(null) Network=(null)
    Command=/tmp/SLURM_job_script.GZhe0X
    WorkDir=/d/arc/session_ssd/9VhNDmIUKQ6nTkIgJmuwkNOnABFKDmABFKDmFhFKDmXsuLDm9qnwBn
    StdErr=/d/arc/session_ssd/9VhNDmIUKQ6nTkIgJmuwkNOnABFKDmABFKDmFhFKDmXsuLDm9qnwBn.comment
    StdIn=/dev/null
    StdOut=/d/arc/session_ssd/9VhNDmIUKQ6nTkIgJmuwkNOnABFKDmABFKDmFhFKDmXsuLDm9qnwBn.comment
    Power=
scontrol show job 52930355

Lahko tudi preverimo, kateri uporabniki imajo dovoljenje za uporabo rezerviranih vozlišč.

$ scontrol show reservation
ReservationName=fri StartTime=2024-10-10T13:22:20 EndTime=2025-02-21T08:00:00 Duration=133-18:37:40
    Nodes=wn[111-112] NodeCnt=2 CoreCnt=128 Features=(null) PartitionName=(null) Flags=IGNORE_JOBS,SPEC_NODES
    TRES=cpu=256
    Users=bcesnik,ma2144,lb1684,ab93070,nb91605,ac7723,nc04512,dd25660,ad8146,ug68213,sg5783,jg5045,ag18201,rh16274,vh82826,ii7102,hj3103,gk31332,sk0506,lk81496,bk8638,tm51226,am93067,nm16356,hm8067,lm63759,pm13167,mm5129,jo48340,mp04643,kr15575,gr2399,pr3601,js71723,ns4749,as0386,as8534,ks20412,tt59968,ft25802,zu0476,kv44391,mv74130,av22431,pz77679,nb9613,bb3110,tb5882,sc46604,mc7753,nc91840,je31875,lg7891,eh3501,mj4175,lj15233,ak66653,lk7075,mk5098,nk46668,tk97810,bk5254,ml70458,jl5985,jm9220,dm50679,kp69350,lp6573,ar3642,nr88276,jr7486,sr6111,ds33951,ms36332,ts92284,ls7424,at7379,tt4657,nu24080,pz28690,dz9232,dsluga,ratkop,patriciob,urosl,bb36988,ml2541,tc0588,ms6035 Groups=(null) Accounts=(null) Licenses=(null) State=ACTIVE BurstBuffer=(null) Watts=n/a
    MaxStartDelay=(null)
scontrol show reservation

Ukaz sacct

Z ukazom sacct lahko izvemo več podatkov o zaključenih poslih in poslih v izvajanju.

Na primer, preverimo lahko stanje vseh svojih nalog pognanih v zadnjih treh dnevih.

$ sacct --starttime $(date -d '3 day ago' +%D-%R) --format JobID,JobName,Elapsed,State,ExitCode
JobID           JobName    Elapsed      State ExitCode 
------------ ---------- ---------- ---------- -------- 
52825111     SNNResNet+ 2-02:00:44    RUNNING      0:0 
52825111.ba+      batch 2-02:00:44    RUNNING      0:0 
52825111.ex+     extern 2-02:00:44    RUNNING      0:0 
52825111.0    apptainer 2-02:00:43    RUNNING      0:0 
52825135     test_steps   00:05:05  COMPLETED      0:0 
52825135.ba+      batch   00:05:05  COMPLETED      0:0 
52825135.ex+     extern   00:05:05  COMPLETED      0:0 
52825135.0     hostname   00:00:00  COMPLETED      0:0 
52825135.1     hostname   00:00:00  COMPLETED      0:0 
52825135.2     hostname   00:00:00  COMPLETED      0:0 
sacct --starttime $(date -d '3 day ago' +%D-%R) --format JobID,JobName,Elapsed,State,ExitCode

Lahko poizvemo tudi o podrobnostih za izbrano nalogo.

$ sacct --job=52825111 --format JobID,JobName,Elapsed,State,ExitCode
JobID           JobName    Elapsed      State ExitCode 
------------ ---------- ---------- ---------- -------- 
52825111     SNNResNet+ 2-01:59:22    RUNNING      0:0 
52825111.ba+      batch 2-01:59:22    RUNNING      0:0 
52825111.ex+     extern 2-01:59:22    RUNNING      0:0 
52825111.0    apptainer 2-01:59:21    RUNNING      0:0 
sacct --job=52825111 --format JobID,JobName,Elapsed,State,ExitCode  

Vaja

Na povezavi najdete naloge za utrditev znanja o ukazih za poizvedovanje po informacijah o gruči.