...
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 | ||||
---|---|---|---|---|
| ||||
-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 | ||||
---|---|---|---|---|
| ||||
#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 | ||||
---|---|---|---|---|
| ||||
#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 | ||||
---|---|---|---|---|
| ||||
#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
...
Tip |
---|
OpenMP aplikacije zahtjevaju definiranje varijable PBS sustav vodi računa o tome umjesto Vas, te joj pridružuje vrijednost varijable Ukoliko deefinirate definirate poslove koristeći 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). |
...