Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Za raspoređivanje i upravljanje poslovima na računalnom klasteru Isabella koristi se SGE (engl. Sun Son of Grid Engine), klasterski sustav za upravljanje poslovima (engl. job management system, JMS). U ovom dokumentu opisano je korištenje SGE verzije 8.

...

Najjednostavniji oblik SGE poslova su serijski poslovi koji zahtijevaju samo jedan procesor za izvođenje. Za njih obično nije potrebno navoditi nikakve posebne parametre, nego se samo navodi ime programa.

Primjeri korištenja:

  1.  Primjer skripte bez dodatnih parametara

    Code Block
    languagebash
    #!/bin/bash 
    
    date


  2. Primjer jednostavne skripte s parametrima

    Code Block
    languagebash
    #!/bin/bash 
    
    #$ -N Date_SGE_script 
    #$ -o Date_SGE.out 
    #$ -e Date_SGE.err 
    
    date


  3. Primjer izvođenja programa iz trenutnog direktorija

    Code Block
    languagebash
    titlemoj_program.sge
    #!/bin/bash
    
    #$ -N mojprog
    #$ -P local
    #$ -o mojprog.out
    #$ -e mojprog.err
    #$ -cwd
    
    mojprog


...

Code Block
languagetext
#$ -pe <tip_paralelnog_posla> <N>,[<Ni>,...]<S>-<E>,[<Si>-<Ei>,]

Primjeri korištenja:

  1. Posao za izvođenje zahtijeva 14 procesorskih jezgara:

    Code Block
    #$ -pe *mpi 14


  2. Broj dodijeljenih procesorskih jezgara može biti između 2 i 4:

    Code Block
    #$ -pe *mpi 2-4


  3. Broj dodijeljenih procesorskih jezgara može biti 5 ili 10:

    Code Block
    #$ -pe *mpi 5,10


  4. Broj dodijeljenih procesorskih jezgara može biti 1 ili između 2 i 4:

    Code Block
    #$ -pe *mpi 1,2-4


...

Samo pokretanje paralelnih poslova je specifično jer postoje alati za pokretanje podnaslova (npr. mpirun) koji sami obavljaju raspoređivanje podposlova po čvorovima. Kada SGE dodijeli čvorove paralelnom poslu, popis čvorova spremi u datoteku $TMPDIR/machines koja se unutar skripte za opis posla prenosi kao parametar paralelnim poslovima (npr. mpirun, mpiexec, pvm...).

Primjer startne skripte za pokretanje jedne vrste paralelnog posla:

...

Vrijednost <početak> je identifikator prvog zadatka, <kraj> identifikator posljednjeg zadatka, a <korak> vrijednost za koju se uvećava svaki sljedeći identifikator između <početak> i <kraj>. SGE sprema identifikator svakog zadatka u varijablu $SGE_TASK_ID, pomoću koje korisnici mogu dodijeliti različite parametre pojedinom zadatku. Zadaci mogu biti serijski ili paralelni poslovi.

Primjeri korištenja

  1. Primjer skripte za pokretanje polja poslova od 10 serijskih poslova:

    Code Block
    languagebash
    #!/bin/bash
    
    #$ -N job_array_serial
    #$ -cwd
    #$ -o output/
    #$ -j y
    #$ -t 1-10
    
    ./starSeeker starCluster.$SGE_TASK_ID


  2. Primjer skripte za pokretanje polja poslova od 10 paralelnih poslova:

    Code Block
    languagebash
    #!/bin/bash
    
    #$ -N job_array_parallel
    #$ -cwd
    #$ -o output/
    #$ -j y
    #$ -t 1-10
    
    mpiexec -machinefile $TMPDIR/machines ./starseeker starCluster.$SGE_TASK_ID


...

Code Block
languagetext
Your "qrsh" request could not be scheduled, try again later.

Primjeri korištenja

  1. Izravan pristup do komandne linije testnog čvora:

    Code Block
    languagetext
    qrsh


  2. Interaktivno izvođenje naredbe

    Code Block
    languagetext
    qrsh /home/user/moja_skripta


  3. Interaktivno izvođenje aplikacije s grafičkim sučeljem

    Code Block
    languagetext
    qrsh -DISPLAY=10.1.1.1:0.0 <moja_skripta>


...

Warning

Privremeni direktorij na /scratch disku se briše automatski po završetku izvršavanja posla.

