Page tree
Skip to end of metadata
Go to start of metadata
Sadržaj

Uvod


WMS (engl. Workload Management System) je sustav koji omogućava izvođenje poslova na EGI čvorovima.

BITNO! Za rad s sustavom WMS potrebno je imati aktivan zastupnički certifikat pohranjen na podrazumijevanoj lokaciji (/tmp/x509_u<user_id>). Zastupnički certifikat će biti spremljen na podrazumijevanoj lokaciji ako se koristi voms-proxy-init.

Opisivanje poslova


Poslovi se opisuju pomoću JDL jezika(https://edms.cern.ch/file/590869/1/WMS-JDL.pdf).

Osnovni parametri JDL jezika su:


AtributOpis
Type

Vrsta zahtjeva

− Job
− DAG
− Reservation
− Co-allocation
JobType

Vrsta posla

− Normal
− Interactive
− Checkpointable
− MPICH
− Partitionable 
− Checkpointable, Interactive
− Checkpointable, MPICH
ExecutableIme izvršnog programa (path)
ArgumentsArgumenti izvršnog programa
StdInputIme datoteke iz koje se uzima standardni ulaz (stdin)
StdOutputIme datoteke u koju se sprema standardni izlaz (stdout)
StdErrorIme datoteke u koju se sprema standardna greška (stderr)
InputSandboxLista datoteka koje je potrebno prenijeti na udaljeno računalo.
OutputSandboxLista datoteka koje je potrebno prenijeti sa udaljenog računalo na lokalno.
Environment

Varijable okoline potrebne za izvođenje posla

Environment = {“JOB_LOG_FILE=/tmp/myjob.log”, 
“ORACLE_SID=edg_rdbms_1”, 
“JAVABIN=/usr/local/java”};
InputDataLista logičkih imena datoteka(LFN) ili GUID-a (Grid Unique ID-entifiers) potrebnih za izvođenje posla
DataAccessProtocolLista protokola kojima aplikacija može pristupiti datotekama navedenim u InputData bloku
OutputSEURI podatkovnog elementa gdje se žele spremiti izlazni podaci
VirtualOrganisationVO čiji je član korisnik koji kreira zahtjev za izvođenjem posla
MyProxyServerAdresa MyProxy poslužitelja s dugotrajnim zastupničkim certifikatom
RetryCountMaksimalan broj pokušaja ponovnog pokretanja posla uslijed greške.
NodeNumberBroj čvorova potrebnih za MPI posao. Mora biti veći od 1.
RequirementsUvjeti koje sjedište mora ispunjavati
RankParametar koji definira ocjenu sjedišta koja zadovoljavaju uvjete navedene u Requirements bloku


Napomena: ukoliko je izvršni program shell skripta, nužno je na početku skripte navesti liniju:

#!/bin/<ime_shella>

U suprotnom će WMS prilikom izvođenja prijaviti pogrešku.

WMProxy

Prije slanja zahtjeva za izvođenje poslova potrebno je omogućiti korisniku delegaciju WMProxy servisa.

glite-wms-job-delegate-proxy -d <delegationID>

Moguće je definirati ID delegacije sa -d opcijom ili generirati automatski ID koristeći opciju -a. Obavezno je navesti samo jednu od opcija, opciju -d ili -a.

Prijenos datoteka

Ukoliko je potrebno obaviti prijenos datoteka na udaljeno sjedište prije pokretanja posla i datoteka sa udaljenog sjedišta po završetku, koriste se sljedeći parametri:

InputSandbox = <file>[, <file>]...
OutputSandbox = <file>[, <file>]...

Datoteke u listi InputSandbox mogu biti definirane relativnim (npr. mojFile, mojDir/mojFile) ili apsolutnim putanjama (/home/ja/mojiFileovi/mojFile). Na udaljenom sjedištu sve će navedene datoteke biti smještene u radnom direktoriju posla. Posao bi onda trebao sve ulazne datoteke uzimati iz radnog direktorija.

Datoteke u list OutputSandbox se preporuča definirati isključivo relativnim putanjama. Posao bi trebao spremati sve izlazne datoteke u radni direktorij.

MPI poslovi

Za pokretanje MPI poslova na EGI okolini potrebno je koristiti MPI-Start mehanizam. To zahtjeva postavljanje sljedeće linije u Requirements blok .jdl datoteke za specifikaciju posla.

Member("MPI-START”, other.GlueHostApplicationSoftwareRunTimeEnvironment)

Također za izvršnu datoteku posla postavlja se posebna skripta koja pokreće MPI putem MPI-Start mehanizma. Skripta izgleda ovako:

#!/bin/sh
# This is a script to show how mpi-start is called

# Set environment variables needed by mpi-start
export I2G_MPI_APPLICATION=/bin/hostname
export I2G_MPI_APPLICATION_ARGS=
export I2G_MPI_NP=2
export I2G_MPI_TYPE=openmpi
export I2G_MPI_FLAVOUR=openmpi
export I2G_MPI_JOB_NUMBER=0
export I2G_MPI_STARTUP_INFO=/home/pperic
export I2G_MPI_PRECOMMAND=time
export I2G_MPI_RELAY=
export I2G_MPI_START=/opt/i2g/bin/mpi-start

# optional hooks
#export I2G_MPI_PRE_RUN_HOOK=hooks.sh
#export I2G_MPI_POST_RUN_HOOK=hooks.sh
 
# If these are set then you will get more debugging information.
#export I2G_MPI_START_VERBOSE=1
#export I2G_MPI_START_TRACE=1
#export I2G_MPI_START_DEBUG=1 

# Execute mpi-start
$I2G_MPI_START

Ova skripta služi za definiranje izvršne datoteke, verzije MPI-a koji se koristi, uključivanja debug načina rada itd.

Osvježavanje zastupničkih certifikata


Prilikom izvođenja dugotrajnih poslova ili podnošenja velike količine poslova potrebno je osigurati osvježavanje zastupničkog certifikata. WMS obavlja osvježavanje zastupničkih certifikata delegiranih servisu na CE čvoru. Međutim korisnik je dužan WMS-u osigurati valjani certifikat.

Za osiguravanje dugotrajnog zastupničkog certifikata koristi se MyProxy sustav poslužitelja.

Upravljanje poslovima


Tri su osnovne naredbe za upravljanje poslovima:

Podnošenje zahtjeva za pokretanjem posla

glite-wms-job-submit -d <delegationID> <JDL-script>

Korisna je -o opcija

   -o <JobID_file> : spremanje ID-ja posla u datoteku <JobID_file>

Zahtjev za informacijom o trenutnom stanju posla

glite-wms-job-info <JobID>

Korisna je -i opcija

   -i <JobID_file> : datoteka s listom ID-jeva posla

Zahtjev za prekidanje izvođenja posla

glite-wms-job-cancel <JobID>

Korisna je -i opcija

   -i <JobID_file> : datoteka s listom ID-jeva posla

Dohvat izlaznih datoteka u radnom direktoriju posla


Za korisnike EGI-ja nakon izvođenja posla potrebno je zatražiti dohvat izlaznih datoteka.

glite-wms-job-output <JobID>

Korisna je -i opcija

   -i <JobID_file> : datoteka s listom ID-jeva posla

Datoteke koje ce sustav dohvatiti su definirane u OutputSandobox bloku JDL skripte.

Primjeri izvođenja


1. Primjer skripte za izvođenje serijskog posla pomoću WMS(sve datoteke su na lokalnom računalu)

Executable = "mojProgram";
StdOutput = "mojProgram.out";
StdError = "mojProgram.err";
InputSandbox = {"mojProgram"};
OutputSandbox = {"mojProgram.out","mojProgram.err"};

2. Primjer skripte za izvođenje serijskog posla pomoću WMS(izvršna datoteka je na udaljenom računalu)

Executable = "mojProgram";
StdOutput = "mojProgram.out";
StdError = "mojProgram.err";
OutputSandbox = {"mojProgram.out","mojProgram.err"};

3. Primjer skripte za izvođenje 10 serijskih poslova pomoću WMS(izvršna datoteka je na udaljenom računalu, izlaz i greška će imati nastavke _i_)

JobType = "Parametric";
Executable = "myjob.exe";
StdInput = "input_PARAM_.txt";
StdOutput = "output_PARAM_.txt";
StdError = "error_PARAM_.txt";
Parameters = 10;
ParameterStart = 1;
ParameterStep = 1;
InputSandbox = {"myjob.exe", "input_PARAM_.txt";
OutputSandbox = {"output_PARAM_.txt", "error_PARAM_.txt"};

4. Primjer skripte za izvođenje MPI posla pomoću WMS

JobType        = "Normal";
NodeNumber     = 16;
Executable     = "mpi-start-wrapper.sh";
Arguments      = "mpi-job.sh OPENMPI";
StdOutput      = "std.out";
StdError       = "std.err";
InputSandbox   = {"mpi-start-wrapper.sh","mpi-job.sh"};
OutputSandbox  = {"std.err","std.out"};
Requirements    =
 Member("MPI-START”, other.GlueHostApplicationSoftwareRunTimeEnvironment)
 && Member("OPENMPI”, other.GlueHostApplicationSoftwareRunTimeEnvironment);

Pripadajuća mpi-start-wrapper.sh skripta

#!/bin/bash

MY_EXECUTABLE=$1
MPI_FLAVOR=$2

# Convert flavor to lowercase for passing to mpi-start.
MPI_FLAVOR_LOWER=`echo $MPI_FLAVOR | tr '[:upper:]' '[:lower:]'`

# Pull out the correct paths for the requested flavor.
eval MPI_PATH=`printenv MPI_${MPI_FLAVOR}_PATH`

# Ensure the prefix is correctly set.  Don't rely on the defaults.
eval I2G_${MPI_FLAVOR}_PREFIX=$MPI_PATH
export I2G_${MPI_FLAVOR}_PREFIX

# Touch the executable.  It exist must for the shared file system check.
# If it does not, then mpi-start may try to distribute the executable
# when it shouldn't.
touch $MY_EXECUTABLE
# chmod +x $MY_EXECUTABLE 

# Setup for mpi-start.
export I2G_MPI_APPLICATION=$MY_EXECUTABLE
#export I2G_MPI_APPLICATION_ARGS="./ 0 0 1"
export I2G_MPI_TYPE=$MPI_FLAVOR_LOWER
# optional hooks
#export I2G_MPI_PRE_RUN_HOOK=hooks.sh
#export I2G_MPI_POST_RUN_HOOK=hooks.sh 

# If these are set then you will get more debugging information.
#export I2G_MPI_START_VERBOSE=1
#export I2G_MPI_START_TRACE=1
#export I2G_MPI_START_DEBUG=1 

# Invoke mpi-start.
$I2G_MPI_START
  • No labels