GridWay
Izvor: CRO NGI
Sadržaj |
Uvod
GridWay je sustav za raspoređivanje poslova na razini grida. Više informacija o alatu i sam izvršni kod moguće je pronaći na adresi [1].
Opisivanje poslova
Za opisivanje poslova GridWay koristiti vlastiti format koji se sastoji od niza linija oblika:
atribut = vrijednost
Osnovni atributi koje GridWay podržava su:
| Atribut | Opis |
| NAME | ime posla koje će biti prikazano u ispisu naredbe gwps. |
| EXECUTABLE | ime izvršnog programa. Ukoliko se koristi apsolutna putanja (npr. /bin/hostname) Gridway neće prenositi datoteku s UI čvora na CE čvor. Ukoliko se koristi relativna putanje (npr. mojProgram) GridWay će obaviti prijenos datoteke na CE čvor prije izvođenja. |
| STDIN_FILE | ime datoteke iz koje se uzima standardni ulaz |
| STDOUT_FILE | ime datoteke u koju se sprema standardni izlaz (stdout) |
| STDERR_FILE | ime datoteke u koju se sprema standardna greška (stderr) |
| ARGUMENTS | argumenti izvršnog programa |
| TYPE | Globusov tip posla. |
| ENVIRONMENT | varijable okoline |
| INPUT_FILES = <file>[, <file>]... | lista datoteka koje se prenose na CE čvor prije početka posla |
| OUTPUT_FILES = <file>[, <file>]... | lista datoteka koje se prenose sa CE čvora na UI čvor po završetku posla |
| NP | broj procesora koji posao zahtjeva za izvođenje |
| REQUIREMENTS | parametar služi za filtriranje CE čvorova na kojima se želi izvesti posao (npr. odabir 64-bitne arhitekture). |
| RANK | parametar služi za dodjeljivanje prioriteta CE čvorova na kojima se želi izvesti posao (npr. preferiranje čvorova s većom količinom memorije. |
GridWay može koristiti i GRAM2 i GRAM4 servise. GridWay ima mogućnost prijenosa datoteka na udaljeno, odnosno s udaljenog računala. Za prijenos datoteka GridWay koristi Globusov GridFTP servis. Standardni izlaz i greška se podrazumijevano prenose natrag na računalo s kojeg je pokrenut posao. Nadalje, GridWay ima mogućnost ponovnog pokretanja izvođenja posla u slučaju pogreške. Korisnik može definirati da li želi ponovno izvođenje posla u slučaju greške i broj pokušaja ponovnog izvođenja. GridWay pruža korisnicima mogućnost da sami definiraju način na koji se posao raspoređuje.
Više informacija o opisivanju i upravljanju poslovima možete pronaći na adresi: [2].
Raspoređivanje paralelnih procesa na jedan čvor
Neke paralelne aplikacije za izvođenje zahtijevaju sve procesore na istom čvoru. Globus na CRO NGI čvorovima je prilagođen da omogući podnošenje takvog zahtjeva. U GridWay opisu posla potrebno je postaviti:
ENVIRONMENT = PE_MODE = "single"
Osvježavanje zastupničkog certifikata
Prilikom izvođenja dugotrajnih poslova ili podnošenja velike količine poslova potrebno je osigurati osvježavanje zastupničkog certifikata. GridWay obavlja osvježavanje zastupničkih certifikata delegiranih servisu GRAM na CE čvoru. Međutim korisnik je dužan GridWayu osigurati valjani certifikat. Korisnicima se stoga preporuča korištenje komponente za automatsko osvježavanje zastupničkih certifikata.
Polje poslova
GridWay omogućava podnošenje polja poslova. Korisnik može koristiti u opisu posla varijable koje se dodijeljuju pojedinim zadacima u poslu:
${TASK_ID} - identifikator pojedinog zadatka, vrijednosti su od 0 - (BrojZadataka-1)
${PARAM} - poseban parametar čiji raspon vrijednosti se definira argumentima naredbe gwsubmit -s i -i. Vrijednost se izračunava forumulom:
$START + $INCREMENT * ${TASK_ID}
Za polje poslova potrebno je navesti sljedeće parametre kod poziva naredbe gwsubmit:
-n: broj zadataka u polju poslova
-s: početna vrijednost parametra ${PARAM}
-i: inkrement parametra ${PARAM}
Primjer polja poslova
Napraviti skriptu koja će prihvaćati parametar ${PARAM} (run.sh):
#!/bin/sh chmod +x genbgL_limite_NEW states01 ./genbgL_limite_NEW -acF -L -Z2 -ILIMITS-6-0$1 -Ostdout -d1:4D99:4 23 +19| sed -e 's/$/./' | ./states01 -1 -sc | grep fail | sed 's/^.*: //' > +out-23-19-0$1
Napraviti opis posla (run.jt):
EXECUTABLE=run.sh
NAME=q19
ARGUMENTS=${PARAM}
REQUIREMENTS = (ARCH = "x86_64")
INPUT_FILES = genbgL_limite_NEW,states01,LIMITS-6-0${PARAM}
OUTPUT_FILES = out-23-19-0${PARAM}
STDOUT_FILE = run.${PARAM}.out
STDERR_FILE = run.${PARAM}.err
Pretpostavimo da treba pokrenuti 100 zadataka te da se uzlazne i izlazne datoteke kreću s indeksima 800-899 pokrenuti polje naredbom:
gwsubmit -n 100 -s 800 run.jt
Upravljanje poslovima
U tijeku rada servis gwd vodi dnevnik u datoteci /opt/gw/var/gwd.log. Dodatno, za svaki posao se stvara direktorij /opt/gw/var/<id_posla> u kojem se spremaju međurezultati i dnevnik posla.
Podnošenje posla se ostvaruje naredbom:
gwsubmit -t <opis_posla> [-n <broj_izvođenja>]
Prikaz podataka o svim pokrenutim poslovima (završeni poslovi ostaju u redu u stanju done):
gwps [-c (clear)] [-d <delay_seconds>]
Prikaz svih raspoloživih CE čvorova:
gwhost
Zaustavljanje posla:
gwkill [-a] <id_posla>
Primjeri korištenja
1. Dohvat svih raspoloživih CE-ova:
$ gwhost HID PRIO OS ARCH MHZ %CPU MEM(F/T) DISK(F/T) N(U/F/T) LRMS HOSTNAME 0 1 Linux2.6.18-164 x86_6 2660 800 12963/16053 298292/303428 0/49/128 SGE ce.gradri.cro-ngi.hr 1 1 Linux2.6.9-78.0 x86_6 2667 645 15638/16053 149091/153829 0/35/128 PBS ce.etfos.cro-ngi.hr 2 1 Linux2.6.18-128 x86_6 2692 1600 47961/64523 602173/623861 34/206/256 SGE ce.srce.cro-ngi.hr 3 1 Linux2.6.9-78.0 x86_6 2333 800 15395/16052 149331/154425 0/97/128 SGE ce.irb.cro-ngi.hr 5 1 Linux2.6.18-164 x86_6 2333 700 15555/16053 149792/154425 0/98/128 PBS ce.fesb.cro-ngi.hr
2. Primjer skripte za izvođenje serijskog posla (sve datoteke su na lokalnom računalu)
EXECUTABLE=mojProgram STDOUT_FILE=mojProgram.out STDERR_FILE=mojProgram.err
3. Primjer skripte za izvođenje serijskog posla (izvršna datoteka je na udaljenom računalu)
EXECUTABLE=/usr/local/bin/mojProgram STDOUT_FILE=mojProgram.out STDERR_FILE=mojProgram.err
4. Primjer skripte za izvođenje MPI posla
EXECUTABLE=mojMPIProgram STDOUT_FILE=mojMPIProgram.out STDERR_FILE=mojMPIProgram.err TYPE = "mpi" NP = 4
5. Primjer skripte za izvođenje MPI posla na 32-bitnom CE čvoru
EXECUTABLE=mojMPIProgram STDOUT_FILE=mojMPIProgram.out STDERR_FILE=mojMPIProgram.err TYPE = "mpi" NP = 4 REQUIREMENTS = (ARCH = "x86")
6. Primjer izvođenja programa Gaussian (64-bit):
EXECUTABLE=/usr/local/bin/dog03-64 ARGUMENTS=test230.com INPUT_FILES=test230.com OUTPUT_FILES=test230.log STDOUT_FILE=output/stage.gt2.out STDERR_FILE=output/stage.gt2.err TYPE = "single" NP = 4 REQUIREMENTS = (ARCH = "x86_64")
