...
title | Sadržaj |
---|
Table of Contents | ||
---|---|---|
|
...
Uvod
Za raspoređivanje i upravljanje poslovima na računalnom klasteru Isabella koristi se SGE (engl. Sun Son of 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 opisano je opisano korištenje SGE verzije 68.
Poslovi se spremaju u redove poslova. Ukoliko se eksplicitno ne navede red, posao se stavlja u podrazumijevani red poslova. Obično su pojedini redovi namijenjeni za određene vrste poslova (npr. kraće ili duže poslove). SGE sadrži dva oblika redova: globalni i lokalni. Globalni redovi (analogno redovima kod PBS-a) obuhvaćaju skup čvorova, a lokalni predstavljaju samo jedan čvor. U starijim verzijama SGE-a (do uključivo verzije 5.3) nisu postojali globalni redovi poslova. Lokalni redovi imaju naziv <globalni_red>@<puno_ime_cvora>.
Izvođenje poslova
Korisničke aplikacije (u nastavku poslovi) koji se izvode pomoću sustava SGE moraju biti opisane startnom shell skriptom (npr. sh, bash). Unutar startne skripte, pored normalnih naredbi navode se parametri za SGE. Također je moguće koristiti SGE varijable okoline opisane u odjeljku SGE varijable okoline.
Pokretanje poslova se ostvaruje naredbom qsub:
Code Block | ||
---|---|---|
| ||
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).
SGE okolina i parametri
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>.
SGE parametri omogućavaju korisniku da SGE-u detaljnije opiše svoj posao. Oni se unutar shell skripte navode u sljedećem obliku:
Code Block | ||
---|---|---|
| ||
#$ -<parametar> <vrijednost>
|
Osnovni SGE parametri koje se preporuča postaviti su:
Izvođenje poslova
Korisničke aplikacije (u nastavku poslovi) koji se pokreću pomoću sustava SGE moraju biti opisani startnom shell skriptom (npr. sh, bash). Unutar startne skripte, pored normalnih naredbi navode se SGE parametri. Iste parametre moguće je navesti i izvan startne skripte, prilikom podnošenja posla.
Pokretanje poslova se ostvaruje naredbom qsub:
Code Block | ||
---|---|---|
| ||
qsub <SGE_parametri> <ime_startne_skripte> |
Info |
---|
SGE također sadrži grafičko sučelje (engl. graphical user interface, GUI) za pristup svim funkcionalnostima sustava. GUI se pokreće naredbom |
Opisivanje poslova
Za opisivanje poslova koristi se jezik sustava SGE, a datoteka za opis posla (startna skripta) je standardna shell skripta. U zaglavlju svake skripte navode se SGE parametri kojima se detaljno opisuje posao nakon kojih slijede normalne naredbe za izvršavanje korisničke aplikacije.
Struktura startne skripte:
Code Block | ||||
---|---|---|---|---|
| ||||
#!/bin/bash
#$ -<parametar1> <vrijednost1>
#$ -<parametar2> <vrijednost2>
<naredba1>
<naredba2> |
Posao opisan ovakvom startnom skriptom podnosi se naredbom:
Code Block |
---|
qsub moj_posao.sge |
Naredba qsub vraća ID posla koji se koristi za kasnije nadziranje stanja posla:
Code Block |
---|
Your job <JobID> ("moj_posao") has been submitted |
Osnovni SGE parametri
Code Block |
---|
-N <ime_posla> : ime posla koje će se prikazivati pri dohvatu informacija o poslovima
-P <ime_projekta> : ime projekta kojemu posao pripada
-cwd : definira da je direktorij u kojemu se nalazi startna skripta radni direktorij posla
|
Info Podrazumijevani radni direktorij posla je
$HOME
.
Code Block |
---|
-o <ime_dat> : ime datoteke u koju se sprema standardni izlaz
-e <ime_dat> : ime datoteke u koju se sprema standardna greška
-j y|n : omogućuje spajanje standardnog izlaza i standardne greške u istu datoteku (podrazumijevana vrijednost je n) |
Info Ako se standardni izlaz i greška eksplicitno ne navedu, biti će spremljeni u datoteke:
- Ukoliko nije definirano ime posla:
<radni_direktorij>/<ime_skripte>.o<id_posla>
<radni_direktorij>/<ime_skripte>.e<id_posla>
- inače:
<radni_direktorij>/<ime_posla>.o<id_posla>
<radni_direktorij>/<ime_posla>.e<id_posla>
Parametri
-o
i-e
mogu pokazivati na direktorij:#$ -o outputDir/
#$ -e outputDir/
U ovom slučaju, SGE će u direktoriju
outputDir
kreirati datoteke sa standardnim izlazom i standardnom greškom, naziva<ime_posla>.o<JobID>
i<ime_posla>.e<JobID>
Bitno:
outputDir
je potrebno ručno kreirati prije podnošenja posla.- Ukoliko nije definirano ime posla:
Code Block | ||
---|---|---|
| ||
-M <emailAddress>[,<emailAddress>]… : lista mail adresa na koju se šalju obavijesti o poslu
-m [a][b][e][n] : definira u kojem se slučaju šalju mail obavijesti:
b - početak izvođenja posla,
a - greška u izvođenju,
e - završetak izvođenja posla,
n - ne šalji obavijesti (podrazumijevana opcija)
-now y|n : vrijednost y definira da se posao mora izvesti odmah. Kod interaktivnih poslova ovo je podrazumijevana vrijednost.
Ukoliko SGE ne može pronaći slobodne resurse, posao se ne sprema u red nego odmah završava.
-r y|n : treba li se posao u slučaju greške tokom izvođenja ponovno pokrenuti (podrazumijevana vrijednost je n)
-R y|n : vrijednost y definira da će SGE prilikom raspoređivanja rezervirati čvorove (bitno za višeprocesorske poslove)
-l <resurs>=<vrij>[,<resurs>=<vrij>...] : definira resurse koje posao zahtijeva. Za detalje vidi Resursi.
-pe <paralelna_okolina> <raspon> : parametar se koristi za paralelne poslove.
Prvi parametar definira modul koji pokreće traženi oblik paralelnog posla.
Drugi parametar definira konkretan broj | ||
Panel | ||
-cwd : parametar definira da je trenutni direktorij radni direktorij posla. -e <ime_dat>: ime datoteke u koju se sprema standardna greška. -l <resurs>=<vrij>[,<resurs>=<vrij>...] : definira resurse koje posao zahtjeva (za razliku od PBS-a, ova opcija se ne koristi kod paralelnih poslova). -M <email_adresa>[,<email_adresa>...] : lista mail adresa na koju se šalju obavijesti o poslu. -m [a][b][e] : parametar definira u kojem slučaju se šalje obavijest: b - početak izvođenja, e - završetak izvođenja, a - greška u izvođenju posla. -now y|n : vrijednost y definira da se posao mora izvesti odmah. Ukoliko SGE ne može pronaći slobodne resurse, posao se ne sprema u red, nego odmah završava. Kod interaktivnih poslova podrazumijevana vrijednost je y, a kod ostalih n. -N <ime_prog> : ime programa koje će se prikazati pri dohvatu informacija o poslovima. -o <ime_dat>: ime datoteke u koju se sprema standardni izlaz. -P <ime_projekta>: ime projekta kojemu posao pripada. -pe <paralelna_okolina> <raspon_cvorova> : parametar se koristi za paralelne poslove. Prvi parametar definira modul koji pokreće traženi oblik paralelnog posla. Drugi parametar definira konkretan broj procesora ili raspon u obliku <N>,[<Ni>,...]<S>-<E>,[<Si>-<Ei>,] koji paralelni posao zahtjevazahtijeva. Za detalje vidi odjeljak Paralelni poslovi. -q <ime_reda>[,<ime_reda>...] : red poslova u koje se sprema posao. Ovu opciju je moguće koristiti i za zahtijevanje određenog čvora, na način da se zahtjevazahtijeva lokalni red poslova (npr. alla12.q@computeq@sl250s-0gen8-008-01.localisabella). -r y|n : da li se prilikom greške posao ponovno pokreće (podrazumijevana vrijednost: no). -t <početak>:<kraj>:<korak> <korak> : parametar definira da se radi o polju poslova. Za detalje vidi 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>. -v <var>[=<vrijednost>][,<var>[=<vrijednost>]...]: opcija definira SGE-u da uzme trenutne vrijednosti varijable okoline ili da ih postavi na određenu vrijednost prilikom izvođenja posla. Ovaj parametar je koristan kada aplikacija koristi posebne varijable okoline, jer ih SGE podrazumijevano ne postavlja prilikom pokretanja posla. -V : opcija definira SGE-u da poslu prenese sve trenutne varijable okoline.Polja poslova. -v <var>[=<vrijednost>][,<var>[=<vrijednost>]...] : opcija defnira da SGE prilikom izvođenja posla postavi varijablu okoline. Ovaj parametar je koristan kada aplikacija koristi posebne varijable okoline, jer ih SGE podrazumijevano ne postavlja prilikom pokretanja posla. -V : SGE poslu prenosi sve trenutne varijable okoline. |
Info Napomena: prilikom nabrajanja vrijednosti parametara (npr.
-l
ili-q
) nije dozvoljeno stavljati razmake.
Info |
---|
Detaljan popis i informacije o parametrima moguće je dobiti naredbom |
...
SGE varijable okoline
Unutar startne skripte moguće je koristiti SGE varijable. Neke od njih su:
Code Block |
---|
$TMPDIR : ime direktorija u koji se mogu spremati privremene datoteke (/scratch)
$JOB_ID : SGE identifikator posla
$SGE_TASK_ID : identifikator zadatka kod polja poslova
$SGE_O_HOST : adresa računala sa kojeg je pokrenut posao
$SGE_O_PATH : originalna vrijednost varijable okoline PATH prilikom pokretanja posla
$SGE_O_WORKDIR : direktorij iz kojeg je posao pokrenut
$SGE_STDOUT_PATH : datoteka u koju se sprema standardni izlaz
$SGE_STDERR_PATH : datoteka u koju se sprema standardna greška
$HOSTNAME : adresa računala na kojem se izvršava skripta
$JOB_NAME : ime posla
$PE_HOSTFILE : ime datoteke u kojoj su navedene adrese računala
$QUEUE : ime reda u kojem se posao izvršava
|
Vrste poslova
Serijski poslovi
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
Paralelni poslovi
Za pokretanje paralelnih poslova potrebno je specificirati željenu paralelnu okolinu te broj procesorskih jezgara koji je potreban za izvođenje posla. Sintaksa je:
Code Block | ||
---|---|---|
| ||
#$ |
Serijski poslovi
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 | ||
---|---|---|
| ||
#!/bin/bash
date
|
2. Primjer jednostavne skripte s parametrima
Code Block | ||
---|---|---|
| ||
#!/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 | ||
---|---|---|
| ||
#!/bin/bash
#$ -N mojprog
#$ -P local
#$ -o mojprog.out
#$ -e mojprog.err
#$ -cwd
mojprog
|
Interaktivni poslovi
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:
Code Block | ||
---|---|---|
| ||
Your "qrsh" request could not be scheduled, try again later.
|
Ukoliko skripta koja se pokreće poziva aplikaciju s grafičkim sučeljem potrebno je koristiti naredbu qsh i definirati varijablu okoline DISPLAY.
...
1. Izravan pristup do komandne linije proizvoljnog čvora
Code Block | ||
---|---|---|
| ||
qrsh
|
2. Izravan pristup do komandne linije čvora compute-0-1.local
Code Block | ||
---|---|---|
| ||
qrsh -q all.q@compute-0-1.local
|
3. Primjer interaktivnog izvođenja naredbe
Code Block | ||
---|---|---|
| ||
qrsh /home/user/mojaskripta
|
4. Primjer interaktivnog izvođenja aplikacije s grafičkim sučeljem
Code Block | ||
---|---|---|
| ||
qrsh -DISPLAY=10.1.1.1:0.0 <job_script>
|
Paralelni poslovi
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 je postavljena na odgovarajuću implementaciju.
Da bi se omogućilo SGE sustavu da kontrolira izvođenje paralelnih poslova potrebno je definirati broj procesora koji je potreban za izvođenje posla. Sintaksa je:
Code Block | ||
---|---|---|
| ||
-pe <tip_paralelnog_posla> <N>,[<Ni>,...]<S>-<E>,[<Si>-<Ei>,]
|
Primjeri raspona adresa su: 1. Vrijednost može biti između 2 i 4
...
language | text |
---|
...
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
...
language | text |
---|
#$ -pe *mpi
...
5,
...
10
Broj dodijeljenih procesorskih jezgara
...
može biti 1 ili između 2 i 4:
Code Block
...
language | text |
---|
#$ -pe *mpi 1,2-4
...
Info |
---|
Više informacija o paralelnim okolinama dostupnim na Isabelli možete pronaći na stranici Redovi poslova i paralelne okoline. |
Info |
---|
Obzirom da korisnik ne mora unaprijed znati koliko |
...
procesorskih jezgara će mu biti dodijeljeno, SGE postavlja vrijednost varijable |
...
jezgara. |
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:
Code Block | ||
---|---|---|
| ||
#!/bin/bash
#$ -N paralelni-posao
#$ -cwd
#$ -pe *mpi 14
mpirun_rsh -np $NSLOTS -hostfile $TMPDIR/machines ... |
Polja poslova
SGE omogućava višestruko pokretanje istog posla, tzv. polja poslova. Podposlovi unutar polja se nazivaju zadaci i svaki zadatak dobiva svoj identifikator.
Prilikom pokretanja poslova korisnik specificira raspon vrijednosti identifikatora zadataka koristeći parametar -t
:
Code Block |
---|
#$ -t <pocetak>:<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>
. 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
Interaktivni poslovi
SGE omogućava pokretanje interaktivnih poslova. 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:
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>
Napredno opisivanje poslova
Spremanje privremenih rezultata
Za spremanje privremenih rezultata koji se generiraju tijekom izvođenja posla ne preporuča se koristiti $HOME direktorij. Time se smanjuje učinkovitost aplikacije te opterećuju frontend i mreža klastera.
SGE za svaki pojedini posao kreira direktorij na disku na radnim čvorovima (/scratch), oblika /scratch/<jobID>.<taskID>.<queue>
. Adresu ovog direktorija SGE sprema u varijablu $TMPDIR.
Info |
---|
Zbog veće brzine, korištenje privremenog direktorija na /scratch disku preporuča se i za poslove koji često zahtijevaju nasumičan pristup podacima na disku, kao što su TensorFlow i PyTorch poslovi. |
Warning |
---|
Ukoliko postoje naznake da će kreirane privremene datoteke prijeći 500 GB, spremanje privremenih podataka treba se vršiti na disk |
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 |
Resursi
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 (više na stranici Prioriteti na Isabelli).
Potrebni resursi se navode pomoću parametra -l
:
Code Block |
---|
#$ -l <resurs>=<vrijednost> |
Resursi koji definiraju potrebe posla:
Code Block |
---|
arch : arhitektura čvora (npr. lx26-x86, lx25-amd64)
hostname : adresa čvora (npr. c4140-01.isabella) |
Resursi koji postavljaju stvarna ograničenja na poslove:
Code Block |
---|
vmem : količina virtualne memorije (format: <num>K|M|G)
rss : količina stvarne memorije
stack : veličina stoga
data : ukupna količina memorije (bez stoga)
fsize : ukupna veličina datoteka
cput : procesorsko vrijeme (format: [<hours>:<min>:]<sec>)
rt : stvarno vrijeme
scratch : prostor na scratch disku izrazen u GB |
Note |
---|
Vrijednosti ovih resursa treba pažljivo definirati (npr. uzimati 50% veće vrijednosti od očekivanog). U slučaju prekoračenja posao će biti zaustavljen sa signalom "segmentation fault". |
Note |
---|
Vrijednosti se ne mogu mijenjati za aktivne poslove. |
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
Red poslova
SGE podržava više redova poslova, za različite vrste i maksimalna trajanja poslova, za različite vrste poslova (interaktivni, vSMP poslovi, ...) itd.
Željeni red poslova može se definirati parametrom -q
:
Code Block |
---|
#$ -q <queueName> |
Popis dostupnih redova poslova na Isabelli može se pronaći na Redovi poslova i paralelne okoline.
Obavijesti o stanju posla
SGE podržava slanje e-mail obavijesti o promjeni stanja posla.
Parametar -M
određuje na koju email adresu će stizati obavijesti o stanju poslova:
Code Block |
---|
#$ -M <email_adresa> |
Parametar -m
određuje u kojim slučajevima će se slati obavijest:
Code Block |
---|
#$ -m [b][a][e][n] |
- 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 |
Obavijest će biti poslana na adresu moj@mail.com prilikom prekida ili završetka posla.
Praćenje i upravljanje izvođenjem poslova
Prikaz stanja poslova
Za prikaz stanja poslova koristi se SGE-ova naredba qstat. Sintaksa naredbe je:
Code Block |
---|
$ qstat <opcije> |
Izvršavanjem naredbe qstat
bez dodatnih opcija dobiva se ispis svih trenutnih korisnikovih poslova:
Code Block | ||
---|---|---|
| ||
[tsmolcic@teran ~]$ qstat
job-ID prior name user state submit/start at queue slots ja-task-ID
-----------------------------------------------------------------------------------------------------------------
131982 0.00001 md5-10k.0 tsmolcic r 05/28/2019 06:24:06 gpu.0.q@c4140-03.isabella 1
131988 0.00001 md5-10k.2 tsmolcic r 05/28/2019 09:29:26 gpu.2.q@c4140-01.isabella 1
131990 0.00001 md1-5k.3 tsmolcic r 05/28/2019 09:29:41 gpu.3.q@c4140-01.isabella 1
131991 0.00001 md10-15.4 tsmolcic r 05/28/2019 10:18:08 gpu.1.q@c4140-01.isabella 1
131994 0.04119 md1kp.5 tsmolcic qw 05/27/2019 13:14:14 20
131996 0.00005 md1-5k.6 tsmolcic qw 05/27/2019 13:16:30 1 |
Neke od važnijih opcija su:
Code Block |
---|
-s [r|p|s|h] : filtrira poslove prema stanju: r - aktivni, s - zaustavljeni, h - zaustavljeni u redu, p - u redu čekanja
-j [job_ID] : detaljan prikaz stanja posla (ukoliko se ne navede job_ID, prikazuju se podaci o svim aktivnim poslovima)
-f : prikazuju se detaljne informacije o opterećenosti čvorova i rasporedu poslova na čvorove
-F : detaljan prikaz podataka o čvorovima
-u <ime_korisnika> : prikazuju se samo poslovi od korisnika <ime_korisnik> (* - za sve korisnike)
-q [ime_reda] : naredba dohvaća isključivo informacije o redovima poslova
-g c : dohvat zbirnih informacija o redovima poslova: ukupno opterećenje reda, ukupan broj čvorova u redu, broj zauzetih
i slobodnih čvorova te broj čvorova u posebnim stanjima
-g t : u prikazu poslova su označeni slave i master zadaci
-l <resurs>=<vrijednost> : filtriranje poslova prema resursima
-ext : dodatne informacije o poslovima
-pri : detaljni podaci o prioritetima poslova |
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
Prikaz radnih čvorova
Za ispis broja procesora, jezgri i količine radne memorije po čvoru koristi se naredba
Code Block |
---|
$ qhost |
Naredom se mogu ispisati vrijednosti raspoloživih resursa po radnim čvorovima:
Code Block |
---|
$ qhost -F vendor,scratch,memory |
Upravljanje poslovima
Poslom se može upravljati i nakon pokretanja.
Dok je posao u redu čekanja, moguće je privremeno zaustaviti njegovo izvršavanje naredbom
Code Block |
---|
$ qhold <ID_posla> |
Tako zaustavljen posao može se vratiti u red čekanja naredbom
Code Block |
---|
$ qrls <ID_posla> |
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:
Code Block |
---|
-c : naredba izvodi spremanje stanja proces
-f : parametar definira da se naredba izvede bez obzira da li je to moguće ili ne
(korisno kod vraćanja u red poslova koji su označeni s parametrom -r n).
-r: naredba zaustavlja posao i vraća ga natrag u red.
-s : naredba zaustavlja izvođenje aktivnog procesa.
-us : naredba nastavlja izvođenje zaustavljenog aktivnog posla. |
Posao se u potpunosti zaustavlja ili miče iz reda čekanja naredbom:
Code Block |
---|
$ qdel <ID_posla> |
Moguće je zaustaviti sve poslove korisnika:
Code Block |
---|
$ qdel -u <ime_korisnika> |
Za zaglavljene poslove treba koristiti prisilno zaustavljanje:
Code Block |
---|
$ qdel -f <ID_posla> |
Dohvat informacija o završenim poslovima
Za dohvat informacija o završenim poslovima koristi se naredba qacct. Sintaksa je:
Code Block |
---|
$ qacct <opcije> |
Najčešći primjer korištenja ove naredbe je
Code Block |
---|
$ qacct -j <ID_posla> |
kojom se ispisuju svi podaci o završenom poslu.
Ostale korisne opcije naredbe qacct su:
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. |
Kako kod SGE-a nema mogućnosti definiranja načina raspoređivanja procesa paralelnog posla po čvorovima, definirana su dva oblika paralelnih poslova:
Panel |
---|
mpi: SGE nastoji rasporediti procese na istom čvoru
(prvo će ispuniti sva slobodna mjesta na određenom čvoru prije nego pređe na sljedeći)
mpisingle: SGE će raspodijeliti sve procese na istom čvoru |
Za izvođenje MPICH poslova na SGE klasteru se koristi standardna naredba mpirun. Naredba mpirun pokreće procese na pojedinim čvorovima pomoću ssh naredbe. Osnovni parametari mpirun naredbe su: -np : broj procesa ($NSLOTS u slučaju raspona adresa) -machinefile : datoteka koja sadrži popis čvorova ($TMPDIR/machines).
SGE sadrži tri paralelna modula (za parametar -pe) za pokretanje MPI poslova: mpi, mpi_rr i mpi_smp. Skripte ovih modula ostvarene su tako da zaustave sve zaostale procese u slučaju greške u aplikaciji ili zaustavljanja posla naredbom qdel.
Primjeri korištenja
1. Primjer poziva mpirun unutar SGE skripte
Code Block | ||
---|---|---|
| ||
mpirun -np $NSLOTS -machinefile $TMPDIR/machines <ime_programa>
|
2. Primjer skripte za izvođenje paralelnog posla koji pokreće mpi_program koji zahtjeva 8 procesora na istom čvoru
Code Block | ||
---|---|---|
| ||
#$ -pe mpisingle 8
mpirun -np $NSLOTS -machinefile $TMPDIR/machines <ime_programa>
|
Paralelne okoline
Na isabelli je moguće koristiti sljedeće paralelne okoline:
- mpi – općeniti paralelni poslovi
- mpisingle – sve jezgre se dodjeljuju na jednom radnom čvoru
- mpismp – jezgre se dodjeljuju 2 po radnom čvoru
- mpismp_4 – jezgre se dodjeljuju 4 po radnom čvoru
- mpismp_8 – jezgre se dodjeljuju 8 po radnom čvoru
- vmpifull - jezgre se dodjeljuju 28 po radnom čvoru
- vsmp – jezgre se dodjeljuju na ScaleMP vSMP čvoru
- test – pristup testnom čvoru
Polja poslova
SGE omogućava izvođenje polja poslova, tj. višestruko pokretanje istog posla. Podposlovi unutar polja se nazivaju zadaci. Svaki zadatak dobija 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 | ||
---|---|---|
| ||
-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
Code Block | ||
---|---|---|
| ||
#$ -N starSeeker
#$ -o ./taskJobOutput/
#$ -e taskJobErr
#$ -t 1-10
./starSeeker starCluster.$SGE_TASK_ID
|
2. Primjer skripte za pokretanje polja paralelnih LAM poslova koje se sastoji od 10 zadataka
Code Block | ||
---|---|---|
| ||
#$ -N starSeeker
#$ -o ./taskJobOutput/
#$ -e taskJobErr
#$ -pe mpi 4
#$ -t 1-10
mpiexec -machinefile $TMPDIR/machines ./starSeeker starCluster.$SGE_TASK_ID
|
Definiranje dodatnih karakteristika poslova
Prilikom pokretanja poslova korisnik može detaljnije opisati koji uvjeti trebaju biti ispunjeni za posao. Primjerice, moguće je zahtijevati samo određene redove, arhitekturu, količinu memorije ili procesorskog vremena. Opisivanje poslova je iznimno bitno za rad sustava za upravljanje poslovima jer omogućava učinkovitije raspoređivanje poslova.
Parametri se navode pomoću opcije -l:
Code Block | ||
---|---|---|
| ||
#$ -l <naziv_parametra>=<vrijednost_parametra>[,<naziv_parametra>=<vrijednost_parametra>...]
|
Parametri koji samo definiraju potrebe posla:
Code Block | ||
---|---|---|
| ||
arch : arhitektura čvorova. Moguće vrijednosti ovih parametara moguće je vidjeti iz qstat -f naredbe.
mem_free : količina slobodne stvarne memorije
swap_free : količina slobodne swap memorije
virtual_free : zbroj stvarne i swap memorije
mem_total : ukupna količina stvarne memorije
swap_total : ukupna količina swap memorije
virtual_total : zbroj slobodne stvarne i swap memorije
hostname: ime jednog ili više čvorova na kojima se želi izvesti posao.
|
Parametri koji postavljaju stvarna ograničenja na poslove:
Code Block | ||
---|---|---|
| ||
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
|
BITNO! 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).
BITNO! 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 | ||
---|---|---|
| ||
#$ -pe mpi 20
#$ -l memory=10 |
-l scratch
Karakteristiku -l scratch koristimo za poslove koji zahtjevaju 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:
Code Block | ||
---|---|---|
| ||
#$ -pe mpisingle 4
#$ -l scratch=50 |
SGE varijable okoline
Unutar skripte moguće je koristiti SGE varijable. Primjeri SGE varijabli su već spomenute varijable $NSLOTS i $TMPDIR. Neke od SGE varijabla su:
Code Block | ||
---|---|---|
| ||
$SGE_O_HOST : adresa računala sa kojeg je pokrenut posao
$SGE_O_PATH : originalna vrijednost varijable okoline PATH prilikom pokretanja posla
$SGE_O_WORKDIR : direktorij iz kojeg je posao pokrenut
$SGE_STDOUT_PATH : datoteka u koju se sprema standardni izlaz
$SGE_STDERR_PATH : datoteka u koju se sprema standardna greška
$HOSTNAME : adresa računala na kojem se izvršava skripta
$JOB_ID : SGE identifikator posla
$JOB_NAME : ime posla
$PE_HOSTFILE : ime datoteke u kojoj su navedene adrese računala
$QUEUE : ime reda u kojem se posao izvršava
$SGE_TASK_ID : identifikator zadatka kod polja poslova
$TMPDIR : ime direktorija u koji se mogu spremati privremene datoteke (/scratch).
|
Redovi poslova
Radni čvorovi Isabelle grupirani su u više redova poslova:
- all.q - red za sve poslove
- parallel.q - red za paralelne poslove
- tecaj - red za potrebe tečaja
- test - red za potrebe testiranja aplikacija (maksimalno trajanje 24 sata)
- velebit2 - red za paralelne poslove s resursima iz projekta od MZOE
- vsmp.q - red za ScaleMP vSMP čvor
- vsmp-test.q - red za potrebe tečaja o ScaleMP
Gdje spremati privremene podatke i rezultate?
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 | ||
---|---|---|
| ||
#$ -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:
Code Block |
---|
#$ -N scratch
#$ -cwd
#$ -o output/scratch.out
#$ -j y
mkdir -p /shared/$USER/$TMPDIR
cd /shared/$USER/$TMPDIR
pwd > test
sleep 120
cp test $SGE_O_WORKDIR |
Praćenje i upravljanje izvođenjem poslova
Nakon pokretanja posla korisnik može koristiti različite SGE-ove alate za praćenje izvođenja posla.
Prikaz informacija o poslovima
Naredba qstat je SGE-ova naredba za prikaz stanja poslova. Neki od važnijih parametara naredbe su:
Code Block | ||
---|---|---|
| ||
-s [r|p|s|h] : filtrira poslove prema stanju: r - aktivni, s - zaustavljeni aktivni, h - zaustavljeni u redu, p - poslovi u redu.
-j : prikazuju se poruke od SGE-a (npr. razlog zašto posao nije raspoređen na određene čvorove).
-f : prikazuju se detaljne informacije o opterećenosti čvorova i rasporedu poslova na čvorove.
-F : detaljan prikaz podataka o čvorovima.
-u <ime_korisnika> : prikazuju se samo poslovi od korisnika <ime_korisnika>.
-q [ime_reda] : naredba dohvaća isključivo informacije o redovima poslova.
-g c: dohvat zbirnih informacija o redovima poslova: ukupno opterećenje reda, ukupan broj čvorova u redu, broj zauzetih i slobodnih čvorova te broj čvorova u posebnim stanjima.
-g t : u prikazu poslova su označeni slave i master zadaci (ovaj ispis je analogan ispisu iz SGE5.3).
|
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 | ||
---|---|---|
| ||
qstat -s r -f
|
prikazuje sve aktivne poslove i imena čvorove na kojima se izvode.
Detaljni podaci o nekom poslu
Code Block | ||
---|---|---|
| ||
qstat -f <id_posla>
|
Ukoliko se ne navede <id_posla> bit će prikazani podaci o svim aktivnim poslovima.
Upravljanje poslovima
Nakon pokretanja, poslom se može upravljati: privremeno ga zaustaviti, potpuno ga zaustaviti te mu promijeniti karakteristike.
Naredbe za privremeno zaustavljanje posla su:
Code Block | ||
---|---|---|
| ||
qhold <id_posla> - privremeno zaustavlja izvođenje posla
qrls <id_posla> - nastavlja izvođenje posla
|
Napomena: 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:
Code Block | ||
---|---|---|
| ||
-c : naredba izvodi spremanje stanja proces
-f : parametar definira da se naredba izvede bez obzira da li je to moguće ili ne (korisno kod vraćanja u red poslova koji su označeni s parametrom -r n).
-r: naredba zaustavlja posao i vraća ga natrag u red.
-s : naredba zaustavlja izvođenje aktivnog procesa.
-us : naredba nastavlja izvođenje zaustavljenog aktivnog posla.
|
Posao se u potpunosti zaustavlja naredbom qdel:
Code Block | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
-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:
...
language | text |
---|
...