Execució bàsica de treballs

Els passos fonamentals per executar treballs amb Condor són:

1. Preparar el treball perquè pugui ser executat de forma no interactiva.

Els treballs han d'estar preparats de forma que puguin executar-se de forma batch, és a dir, les dades d'entrada i els resultats de sortida han d'estar en fitxers perquè quan s'estiguin executant no podran fer operacions d'entrada i sortida interactives. Si l'aplicació utilitza els dispositius d'entrada i sortida estàndard (STDIN, STDOUT i STDERR), aquests també es redirigiran a fitxers.

2. Triar un univers Condor per a l'execució del treball

Condor executa cada treball sota un determinat entorn (o univers). Aquest univers determina la forma com s'executarà el treball i les possibles accions que s'hi podran fer. Els principals universos són: vanilla i standard (per a aplicacions seqüencials), MPI i PVM (per a aplicacions paral·leles), java (per aplicacions escrites en Java). Per a aplicacions seqüencials, que són les que es contemplen en aquest document, l'univers vanilla és el més simple i immediat perquè utilitza el programa de l'usuari sense necessitat de cap modificació. L'univers standard ofereix majors prestacions però requereix que l'aplicació sigui enllaçada (linkada) amb una llibreria de Condor.

3. Preparar un fitxer de descripció del treball

Qualsevol treball que es vulgui executar en el sistema Condor ha de ser descrit mitjançant un fitxer de text (ASCII pur) on s'indiquen les seves característiques i els seus requeriments.

4. Enviar el treball

Els treballs s'envien a Condor enviant el fitxer de descripció mitjançant la comanda condor_submit.

Exemple 1

Aquest és un fitxer de descripció molt simple per executar un programa que es diu hello i que tenim en un subdirectori condor del compte del usuari USER_A.

Fitxer de descripció hello.sub (el nom pot ser qualsevol).


	# Inici del fitxer (aquesta línea és un comentari)
	Universe   = vanilla
	Executable = /home/USER_A/condor/hello
	Output     = hello.out
	Error      = hello.err
	Log        = hello.log
	InitialDir = /home/USER_A/condor
	Should_transfer_files = YES
	When_to_transfer_output = ON_EXIT
	Queue
	#final del fitxer

El resultat de l'execució deixarà tres fitxers: hello.out, hello.err i hello.log dins del subdirectori condor (aquest subdirectori de treball ho indica el camp IntialDir; l'ús de subdirectoris és una bona pràctica per tenir ordenats els diferents treballs i els seus resultats). En el fitxers hello.out i hello.err hi haurà tot el que el programa hello hagi escrit a l'STDOUT i l'STDERR, respectivament. El fitxer hello.log l'omple Condor amb informació relativa a tot el que li va passant al programa hello al llarg del temps. L'ordre Queue és la que indica que el programa descrit anteriorment sigui enviat a Condor. Abans hi ha dues línies que li indiquen a Condor que sempre ha de moure els fitxers entre la màquina client i la treballadora. Aquestes opcions són innecessàries si es disposa d'un sistema d'arxius compartits, però aquesta no és la situació en què es troben els ordinadors de les aules de la UAB.

Per enviar el treball cal fer :


% condor_submit hello.sub
Submitting job(s).
1 job(s) submitted to cluster 1.

El treball ha rebut l'identificador 1. Posteriorment, amb l'ordre condor_q podem conèixer l'estat de tots els nostres treballs.


% condor_q

-- Submitter: perdita.cs.wisc.edu : <128.105.165.34:1027> : 
 ID      OWNER            SUBMITTED    RUN_TIME ST PRI SIZE CMD               
  1.0    USER_A           6/16 06:52   0+00:00:00 I  0   0.0  hello

1 jobs; 1 idle, 0 running, 0 held

%

Cada treball apareix en un línia separada on, entre d'altres informacions, s'indica el seu identificador, l'instant en que es va enviar i el seu estat. Els estats més significatius són I=idle (en espera), R=running (en execució). És important recordar que, normalment, els treballs no es posen en execució immediatament. Cal esperar que Condor refresqui la seva informació, busqui una màquina adient, mogui tots els fitxers necessaris i finalment arrenqui la nostra aplicació en la màquina remota.

Si després de passats uns quants minuts el treball continua sense posar-se en estat de running, això pot indicar alguna mena d'error. Al final del document es comenta una mica més les possibles causes d'error.

Si el treball s'executa correctament en el fitxer de log podrem veure una cosa com aquesta:


000 (8135.000.000) 05/25 19:10:03 Job submitted from host: <128.105.146.14:1816>
...
001 (8135.000.000) 05/25 19:12:17 Job executing on host: <128.105.165.131:1026>
...
005 (8135.000.000) 05/25 19:13:06 Job terminated.
	(1) Normal termination (return value 0)
		Usr 0 00:00:37, Sys 0 00:00:00  -  Run Remote Usage
		Usr 0 00:00:00, Sys 0 00:00:05  -  Run Local Usage
		Usr 0 00:00:37, Sys 0 00:00:00  -  Total Remote Usage
		Usr 0 00:00:00, Sys 0 00:00:05  -  Total Local Usage
	9624  -  Run Bytes Sent By Job
	7146159  -  Run Bytes Received By Job
	9624  -  Total Bytes Sent By Job
	7146159  -  Total Bytes Received By Job
...

5. Eliminar un treball

Per eliminar un treball cal utilitzar l'ordre condor_rm indicant-li l'identificador del treball concret que volem eliminar.


% condor_rm 1
Cluster 1 has been market for removal.

6. Veure l'estat de totes les màquines del sistema

Per saber en quin estat es troben totes les màquines que poden executar treballs Condor es pot usar la comanda condor_status.


% condor_status

Name          OpSys       Arch   State      Activity   LoadAv Mem   ActvtyTime

aula01.siee.u LINUX       INTEL  Unclaimed  Idle       0.020   502  0+01:30:04
aula02.siee.u LINUX       INTEL  Unclaimed  Idle       0.000   502  0+01:10:04
aula03.siee.u LINUX       INTEL  Unclaimed  Idle       0.000   502  0+02:15:04
aula04.siee.u LINUX       INTEL  Claimed    Busy       0.040   502  0+00:00:01

                     Machines Owner Claimed Unclaimed Matched Preempting

         INTEL/LINUX        4     0       1         3       0          0

               Total        4     0       1         3       0          0

La informació més rellevant mostrada amb aquesta comanda és:

Name
són els noms de les màquines.
OpSys
el seu sistema operatiu.
Arch
l'arquitectura de la CPU
State
estat de la màquina (Unclaimed or Claimed).
Activity
activitat que està fent aquell node des del punt de vista de Condor (Idle, desocupada; Owner, algú l'està usant; i Busy, executant un treball Condor).

A les últimes línies hi ha un resum de l'estat de totes les màquines del sistema.