Primjeri korištenja:

  1. Primjer jednostavnog korištenja $TMPDIR varijable:

    Code Block
    languagebash
    #!/bin/bash 
    
    #$ -N scratch_1 
    #$ -cwd 
    #$ -o output/scratch.out 
    #$ -j y
    #$ -l scratch=50 
    
    cd $TMPDIR 
    pwd > test 
    cp test $SGE_O_WORKDIR


  2. Primjer kopiranja podataka na scratch disk:

    Code Block
    languagebash
    #!/bin/bash 
    
    #$ -N scratch_2 
    #$ -cwd 
    #$ -o output/scratch.out 
    #$ -j y
    #$ -l scratch=50 
    
    mkdir -p $TMPDIR/data 
    cp -r $HOME/data/* $TMPDIR/data 
    
    python3.5 main.py $TMPDIR/data


Ukoliko privremeni podaci premašuju 500 GB potrebno je koristiti /shared. Za razliku od scratch-a, direktorij na shared-u je potrebno ručno kreirati i nema automatskog uklanjanja direktorija.

Primjer korištenja:

Code Block
languagebash
#!/bin/bash 

#$ -N shared
#$ -cwd 
#$ -o output/shared.out 
#$ -j y 

mkdir -p /shared/$USER/$TMPDIR
cd /shared/$USER/$TMPDIR

pwd > test
cp test $SGE_O_WORKDIR

...

Prilikom pokretanja poslova korisnik može detaljnije opisati koji uvjeti trebaju biti ispunjeni za posao. Primjerice, moguće je zahtijevati samo određenu arhitekturu radnog čvora, količinu memorije ili vrijeme izvršavanja. Navođenje potrebnih resursa omogućava bolje raspoređivanje poslova, a poslovima daje veći prioritet (vidi LINKviše na stranici Prioriteti na Isabelli).

Potrebni resursi se navode pomoću parametra -l:

...

Info

Vrijednosti resursa definirane u startnoj skripti posla postavljaju se po procesu. Na primjer, ukoliko korisnik na jednom čvoru zahtijeva 3 procesorske jezgre, vrijednosti svih zatraženih resursa biti će pomnožene s 3.

Primjeri korištenja:

  1. Primjer posla koji zahtijeva 20 CPU jezgara i 10 GB radne memorije po procesu (poslu će ukupno biti dodijeljeno 200 GB radne memorije):

    Code Block
    #$ -pe *mpi 20
    #$ -l memory=10


  2. Posao zahtijeva 100 GB prostora na scratchu:

    Code Block
    #$ -pe *mpisingle 4
    #$ -l scratch=25


...

Popis dostupnih redova poslova na Isabelli može se pronaći na ???Redovi poslova i paralelne okoline???.

Obavijesti o stanju posla

...

  • b - početak izvođenja
  • a - greška u izvođenju
  • e - završetak izvođenja
  • n - ne slati obavijesti (pretpostavljena opcija)

Primjer korištenja:

Code Block
languagetext
#$ -m ae
#$ -M moj@mail.com

...

Opcije naredbe qstat je moguće kombinirati što je naročito bitno kada je potrebno filtrirati kroz nekoliko stotina poslova.

Primjeri korištenja:

  1. Prikaz svih poslova u redu čekanja

    Code Block
    $ qstat -u "*" -s p


  2. Prikaz poslova svih korisnika koji se trenutno izvršavaju i zahtijevali su paralelnu okolinu a16-mpi

    Code Block
    $ qstat -u "*" -s r -pe a16-mpi


  3. Prikaz svih poslova i čvorova korisnika pero

    Code Block
    $ qstat –s r –f –u pero


  4. Prikaz svi poslova koji se trenutno izvršavaju na čvorovima s grafičkim procesorima:

    Code Block
    $ qstat –u "*" -q gpu.*.q


...

Code Block
-j <ID_posla> : detaljan opis pojedinih poslova
-h <adresa_čvora> : statistike za pojedine čvorove
-q <ime_reda> : statistike za pojedine redove
-o <ime_korisnika> : statistike za pojedine korisnike
-pe <ime_paralelne_okoline> : statistike za pojedine paralelne okoline
-slots <broj_procesora> : statistike za poslove za određeni broj procesora
-P <projekt> : prikaz sažetka potrošnje definiranog projekta

Primjeri korištenja:

  1. Detaljne informacije o svim poslovima izvršenim na klasteru (oprez: velika količina podataka):

    Code Block
    $ qacct -j


  2. Prikaz informacija o svim poslovima definiranog korisnika:

    Code Block
    $ qacct -j -o <korisnik>

    Prikaz sažetka potrošnje računalnih resursa definiranog korisnika (ako se ne definira <korisnik>, prikazuju se podaci za sve korisnike):

    Code Block
    $ qacct -o <korisnik>


  3. Prikaz informacija o svim poslovima za definirani projekt:

    Code Block
    $ qacct -j -P <projekt>

    Prikaz sažetka potrošnje definiranog projekta (ako se ne definira <projekt>, prikazuju se podaci za sve projekte):

    Code Block
    $ qacct -P <projekt>


Šalabahteri

Linux šalabahter 

Kretanje po datotečnom sustavu

NaredbaOpis naredbe
pwdPrikazuje trenutačnu lokaciju korisnika. Lokacija se prikazuje u obliku apsolutne putanje do trenutačnog direktorija.
cdPromjena trenutačnog direktorija (cd - change directory).
cd -Povratak u prethodni direktorij.

Upravljanje direktorijima

NaredbaOpis naredbe
mkdir dir1

Kreira direktorij imena dir1.

mkdir -p /tmp/novi/dir1Opcija -p automatski kreira potrebne poddirektorije.
rm -rf dir1/*Briše sve datoteke i poddirektorije unutar direktorija dir1, tj. ostavlja direktorij dir1 praznim.
rm -rf dir1/Briše sve datoteke i poddirektorije uključujući i dir1.

Kopiranje datoteka i direktorija

NaredbaOpis naredbe
cp dat1 dat2Kopira datoteku dat1 u dat2 (dat1 je nepromijenjena).
cp dat1 dir/Kopira datoteku dat1 u direktorij dir.
cp -r dir1/* dir2/Kopira sve datoteke iz direktorija dir1 u direktorij dir2 bez samog direktorija dir1.
cp -r dir1/ dir2/Kopira sve datoteke i poddirektorije u direktoriju dir u direktorij
dir2, uključujući direktorij dir1.

Premještanje i preimenovanje datoteka i direktorija

NaredbaOpis naredbe
mv dat1 dat2Preimenuje datoteku dat1 u dat2
mv dat1 dir1Ako je dir1 ime direktorija, premješta datoteku dat1 u direktorij
dir1

Promjena zaporke

NaredbaOpis naredbe
passwdPromjena zaporke trenutnog korisnika. Naredba prvo traži upis stare lozinke, a zatim traži da se upiše nova lozinka (dva puta).
Napomena: prilikom upisivanja lozinke, iz sigurnosnih razloga, u terminalu se ne ispisuje tekst.

Automatsko nadopunjavanje i pretraživanje povijesti naredbi

NaredbaOpis naredbe
[Tab]Brzo nadopunjavanje naredbi. Kad korisnik počne pisati naredbu, npr. passwd, može napisati prvih nekoliko slova (npr. pass) i pritisnuti tipku [Tab]. Ljuska će tada automatski završiti naredbu ili ispisati sve naredbe koje započinju nizom pass. Na isti način se mogu nadopunjavati imena datoteka na disku.
[Ctrl] + [r]Pretraživanje povijesti naredbi. U terminalu, držite pritisnutu tipku [Ctrl] i pritisnete tipku [r]. Počnete pisati slova iz naredbe, i pojavljuju vam se prijašnje naredbe koje sadržavaju slova koja tipkate. Ako želite rotirati kroz sve naredbe koje sadrže utipkana slova, ponovno stisnete [Ctrl] + [r].

Naredbe za dohvaćanje uputa

NaredbaOpis naredbe
manUpute za korištenje naredbi sustava. Ako želite vidjeti kako se koristi, npr. naredba ls, za otvaranje man-stranice napisat ćete man ls.
<naredba> [-h/--help]Dobar dio aplikacija ima mogućnost dohvaćanja uputa korištenjem parametara -h ili --help (ne vrijedi za sve aplikacije!).


SGE šalabahter

Podnošenje poslova

NaredbaOpis naredbe
qsubPodnosi posao i vraća ID posla.

Provjera stanja poslova

NaredbaOpis naredbe
qstatPrikazuje stanje poslova na klasteru za trenutnog korisnika.
qstat -fPrikazuje stanje poslova i čvorova.
qstat -s rpshPrikazuje: p - poslove koji čekaju u redu; r - aktivne poslove; s -privremeno zaustavljene aktivne poslove; h - privremeno zaustavljene poslove u redu.
qstat -g cPrikazuje sažetak stanja pojedinih redova poslova.
qstat -j <job_id>Prikazuje detaljan prikaz informacija o jednom poslu.
qstat -u <user>Prikaz poslova određenog korisnika ("*"- za sve)
qstat -pe <name>Prikaz poslova koji koriste definiranu paralelnu okolinu.
qstat -q <queue>Prikaz poslova u definiranom redu poslova.

Zaustavljanje poslova

NaredbaOpis naredbe
qdel <job_id>Posao se u potpunosti zaustavlja ili miče iz reda čekanja.
qdel -u <user>Zaustavljaju se svi poslovi zadanog korisnika.
qdel -f <job_id>Prisilno zaustavljanje za zaglavljene poslove.

Informacije o završenim poslovima

NaredbaOpis naredbe
qacct -j <job_id>Detaljne informacije o poslu s ID-jem <job_id>.
qacct -jDetaljne informacije o svim poslovima (velika količina podataka).
qacct -j -o <user>Prikaz informacija o svim poslovima definiranog korisnika.
qacct -o <user>Prikaz sažetka potrošnje definiranog korisnika; ako se ne definira <user>, prikazuju se podaci za sve korisnike.
qacct -slots [<count>]Prikaz sažetka svih poslova koji su koristili zadani broj procesora; ako se ne definira <count>, prikazuju se podaci za sve vrijednosti.
qacct -j -P <project>Prikaz informacija o svim poslovima za definirani projekt.
qacct -P <project>Prikaz sažetka potrošnje definiranog projekta; ako se ne definira <project>, prikazuju se podaci za sve projekte.
qacct -j -q <queue>Prikaz informacija o svim poslovima za definirani red poslova.
qacct -q <queue>Prikaz sažetka potrošnje definiranog reda poslova.