Versions Compared

Key

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

...

Panel
titleSadržaj

Table of Contents
outlinetrue
stylenone

Uvod

...

SGE (engl. Sun Grid Engine) je klasterski sustav za upravljanje poslovima (engl. job management system, JMS). Više informacija o sustavu SGE možete pronaći u izvještaju http://www.srce.hr/crogrid/clusters.pdf te SGE-jevim službenim stranicama http://gridengine.sunsource.net/. U ovom dokumentu je opisano korištenje SGE verzije 6.

...

Pokretanje poslova se ostvaruje naredbom qsub:

Code Block
languagetext
qsub <SGE_parametri> <ime_skripte>

SGE parametre je, osim u skripti, moguće navesti prilikom poziva naredbe qsub.

SGE također sadrži grafičko sučelje (engl. graphical user interface, GUI) za pristup svim funkcionalnostima sustava. GUI se pokreće naredbom qmon. Korištenje GUI-ja neće biti opisivano jer unutar samog njega postoje upute za uporabu (tipke Help).

...

Prilikom izvođenja poslova potrebno je definirati kojem projektu poslovi pripadaju. Na taj način se prati trošenje resursa od strane pojedinih projekata i omogućava pravedno raspoređivanje (engl. fair share) poslova među njima.

SGE za radni direktorij uzima $HOME. Ukoliko se želi promijeniti direktorij potrebno je to napraviti u skripti. Ako se eksplicitno ne navedu standardni izlaz i greška, bit će spremljeni u datoteke: <radni_direktorij>/<ime_skripte>.o<id_posla> i <radni_direktorij>/<ime_skripte>.e<id_posla>.

...

Detaljan popis i informacije o parametrima moguće je dobiti naredbom man qsub. Napomena: prilikom nabrajanja vrijednosti parametara (npr. -l ili -q) nije dozvoljeno stavljati razmake.

...

SGE omogućava pokretanje interaktivnih poslova. Kod interaktivnih poslova standardni izlaz i greške se šalju izravno korisniku. Drugi oblik interaktivnih poslova je da korisnik dobije komandnu liniju čvora koji mu je dodijeljen. Za interaktivno izvođenje poslova koristi se naredba qrsh. Preporuča se koristiti ovaj oblik poslova u slučaju kada je potrebno prevesti ili debuggirati aplikacije na čvorovima. Za razliku od korištenja ssh, na ovaj način se daje do znanja SGE-u da su čvorovi zauzeti i da ne pokreće druge poslove na njima. Prilikom interaktivnog izvođenja naredbe potrebno je navesti puni put do naredbe.

Ukoliko SGE trenutno nema slobodnih resursa i posao se želi ostaviti da čeka u redu, potrebno je navesti parametar "-now n". U suprotnom će SGE odmah završiti izvođenje posla s porukom:

...

Ukoliko skripta koja se pokreće poziva aplikaciju s grafičkim sučeljem potrebno je koristiti naredbu qsh qrsh i definirati varijablu okoline DISPLAY.

...

Pokretanje paralelnih poslova je specifično jer postoje alati za pokretanje podposlova (npr. mpirun) koji sami obavljaju raspoređivanje podposlova po čvorovima. U slučaju MPI (engl. Message Passing Interface) poslova, okolinu okolina je postavljena na odgovarajuću implementaciju.

...

Kada SGE dodijeli čvorove paralelnom poslu, popis čvorova spremi u datoteku $TMPDIR/machines. Unutar SGE skripte datoteka se prenosi kao parametar paralelnim programima (npr. pvm, mpiexec). Korisnici mogu iskoristiti varijablu za vlastito raspoređivanje procesa, primjerice sa s alatom ssh. Obzirom da korisnik ne mora unaprijed znati koliko procesora će mu biti dodijeljeno, SGE postavlja vrijednost varijable $NSLOTS na broj dodijeljenih procesora.

...

SGE omogućava izvođenje polja poslova, tj. višestruko pokretanje istog posla. Podposlovi unutar polja se nazivaju zadaci. Svaki zadatak dobija dobiva svoj identifikator. Prilikom pokretanja polja poslova korisnik može definirati raspon vrijednosti identifikatora zadataka. Polje poslova i raspon vrijednosti identifikatora se definira parametrom -t:

Code Block
languagetext
-t <početak>:<kraj>:<korak>  

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

Korisnik može koristiti SGE varijablu okoline $SGE_TASK_ID za dohvat identifikatora zadatka. Pomoću identifikatora korisnici mogu dodijeliti različite parametre pojedinom zadatku (vidi primjere korištenja). Zadaci mogu biti i paralelni poslovi, pri čemu je potrebno navesti parametre prema uputama iz prethodnog poglavlja.

Primjeri korištenja

1. Primjer skripte za pokretanje polja poslova koje se sastoji od 10 zadataka

...

Parametri se navode pomoću opcije -l:

Code Block
languagetext
#$ -l <naziv_parametra>=<vrijednost_parametra>[,<naziv_parametra>=<vrijednost_parametra>...]

...

