Slurm resursihaldur

Allikas: Kuutõrvaja
Redaktsioon seisuga 29. veebruar 2016, kell 17:38 kasutajalt Jj (arutelu | kaastöö) (Tööde haldus)

Slurm (Simple Linux Utility for Resource Management) on arvutiklastri jaoks mõeldud rakendus mille ülesandeks on jagada etteantud töid mööda arvutiresursse laiali, monitoorida töötavaid protsesse ja pidada tööde üle järjekorda.

Üldiselt näeb slurmi arhidektuur välja sarnane allolevale pildile. On keskne haldusserver, kuhu kasutajad logivad ja käske käivitavad ning terve hulk arvutusnodesid-servereid, milledele slurm töid edastab.

SlurmArchitecture.gif

Tööde käivitamine

Saadame slurmi töö mis käivitatakse neli korda ja mis väljastab masina kerneli versiooni.

# srun --ntasks=4 uname -a
srun: job 561700 queued and waiting for resources
srun: job 561700 has been allocated resources
idu08
idu08
idu08
idu08

Või soovides käivitada lihtsalt kokku 24 tööd kõigil nodedel ja ja lasta slurmil ise nad jagada laiali

# srun --ntasks=24 --partition=gpu hostname

Tasub muidugi tähele panna, et srun sobib peamiselt testimiseks või väga lihtsateks töödeks ning keerukamatel kasutusjuhtudel tuleks kasutada käske salloc või sbatch Põhimõtteliselt sama esimene näide skriptiga tehtuna, tekitame parallel_uname.sh

 #!/bin/bash
 #SBATCH –J test (1)
 #SBATCH –N=4 (2)
 #SBATCH --ntasks-per-node=4 (3)
 #SBATCH --output=kontroll.out (4)
 uname -a (5)
  1. Seadistab töö nime mida näeb squeue käsuga
  2. Määrab mitut füüsilist serverit kasutatakse
  3. Määrab, mitu ülesannet ühel serveril käivitatakse
  4. Väljundfaili nimi – programm ei edastada väljundit kohe ekraanile vaid faili.
  5. käsk, mida käivitatakse. Antud juhul uname -a

Paneme käima

# sbatch parallel_uname.sh
Submitted batch job 65918

Ja väljund

# cat slurm-65918.out 
Linux stage59 2.6.32-431.17.1.el6.x86_64 #1 SMP Wed May 7 14:14:17 CDT 2014 x86_64 x86_64 x86_64 GNU/Linux

Tööde haldus

Tööde nimekirja näeb

# squeue 
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
            561555       gpu   python hpc_tane  R 4-22:47:46      1 idu41
            561544       gpu   punct2  ottokar  R 5-02:52:19      1 idu40
            561538       gpu   punct2  ottokar  R 5-03:06:09      1 idu39
            561528       gpu train_HO hpc_tane  R 6-07:54:01      1 idu40
            561490       gpu train_HO hpc_tane  R 7-06:15:40      1 idu39
            561795      long EUWEST_6    elmer  R   10:09:00      1 idu30
            561802      long EESTI1_7    elmer  R    4:01:17      1 idu02
            561801      long EESTI1_4    elmer  R    4:01:18      1 idu01
            561800      long EUWEST_7    elmer  R    4:01:19      1 idu12
            561794      long SLOVAK_6    elmer  R   10:13:23      1 idu06
            561793      long EESTI1_2    elmer  R   16:04:42      1 idu05
            561792      long EESTI1_6    elmer  R   16:09:14      1 idu03
            561647      long     bash  hpc_kuz  R 3-19:32:13      1 idu04
            561810      long run_R-1- hpc_eero  R    1:58:03      1 idu34
            561811      long run_R-1- hpc_eero  R    1:58:03      1 idu31
            561813      long run_R-1- hpc_eero  R    1:58:03      1 idu32
            561809      long run_R-1- hpc_eero  R    2:08:03      1 idu29
            561806      long run_R-1- hpc_eero  R    2:18:03      1 idu33
            561808      long run_R-1- hpc_eero  R    2:18:03      1 idu35

idu seisu vaatamiseks juurest või suvalisest idust anda käsk

# scontrol show node idu38
NodeName=idu38 Arch=x86_64 CoresPerSocket=6
   CPUAlloc=8 CPUErr=0 CPUTot=12 CPULoad=5.82 Features=K20
   Gres=gpu:2
   NodeAddr=idu38 NodeHostName=idu38
   OS=Linux RealMemory=48000 AllocMem=18432 Sockets=2 Boards=1
   State=MIXED ThreadsPerCore=1 TmpDisk=200000 Weight=100
   BootTime=2015-01-21T00:23:33 SlurmdStartTime=2015-01-21T00:24:09
   CurrentWatts=0 LowestJoules=0 ConsumedJoules=0
   ExtSensorsJoules=n/s ExtSensorsWatts=0 ExtSensorsTemp=n/ s