...
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:
Primjer skripte bez dodatnih parametara
Code Block language bash #!/bin/bash date
Primjer jednostavne skripte s parametrima
Code Block language bash #!/bin/bash #$ -N Date_SGE_script #$ -o Date_SGE.out #$ -e Date_SGE.err date
Primjer izvođenja programa iz trenutnog direktorija
Code Block language bash title moj_program.sge #!/bin/bash #$ -N mojprog #$ -P local #$ -o mojprog.out #$ -e mojprog.err #$ -cwd mojprog
...
Code Block | ||
---|---|---|
| ||
#$ -pe <tip_paralelnog_posla> <N>,[<Ni>,...]<S>-<E>,[<Si>-<Ei>,] |
Primjeri korištenja:
Posao za izvođenje zahtijeva 14 procesorskih jezgara:
Code Block #$ -pe *mpi 14
Broj dodijeljenih procesorskih jezgara može biti između 2 i 4:
Code Block #$ -pe *mpi 2-4
Broj dodijeljenih procesorskih jezgara može biti 5 ili 10:
Code Block #$ -pe *mpi 5,10
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
Primjer skripte za pokretanje polja poslova od 10 serijskih poslova:
Code Block language bash #!/bin/bash #$ -N job_array_serial #$ -cwd #$ -o output/ #$ -j y #$ -t 1-10 ./starSeeker starCluster.$SGE_TASK_ID
Primjer skripte za pokretanje polja poslova od 10 paralelnih poslova:
Code Block language bash #!/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 | ||
---|---|---|
| ||
Your "qrsh" request could not be scheduled, try again later. |
Primjeri korištenja
Izravan pristup do komandne linije testnog čvora:
Code Block language text qrsh
Interaktivno izvođenje naredbe
Code Block language text qrsh /home/user/moja_skripta
Interaktivno izvođenje aplikacije s grafičkim sučeljem
Code Block language text 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:
Primjer jednostavnog korištenja $TMPDIR varijable:
Code Block language bash #!/bin/bash #$ -N scratch_1 #$ -cwd #$ -o output/scratch.out #$ -j y #$ -l scratch=50 cd $TMPDIR pwd > test cp test $SGE_O_WORKDIR
Primjer kopiranja podataka na scratch disk:
Code Block language bash #!/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 | ||
---|---|---|
| ||
#!/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:
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
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 | ||
---|---|---|
| ||
#$ -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:
Prikaz svih poslova u redu čekanja
Code Block $ qstat -u "*" -s p
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
Prikaz svih poslova i čvorova korisnika pero
Code Block $ qstat –s r –f –u pero
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:
Detaljne informacije o svim poslovima izvršenim na klasteru (oprez: velika količina podataka):
Code Block $ qacct -j
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>
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
Naredba | Opis naredbe |
---|---|
pwd | Prikazuje trenutačnu lokaciju korisnika. Lokacija se prikazuje u obliku apsolutne putanje do trenutačnog direktorija. |
cd | Promjena trenutačnog direktorija (cd - change directory). |
cd - | Povratak u prethodni direktorij. |
Upravljanje direktorijima
Naredba | Opis naredbe |
---|---|
mkdir dir1 | Kreira direktorij imena |
mkdir -p /tmp/novi/dir1 | Opcija -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
Naredba | Opis naredbe |
---|---|
cp dat1 dat2 | Kopira 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 direktorijdir2 , uključujući direktorij dir1 . |
Premještanje i preimenovanje datoteka i direktorija
Naredba | Opis naredbe |
---|---|
mv dat1 dat2 | Preimenuje datoteku dat1 u dat2 |
mv dat1 dir1 | Ako je dir1 ime direktorija, premješta datoteku dat1 u direktorijdir1 |
Promjena zaporke
Naredba | Opis naredbe |
---|---|
passwd | Promjena 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
Naredba | Opis 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
Naredba | Opis naredbe |
---|---|
man | Upute 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
Naredba | Opis naredbe |
---|---|
qsub | Podnosi posao i vraća ID posla. |
Provjera stanja poslova
Naredba | Opis naredbe |
---|---|
qstat | Prikazuje stanje poslova na klasteru za trenutnog korisnika. |
qstat -f | Prikazuje stanje poslova i čvorova. |
qstat -s rpsh | Prikazuje: p - poslove koji čekaju u redu; r - aktivne poslove; s -privremeno zaustavljene aktivne poslove; h - privremeno zaustavljene poslove u redu. |
qstat -g c | Prikazuje 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
Naredba | Opis 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
Naredba | Opis naredbe |
---|---|
qacct -j <job_id> | Detaljne informacije o poslu s ID-jem <job_id> . |
qacct -j | Detaljne 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. |