Uvod
Za raspoređivanje i upravljanje poslovima na računalnom klasteru Padobran, koristi se PBS (Portable Batch System) koji obavlja raspoređivanje poslova unutar klastera. Njegova primarna zadaća je raspodjela računalnih zadataka, tj. paketnih poslova, među dostupnim računalnim resursima.
U ovom dokumentu opisano je korištenje PBS 22.05.11 verzije
Izvođenje poslova
Korisničke aplikacije (u nastavku poslovi) koji se pokreću pomoću sustava PBS moraju biti opisani startnom shell skritpom (sh, bash, zsh...). Unutar startne skripte iznad normalnih naredbi, navode se PBS parametri. Te parametre moguće je navesti i prilikom podnošenja posla.
Osnovno pokretanje posla:
Code Block |
---|
|
qsub moj_posao.pbs |
Pokretanje posla uz parametre:
Code Block |
---|
|
qsub -q cpu -l walltime=10:00:00 -l select=1:ncpus=4:mem=10GB moj_posao.pbs |
Više informacija za qsub parametre:
Nakon podnošenja posla moguće je pogledati standardni izlaz i grešku posla koji je u stanju izvođenja naredbama:
Code Block |
---|
qcat jobID
qcat -e jobID
qtail jobID
qtail -e jobID |
Podnošenje poslova
Postoji nekoliko načina na koji se poslovi mogu podnijeti:
- interaktivnim podnošenjem
- korištenjem skripte
- u interaktivnoj sjednici
- poljima poslova
U slučaju interaktivnog podnošenja, direktnim pozivanjem naredbe qsub
će se u terminalu otvoriti uređivač teksta, putem kojeg se podnose naredbe za izvršavanje:
Code Block |
---|
|
# pokreni qsub
[korisnik@padobran:~] $ qsub
Job script will be read from standard input. Submit with CTRL+D.
echo "Hello world"
# ispiši sadržaj direktorija
[korisnik@padobran:~] $ ls -l
total 5140716
-rw------- 1 korisnik hpc 0 Jun 1 07:44 STDIN.e14571
-rw------- 1 korisnik hpc 12 Jun 1 07:44 STDIN.o14571
# ispiši sadržaj izlazne datoteke
[korisnik@padobran:~] $ cat STDIN.o14571
Hello world |
U slučaju podnošenja skriptom, naredbe za izvršavanje možemo zadati u ulaznoj datoteci koju podnosimo:
Code Block |
---|
|
# ispiši datoteku hello.sh
[korisnik@padobran:~] $ cat hello.sh
#!/bin/bash
#PBS -N hello
echo "Hello world"
# podnošenje skripte posla
[korisnik@padobran:~] $ qsub hello.sh
# ispis sadržaja direktorija
[korisnik@padobran:~] $ ls -l
total 5140721
-rw------- 1 korisnik hpc 0 Jun 1 07:44 STDIN.e14571
-rw------- 1 korisnik hpc 12 Jun 1 07:44 STDIN.o14571
-rw------- 1 korisnik hpc 0 Jun 1 08:02 hello.e14572
-rw------- 1 korisnik hpc 12 Jun 1 08:02 hello.o14572
-rw-r--r-- 1 korisnik hpc 46 Jun 1 07:55 hello.sh
# ispis sadržaja datoteke
[korisnik@padobran:~] $ cat hello.o14572
Hello world |
U slučaju interaktivne sjednice, korištenjem opcije qsub -I
bez ulazne skripte otvorit će se terminal na glavnom radnom čvoru unutar kojeg možemo pokretati komande:
Code Block |
---|
|
# hostname na pristupnom poslužitelju
[korisnik@padobran:~] $ hostname
padobran.srce.hr
# otvaranje interaktivne sjednice
[korisnik@padobran:~] $ qsub -I -N hello-interactive
qsub: waiting for job 106.admin to start
qsub: job 106.admin ready
# hostname na glavnom radnom čvoru
[korisnik@node034:~] $ hostname
node034.padobran |
U slučaju polja poslova, korištenjem opcije qsub -J X-Y[:Z]
možemo podnijeti zadani broj identičnih poslova u rangu X
do Y
s korakom Z
:
Code Block |
---|
|
# podnošenje polja poslova
[korisnik@padobran:~] $ qsub -J 1-10:2 hello.sh
107[].admin
# ispis sadržaja datoteke
[korisnik@padobran:~] $ ls -l
total 5140744
-rw------- 1 korisnik hpc 0 Jun 1 07:44 STDIN.e14571
-rw------- 1 korisnik hpc 12 Jun 1 07:44 STDIN.o14571
-rw------- 1 korisnik hpc 0 Jun 1 08:02 hello.e14572
-rw------- 1 korisnik hpc 0 Jun 1 08:21 hello.e14575.1
-rw------- 1 korisnik hpc 0 Jun 1 08:21 hello.e14575.3
-rw------- 1 korisnik hpc 0 Jun 1 08:21 hello.e14575.5
-rw------- 1 korisnik hpc 0 Jun 1 08:21 hello.e14575.7
-rw------- 1 korisnik hpc 0 Jun 1 08:21 hello.e14575.9
-rw------- 1 korisnik hpc 12 Jun 1 08:02 hello.o14572
-rw------- 1 korisnik hpc 12 Jun 1 08:21 hello.o14575.1
-rw------- 1 korisnik hpc 12 Jun 1 08:21 hello.o14575.3
-rw------- 1 korisnik hpc 12 Jun 1 08:21 hello.o14575.5
-rw------- 1 korisnik hpc 12 Jun 1 08:21 hello.o14575.7
-rw------- 1 korisnik hpc 12 Jun 1 08:21 hello.o14575.9
-rw-r--r-- 1 korisnik hpc 46 Jun 1 07:55 hello.sh |
Tip |
---|
|
Ovaj način poželjan je naspram višetrukog podnošenja (npr. for petljom) jer: - smanjuje opterećenje reda poslova - svaki posao će se istovremeno natjecati za resurse sa svima ostalim u redu, umjesto jedan za drugim
- lakše upravljanje - modifikacija svih poslova moguća je pozivom glavnog (npr.
14575[] ) ili pojedinačnog (npr. 14575[3] ) identifikatora posla
Varijable okoliša koje PBS definira pri njihovom izvršavanju su: PBS_ARRAY_INDEX - redni broj podposla u polju poslova (npr. jedan do devet u primjeru gore)PBS_ARRAY_ID - identifikator glavnog polja poslovaPBS_JOBID - identifikator podposla u polju poslova
|
Opis posla
Za opisivanje poslova koristi se jezik sustava PBS, dok datoteka za opis posla je standardna shell skripta. U zaglavlju svake skripte navode se PBS parametri koji detaljno opisuju posao nakon kojih slijede naredbe za izvršavanje željene aplikacije.
Struktura startne skripte:
Code Block |
---|
language | bash |
---|
title | moj_posao.pbs |
---|
|
#!/bin/bash
#PBS -<parametar1> <vrijednost>
#PBS -<parametar2> <vrijednost>
<naredba> |
Konkretni primjer startne skripte:
Code Block |
---|
language | bash |
---|
title | moj_posao.pbs |
---|
|
#!/bin/bash
#PBS -P testni_primjer
#PBS -e /home/moj_direktorij
#PBS -q cpu
#PBS -l walltime=00:01:00
#PBS -l select=1:ncpus=10
module load mpi/openmpi-x86_64
mpicc --version |
Osnovni PBS parametri
Opcija | Argument opcije | Značenje opcije |
-N | ime | Postavljanje imena posla |
-q | destinacija | Specificiranje reda posla i/ili servera |
-l | lista_resursa | Traženje resursa potrebnih za izvođenje posla |
-M | lista_korisnika | Postavljanje liste primatelja mail-a |
-m | opcije_maila | Postavljanje vrste notifikacije mail-a |
-o | putanja/do/željenog/direktorija | Postavljanje imena/putanje u koje se sprema standardni izlaz |
-e | putanja/do/željenog/direktorija | Postavljanje imena/putanje u koje se sprema standardna greška |
-j
| oe | Povezivanje standardnog izlaza i greške u istu datoteku |
-Wgroup_list | šifra_projekta | Odabir projekta pod kojim će se izvoditi posao |
Opcije za slanje obavijesti putem pošte opcijom -m:
a | Mail se šalje kada batch sustav prekine posao |
b | Mail se šalje kada se posao počne izvršavati |
e | Mail se šalje kada posao završi |
j | Mail se šalje za podposlove. Mora se kombinirati s jednom ili više podopcija a, b ili e |
Code Block |
---|
language | bash |
---|
title | Primjer maila |
---|
|
#!/bin/bash
#PBS -q cpu
#PBS -l walltime=00:01:00
#PBS -l select=1:ncpus=2
#PBS -M <ime>@srce.hr,<ime2>@srce.hr
#PBS -m be
echo $PBS_JOBNAME > out
echo $PBS_O_HOST |
Dobivena su dva maila
Code Block |
---|
language | text |
---|
title | Početak posla |
---|
|
PBS Job Id: 110.admin
Job Name: pbs.pbs
Begun execution |
Code Block |
---|
language | text |
---|
title | Završetak posla |
---|
|
PBS Job Id: 110.admin
Job Name: pbs.pbs
Execution terminated
Exit_status=0
resources_used.cpupercent=0
resources_used.cput=00:00:00
resources_used.mem=0kb
resources_used.ncpus=2
resources_used.vmem=0kb
resources_used.walltime=00:00:01 |
Opcije za traženje resursa opcijom -l
-l select=3:ncpus=2 | Traženje 3 komada(chunk-a) čvora po 2 jezgre (ukupno 6 jezgri) |
-l select=1:ncpus=10:mem=20GB | Traženje 1 komada(chunka-a) čvora sa 10 jezgri i 20GB radne memorije |
-l ngpus=2 | Traženje 2 gpu-a |
-l walltime=00:10:00 | Maksimalno vrijeme izvršenja posla. Više na redovi poslova |
PBS varijable okoline
Ime | Opis |
---|
PBS_JOBID | Identifikator posla koji daje PBS kada se posao preda. Stvoreno nakon izvršenja naredbe qsub. |
PBS_JOBNAME | Naziv posla koji je dao korisnik. Zadani naziv je naziv podnešene skripte. |
PBS_NODEFILE | Popis radnih čvorova, odnosno procesorskih jezgri na kojima se izvršava posao |
PBS_O_WORKDIR | Radni direktorij u kojem je podnesen posao, odnosno u kojem je pozvana naredba qsub. |
OMP_NUM_THREADS | OpenMP varijabla koju PBS izvozi u okolinu, a koja je jednaka vrijednosti opcije ncpus iz zaglavlja PBS skripte |
NCPUS | Broj zatraženih jezgara. Odgovara vrijednosti iz opcije ncpus iz zaglavlja PBS skripte. |
TMPDIR | Putanja do privremenog direktorija. |
Tip |
---|
title | Određivanje radnog direktorija |
---|
|
Dok je u PBS određena putanja za output i error datoteke u direktoriju u kojem se izvode, input i output datoteke samog programa se zadano učitavaju/spremaju u $HOME direktorij. PBS nema opciju određivanja izvođenja posla u trenutnom direktoriju u kojem se nalazimo stoga je potrebno ručno promijeniti direktorij. Ukoliko se želite prebaciti u direktorij u kojem je pokrenuta skripta, poslije zaglavlja potrebno je napisati: cd $PBS_O_WORKDIR Ukoliko želite pokretati poslove visokog opterećenja spremišta (I/O zahtjevni) izvođenje posla ne preporuča se pokretanje iz $PBS_O_WORKDIR-a već sa $TMPDIR lokacije čime će se iskoristiti brzo spremište. U nastavku pročitajte više o korištenju brzog spremišta i privremenim rezultatima. |
Dodjeljivanje resursa poslovima
PBS omogućava definiranje potrebnih resursa na nekoliko načina. Glavna jednica za dodjeljivanje resursa je takozvani "Chunk" ili komad čvora. Chunk se definira sa sa opcijom select. Broj procesorskih jezgri jezgri po chunk-u moguće je definirati sa ncpus, broj mpi procesa sa mpiprocs i količinu radne memorije sa mem. Također moguće je definirati walltime (maksimalno vrijeme izvođenja posla) i place (način raspodjeljivanja chunk-ova po čvorovima).
Ukoliko neki od parametara nisu definirani koristiti će se defaultne vrijednost:
Parametar | Defaultna vrijednost |
---|
select | 1 |
ncpus | 1 |
mpiprocs | 1 |
mem | 3500 MB |
walltime | 4320:00:00 |
place | pack |
Kontrola memorije pomoću cgrupa
Osim za kontrolu korištenja procesora, cgrupe postavljene su da kontroliraju i potrošnju memorije. To znači da su poslovi koje korisnik pokreće ograničene na traženu količinu memorije. Ako posao pokuša iskoristiti više memorije nego je to zatraženo u opisu posla, sustav će ubiti taj posao i u izlaznu error datoteku zapisati:
Code Block |
---|
language | bash |
---|
title | Poruka za korisnika kojemu cgrupe ubiju posao zbog nedostatka memorije |
---|
|
-bash: line 1: PID Killed /var/spool/pbs/mom_priv/jobs/JOB_ID.SC
Cgroup mem limit exceeded: oom-kill:constraint=CONSTRAINT_MEMCG,nodemask=(null),cpuset=_JOB_ID,mems_allowed=0,oom_memcg=/pbs_jobs.service/jobid/JOB_ID,task_memcg=/pbs_jobs.service/jobid/JOB_ID,task=JOB_ID,pid=PID,uid=UID
|
Kod svakog posla ova poruka bit će malo drugačija, jer sadrži podatke kao što su UID (jedinstvena brojčana oznaka korisnika), PID( brojčana oznaka procesa koji je ubijen), JOB_ID (ID posla koji dodijeljuje PBS).
Dodijeljivanje po traženom chunku
PBS omogućava traženje resursa u paketima ( chunkovima) što korisnicima daje veliku slobodu pri opisivanju poslova. Chunk je po definiciji set resursa dodijeljen poslu kao cijelina, definiran unutar select naredbe. Svi dijelovi chunka dolaze na jednom čvoru. Kod MPI poslova tipično dolazi jedan chunk po MPI- procesu.
Primjeri:
Korisnik traži dva chunka od kojih se svaki sastoji od 10 procesorskih jezgara i 10GB RAM-a, s time da korisnik nije specificirao na koliko čvorova već će sustav optimizirati dodijelu. U ovom slučaju korisnik će na korištenje dobiti 20 procesorskih jezgara i 20 GB radne memorije (moguće po 10 na dva čvora)
Code Block |
---|
language | bash |
---|
title | Primjer traženja resursa |
---|
|
#PBS -l select=2:ncpus=10:mem=10GB |
Korisnik traži 10 chunkova od kojih se svaki sastoji od jedne procesorske jezgre i 1 GB RAM-a, ali uvjetovano na jednom čvoru, pa će korisnik dobiti ukupno 10 procesorskih jezgara i 10 GB RAM-a.
Code Block |
---|
language | bash |
---|
title | Primjer traženja resursa |
---|
|
#PBS -l select=10:ncpus=1:mem=1GB:place=pack |
U gornjim primjerima poslovi su definirani kroz količinu chunkova, jezgara i memorije, ali sustav dozvoljava da se poslovima dodijeljuju resursi ako oni nisu zatraženi (default resursi):
Code Block |
---|
language | bash |
---|
title | Primjer traženja resursa |
---|
|
#PBS -l ncpus=4:mem=14GB |
U ovom slučaju korisnik dobiva 4 procesorske jezgre i ukupno 14GB memorije na jednom chunku.
Tip |
---|
|
Ukoliko definirate poslove koristeći ncpus bez opcije select, poželjno je definirati i količinu memorije, jer će u suprotnom dostupna radna memorija iznositi 3500 MB (select x mem → 1 x 3500 MB). |
Spremanje privremenih rezultata
Za spremanje privremenih rezultata koji se generiraju tijekom izvođenja može se koristiti $TMPDIR direktorij umjesto $HOME direktorija. Korištenjem $TMPDIR-a iskorištava se brzo spremište (BeeGFS-fast) rezervirano za pohranu privremenih datoteka.
PBS za svaki pojedini posao kreira privremeni direktorij na adresi pohranjenoj u varijabli $TMPDIR (/beegfs-fast/scratch/<jobID>).
Warning |
---|
Privremeni direktorij se briše automatski po završetku izvođenja posla! |
Primjeri korištenja
- Primjer jednostavnog korištenja $TMPDIR varijable:
Code Block |
---|
#!/bin/bash
#PBS -q cpu
#PBS -l walltime=00:00:05
cd $TMPDIR
pwd > test
cp test $PBS_O_WORKDIR |
- Primjer kopiranja ulaznih podataka u $TMPDIR, pokretanje aplikacije, i kopiranje u radni direktorij:
Code Block |
---|
#!/bin/bash
#PBS -q cpu
#PBS -l walltime=00:00:05
# Stvaranja direktorija za ulazne podatke u privremenom direktoriju
mkdir -p $TMPDIR/data
# Kopirati sve potrebne inpute u privremeni direktorij
cp -r $HOME/data/* $TMPDIR/data
# Pokrenuti aplikaciju i preusmjeriti outpute u "aktualni" (privremeni) direktorij
<izvršna naredba aplikacije> 1>output.log 2>error.log
# Kopirati željeni output u radni direktorij
cp -r /$TMPDIR/output $PBS_O_WORKDIR |
Paralelni poslovi
OpenMP paralelizacija
Ukoliko Vaša aplikacija koristi paralelizaciju isključivo na razini OpenMP dretvi (engl. threads) i ne može se širiti van jednog radnog čvora (odnosno radi s dijeljenom memorijom), posao možete pozvati na način kako je prikazano u primjeru xTB aplikacije niže.
Tip |
---|
OpenMP aplikacije zahtjevaju definiranje varijable OMP_NUM_THREADS . PBS sustav vodi računa o tome umjesto Vas, te joj pridružuje vrijednost varijable ncpus , definirane u zaglavlju PBS skripte. Ukoliko definirate poslove koristeći ncpus bez opcije select, poželjno je definirati i količinu memorije, jer će u suprotnom dostupna radna memorija iznositi 3500 MB (select x mem → 1 x 3500 MB). |
Code Block |
---|
language | bash |
---|
linenumbers | true |
---|
|
#!/bin/bash
#PBS -q cpu
#PBS -l walltime=10:00:00
#PBS -l ncpus=8:mem=28GB
cd ${PBS_O_WORKDIR}
xtb C2H4BrCl.xyz --chrg 0 --uhf 0 --opt vtight |
MPI paralelizacija
Ukoliko Vaša aplikacija koristi paralelizaciju isključivo na razini MPI procesa i može se širiti van jednog radnog čvora (odnosno radi s raspodijeljenom memorijom), posao možete pozvati na način kako je prikazano u primjeru Quantum ESPRESSO aplikacije niže. Za izvođenje aplikacija koje koriste paralelizaciju MPI (ili hibridno MPI+OMP) potrebno je učitati mpi modul prije pozivanja naredbe mpiexec ili mpirun.
Tip |
---|
Vrijednost varijable select iz zaglavlja PBS skripte odgovara broju MPI procesa. |
Code Block |
---|
language | bash |
---|
linenumbers | true |
---|
|
#!/bin/bash
#PBS -q cpu
#PBS -l walltime=10:00:00
#PBS -l select=16
module load mpi/openmpi-x86_64
cd ${PBS_O_WORKDIR}
mpiexec pw.x -i calcite.in |
MPI + OpenMP (hibridna) paralelizacija
Ukoliko se Vaša aplikacije može paralelizirati hibridno, odnosno dijeliti svoje MPI procese u OpenMP threadove, možete posao pozvati na način kako je prikazano u primjeru GROMACS aplikacije niže:
Tip |
---|
OpenMP aplikacije zahtijevaju definiranje varijable OMP_NUM_THREADS . PBS sustav joj automatski pridružuje vrijednost varijable ncpus , definirane u zaglavlju PBS skripte. Vrijednost varijable select iz zaglavlja PBS skripte odgovara broju MPI procesa. |
Code Block |
---|
language | bash |
---|
linenumbers | true |
---|
|
#!/bin/bash
#PBS -q cpu
#PBS -l walltime=10:00:00
#PBS -l select=8:ncpus=4:mem=14GB
module load mpi/openmpi-x86_64
cd ${PBS_O_WORKDIR}
mpiexec -d ${OMP_NUM_THREADS} --cpu-bind depth gmx mdrun -v -deffnm md |
Praćenje i upravljanje izvođenja posla
Praćenje posla
Za prikaz stanja poslova koristi se PBS-ova naredba qstat. Osnovna sintaksa naredbe je:
Code Block |
---|
|
qstat <opcije> <ID_posla> |
Izvršavanjem naredbe qstat bez dodatnih opcija dobiva se ispis svih trenuthi poslova svih korisnika:
Code Block |
---|
|
Job id Name User Time Use S Queue
---------------- ---------------- ---------------- -------- - -----
111.admin mpi+omp_s kmrkalj 00:36:09 R cpu |
Neke od korištenijih opcija su:
-E | Grupira poslove prema poslužitelju i prikazuje poslove poredane prema uzlaznom ID-u. Kada se qstat prikaže s popisom poslova, poslovi su grupirani po poslužitelju i svaka grupa je prikazana uzlaznim ID-om. Ova opcija također poboljšava performanse qstata. |
-t | Prikazuje informacije o statusu za poslove, nizove poslova i podposlove. |
-p | Prikaz stupca za Iskorišteno vrijeme zamjenjuje se postotkom obavljenog posla. Za posao niza ovo je postotak završenih podposlova. Za normalan posao, to je postotak iskorištenog dodijeljenog CPU vremena. |
-x | Prikazuje informacije o statusu za dovršene i premještene poslove uz poslove u čekanju i pokrenute poslove. |
-Q | Prikazuje status redova u standardnom formatu. |
-q | Prikazuje status redova u alternativnom formatu. |
-f | Prikazuje status posla u alternativnom formatu |
Primjeri korištenja:
Detaljan prikaz posla:
Code Block |
---|
|
qstat -fxw 2648 |
Tracejob naredba vadi i prikazuje log poruke za PBS posao po kronološkom redu.
Code Block |
---|
|
tracejob <ID_posla> |
Primjer:
Code Block |
---|
|
$ tracejob 111
Job: 111.admin
03/30/2023 11:23:24 L Considering job to run
03/30/2023 11:23:24 S Job Queued at request of mhrzenja@node034, owner =
mhrzenja@node034, job name = mapping, queue = cpu
03/30/2023 11:23:24 S Job Run at request of Scheduler@node034 on exec_vnode
(node034:ncpus=40:mem=104857600kb)
03/30/2023 11:23:24 L Job run
03/30/2023 11:23:24 S enqueuing into cpu, state Q hop 1
03/30/2023 11:23:56 S Holds u set at request of mhrzenja@node034
03/30/2023 11:24:22 S Holds u released at request of mhrzenja@node034
|
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> |
Vraćanje natrag na red čekanja:
Code Block |
---|
|
qrls <ID_posla> |
Posao se u potpunosti zaustavlja ili miče iz reda čekanja naredbom:
Code Block |
---|
qdel <ID_posla> |
Za zaglavljene poslove treba koristiti prisilno zaustavljanje:
Code Block |
---|
|
qdel -W force -x <ID_posla> |
Odgađanje izvođenja
PBS pruža mogućnost izvođenja poslova u ovisnosti o drugima, što je korisno u slučajevima poput:
- izvršavanje poslova ovisi o izlazu ili stanju prethodno izvršenog
- aplikacija zahtijeva sekvencijalno izvođenje raznih komponenata
- ispis podataka jednog posla može ugroziti izvođenje drugog
Direktiva koja omogućuje ovu funkcionalnost pri trenutnom podnošenju posla je:
Code Block |
---|
|
qsub -W depend=<tip>:<ID_posla>[:<ID_posla>] ... |
Gdje < tip>
može biti:
-
after*
- pokretanje trenutnog s obzirom na ostale
-
after
- izvršavanje trenutnog nakon početka izvršavanja navedenih -
afterok
- izvršavanje trenutnog nakon uspješnog završetka navedenih
-
afternotok
-izvršavanje trenutnognakon greške u završetku navedenih
-
afterany
- izvršavanje trenutnog nakon završetka navedenih
-
before*
- pokretanje ostalih s obzirom na trenutni-
before
- pokretanjenavedenih nakon početka trenutnog
-
beforeok
- pokretanjenavedenih nakon usprešnog završetka trenutnog
-
beforenotok
- pokretanjenavedenih nakon greške u izvršavanju trenutnog -
beforeany
- pokretanjenavedenih nakon završetka trenutnog
-
on:<broj>
- izvršavanje posla koji će ovisiti o naknadno navedenom broju before*
tipa poslova
Note |
---|
Posao s direktivom -W depend=... neće biti podnesen ako navedeni ID-ovi poslova ne postoje (iliti, ako nisu u redu čekanja) |
Primjeri
Ako želimo da posao1
započne nakon uspješnog završetka posao0
:
Code Block |
---|
[korisnik@padobran] $ qsub posao0
1000.admin
[korisnik@padobran] $ qsub -W depend=afterok:1000 posao1
1001.admin
[korisnik@padobran] $ qstat 1000 1001
Job id Name User Time Use S Queue
--------------------- ---------------- ---------------- -------- - -----
1000.admin posao0 korisnik 00:00:00 R cpu
1001.admin posao1 korisnik 0 H cpu |
Ako želimo da posao0
započne tek nakon uspješnog završetka posao1
:
Code Block |
---|
[korisnik@padobran] $ qsub -W depend=on:1 posao0
1002.admin
[korisnik@padobran] $ qsub -W depend=beforeok:1002 posao1
1003.admin
[korisnik@padobran] $ qstat 1002 1003
Job id Name User Time Use S Queue
--------------------- ---------------- ---------------- -------- - -----
1002.admin posao0 korisnik 0 H cpu
1003.admin posao1 korisnik 00:00:00 R cpu |