Code Block
languagetext
vmem:   virtualna memorija je zbroj stvarne (RAM) i swap memorije koju procesor koristi.
rss:    stvarna memorija
core:   veličina core datoteke u slučaju da se desi core dump
stack:  veličina stoga programa. Ovaj parametar se postavlja na vmem ako nije naveden.
data:   veličina ukupne memorije koju proces zahtjeva (izuzev stoga). Ovaj parametar se postavlja na vmem ako nije naveden.
fsize:  količina HD koju proces smije potrošiti
cput:   stvarno vrijeme koje proces "provede" u procesoru
rt:     ukupno vrijeme izvođenja procesa


Note

...

SGE koristi alat ulimit za postavljanje ograničenja za poslove (resursi: rss, rt, cpu, data, core, stack, vmem i fsize). Posao će biti zaustavljen sa signalom segmentation fault ukoliko prekorači ograničenja. Stoga je potrebno pažljivo definirati vrijednosti (npr. uzimati 50% veće vrijednosti od očekivanog).

...



Note

Stvarna ograničenja se postavljaju po procesu. Na primjer, ukoliko korisnik na jednom čvoru zahtjeva 3 procesora, vrijednosti ograničenja će biti pomnožene s 3.


-l memory

Kako bi učinkovitije rasporedili željeni posao, jedna od korisnijih karakteristika je -l memory. Ova opcija je izuzetno korisna za poslove koji zahtjevaju veliku količinu radne memorije. Željena količina radne memorije izražava se u Gb koje posao treba za izvođenje jednog procesa! Primjer za posao koji zahjeva 20 jezgri i 200Gb RAM-a:

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

-l scratch

Karakteristiku -l scratch koristimo za poslove koji zahtjevaju zahtijevaju veliku količinu prostora na scratchu. Kao i u slučaju karakteristike -l memory, navodi se količina memorije izražena u Gb koje posao treba za izvođenje jednog procesa. Primjer za posao koji zahtjeva 4 jezgre i 200 Gb scratch prostora:

...

Unutar skripte moguće je koristiti SGE varijable. Primjeri SGE varijabli su već spomenute varijable $NSLOTS i $TMPDIR. Neke od SGE varijabla su:

...

Za spremanje privremenih podataka i rezultat ne preporuča se korištenje $HOME direktorija, budući da se time smanjuje učinkovitost aplikacije te se opterećuju frontend i mreža klastera. Za ovakve datoteke uputno je koristiti varijablu $TMPDIR koja će za svaki pojedini posao kreirati direktorij na radnim čvorovima oblika /scratch/<jobID>.<taskID>.<queue> koji će se automatsko ukloniti nakon završetka posla. Ukoliko postoje naznake da će kreirane privremene datoteke premašiti vrijednost od 500Gb, spremanje privremenih podataka treba se vršiti na disk /shared.

Primjer korištenja automatski kreiranog direktorija pomoću varijable $TMPDIR:

Code Block
languagetext
#$ -N scratch
#$ -cwd
#$ -o output/scratch.out
#$ -j y

cd $TMPDIR
pwd > test
cp test $SGE_O_WORKDIR

Korištenje diska /shared kada aplikacija barata privremenim podatcima većim od 500Gb:

...

Prikaz informacija o poslovima

Naredba qstat je SGE-ova naredba za prikaz stanja poslova. Neki od važnijih parametara naredbe su:

...

Informacije o ostalim parametrima moguće je dobiti naredbom man qstat.

Uobičajen način praćenja izvođenja poslova je korištenjem parametara -r i -n. Na primjer, naredba:

Code Block
languagetext
qstat -s r -f

prikazuje sve aktivne poslove i imena čvorove čvorova na kojima se izvode.

Detaljni podaci o nekom poslu:

Code Block
languagetext
qstat -j <id_posla>

Ukoliko se ne navede <id_posla> bit će prikazani podaci o svim aktivnim poslovima.

...

Code Block
languagetext
qhold <id_posla> - privremeno zaustavlja izvođenje posla
qrls <id_posla> - nastavlja izvođenje posla

...


Note

Aktivni posao neće biti stvarno zaustavljen. Naredba se koristi isključivo dok posao čeka u redu na izvođenje. Za potrebe zaustavljanja aktivnog posla koristiti naredbu qmod.


Veću kontrolu nad poslom omogućava naredba qmod. Naredba omogućava privremeno zaustavljanje aktivnih poslova i to na način da poslu pošalje signal SIGSTOP. Posao će preći u neaktivno stanje (T), ali neće osloboditi resurse (memoriju, opisnike datoteka). Naredba omogućava i spremanje stanja procesa na disk (checkpointing) za poslove koji imaju tu mogućnost. Nadalje pomoću qmod naredbe korisnik može zaustaviti aktivni proces i vratiti ga natrag u red poslova. Parametri naredbe su:

...

Posao se u potpunosti zaustavlja naredbom qdel:

Code Block
languagetext
qdel <id_posla>

Moguće je i zaustaviti sve poslove pojedinih korisnika s opcijom "-u <ime_korisnika>" ili svih korisnika s opcijom "-u all".

Dohvat informacija o završenim poslovima

...

Informacije o završenim poslovima i statistike moguće je dobiti korištenjem naredbe qacct. Uobičajeno korištenje je: qacct -j <id_posla> sto prikazuje sve podatke o poslu <id_posla>.

Pomoću naredbe qacct moguće je vidjeti statistike o klasteru. Parametri naredbe su:

Code Block
languagetext
-j [ime_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

Primjeri korištenja

1. Dohvat detaljnih informacija o poslovima korisnika toni koji su koristili 4 procesora:

...