• Aucun résultat trouvé

Archivos TDP-Shell script para tdp agent y tdp console

7. Casos pr´ acticos del entorno de trabajo TDP-Shell 170

7.1.2. Archivos TDP-Shell script para tdp agent y tdp console

En los dos archivos TDP-Shell scrip para tdp console,TDP-Shell script 7.5 y tdp agent, TDP-Shellscript 7.6 se pueden observar: El env´ıo de la petici´on al gestor de colas para que cree el entorno de ejecuci´on de los componentes remotos deTDP-Shell, la sincronizaci´on de la ejecuci´on de los componentes de la herramienta Gdb y la utilizaci´on de eventos as´ıncronos para informar de posibles errores durante la ejecuci´on de dichos componentes.

En la l´ıneas 9 del archivo TDP-Shell script paratdp console, se utiliza el comando tdp launch agent para que procese los archivos de descripci´on los componentes remotos de TDP-Shell, pasados como argumentos de este comando tdp y genere el archivo de descripci´on de trabajos global. Este ultimo fichero informa al gestor de colas del entorno de ejecuci´on de los componentes remotos deTDP-Shelly como ejecutar los componentes tdp agents(aprovechando el entorno de ejecuci´on de la librer´ıa MPI). Puede observarse como se informa del nombre del ejecutable de la aplicaci´on de usuario (argumentos “-e:”

“user exec MPI”), para que tanto Condor como SGE, sepan como encontrarlo en sus respectivos ficheros de descripci´on de trabajos (independencia de los archivosTDP-Shell script del gestor de colas). Para el caso de las llamadas as´ıncronas, estos dos scripts siguen el mismo proceder que en el ejemplo explicado en el apartado 4.7. El archivoTDP-Shell script que interpreta tdp console le informa, a trav´es del comando tdp asynget (l´ıneas 5,TDP-Shell script 7.5), que se llame a la funci´onerror gdbserver (l´ıneas 1,TDP-Shell script 7.5) si se produce la inserci´on de la tupla ERROR GDBSERVER en el espacio de atributos tdp. Este inserci´on de la tupla sucede si alg´un componente tdp agent (comando tdp put, l´ıneas 20, TDP-Shell script 7.6), no puede ejecutar correctamente su componente remoto de Gdb. Esta ´ultima acci´on la realizatdp agent al interpretar el comandotdp create process(l´ıneas 18) de su ficheroTDP-Shellscript. El componente tdp agent tambi´en informa, al resto de tdp agents, del error producido al ejecutar su componente remoto de Gdb, para ello utiliza la tupla END GDBSERVERS (21, TDP-Shellscript 7.6) y la funci´on as´ıncrona asociada a esta tuplaend gdbservers (l´ıneas 5,TDP-Shellscript 7.6). Por su parte, el componentetdp consoleinforma de un error al ejecutar su componente local de Gdb (comando tdp create process, l´ıneas 17,TDP-Shell script 7.5), a trav´es de la tupla ERROR GDB (comando tdp put, l´ıneas 20, TDP-Shell

7.1. Monitorizaci´on de aplicaciones MPI 175

TDP-Shell script 7.5 Fichero TDP-Shell script para tdp console

1: tdp fun error gdbserver (){

2: tdp print“ERROR en gdbserver: ”, $tdp value

3: tdp exit

4: }

5: tdp asyngetERROR GDBSERVER error gdbserver

6: $JOB USER=“job user:” “/home/user/mpi/job user.cfg”

7: $JOB AGENT=“job agent:” “/TDP-Shell/config/job agent.cfg”

8: $JOB TOOL= “job tool:” “/home/user/mpi/job gdbserver.cfg”

9: tdp launch agent “MPI” $JOB USER “-e:” “user exec MPI” $JOB AGENT

$JOB TOOL

10: $USER EXEC= “/home/user/user exec MPI”

11: $CONT=0

12: $NUM PROCS=tdp getTDP NUM PROGS

13: while ($CONT < $NUM PROCS){

14: $REMOTE PORT=tdp get REMOTE MACHINE PORT[ANY]

15: $SH PROC=tdp create process “sh” “-c” “echo target remote ” +$REMOTE PORT + “ > gdb remote ” +$REMOTE PORT + “.cfg”

16: tdp wait process status $SH PROC “FINISHED”

17: $GDB=tdp create process“/usr/bin/xterm” “-e” “gdb” “-x” “gdb remote ” +

$REMOTE PORT + “.cfg” $USER EXEC

18: if ($GDB == ERROR){

19: tdp print “Error creating Gdb”

20: tdp put ERROR GDB = “ERROR”

21: tdp exit

27: while ($GDB SERVERS FINISH < $NUM PROCS){

28: tdp getGDBSERVER END[ANY]

29: $GDB SERVERS FINISH= @ $GDB SERVERS FINISH + 1

30: }

176 7. Casos pr´acticos del entorno de trabajo TDP-Shell TDP-Shell script 7.6 Fichero TDP-Shell script para tdp agent

1: tdp fun error gdb (){

2: tdp print“ERROR from Gdb”

3: tdp exit

4: }

5: tdp fun end gdbservers (){

6: tdp print“ERROR from another Gdbserver”

7: tdp exit

8: }

9: tdp asynget ERROR GDB error gdb

10: tdp asynget END GDBSERSERS end gdbservers

11: $USER EXEC ARGS =TDPGet Arguments (“1”, “ALL”)

12: $USER EXECUTABLE = tdp getTDP USER EXEC

13: $TOOL EXECUTABLE = tdp getTDP TOOL EXEC

14: $LOCAL MACHINE=TDPGet LocalHost()

15: $PORT=Get Port()

16: $AGENT ID=Get IdConsole()

17: $LOCAL MACHINE PORT=$LOCAL MACHINE + “:” + $PORT

18: $GDBSERVER=tdp create process $TOOL EXECUTABLE

$LOCAL MACHINE PORT$USER EXECUTABLE $USER EXEC ARGS

19: if ($GDBSERVER == ERROR){

20: tdp putERROR GDBSERVER = “ERROR”

21: tdp putEND GDBSERVERS = $AGENT ID

22: tdp exit

23: }

24: tdp put REMOTE MACHINE PORT[$AGENT ID]=$LOCAL MACHINE PORT

25: $GDBSERVER STATUS = tdp wait process status $GDBSERVER

“FINISHED” “FAILED”

26: tdp putGDBSERVER END[$AGENT ID] = $GDBSERVER STATUS

script 7.5). Los archivosTDP-Shellque interpretan los componentestdp agentinforman que, si se inserta esta tupla ERROR GDB en el espacio de atributos tdp, se llame la funci´on error gdb 10, la cual a sido asociada a esta tupla, utilizando del comando tdp asynget situado en la l´ıneas 5 del ficheroTDP-Shell script 7.6.

Para la sincronizaci´on de los componentes de la herramienta Gdb, el TDP-Shell script que ejecuta el componente tdp console le informa, a trav´es del comando tdp get (l´ıneas 14), que espere bloqueado a la inserci´on de alg´un valor nuevo, que no se

7.1. Monitorizaci´on de aplicaciones MPI 177 haya adquirido ya, en la tupla con atributo array REMOTE MACHINE PORT[ANY]

(el ´ındice especial ANY informa de esta funcionalidad). La inserci´on de este nuevo valor en la tupla REMOTE MACHINE PORT, implica que alg´untdp agent ha creado su componente remoto de Gdb y que su puerto de comunicaciones est´a listo para recibir peticiones. Esto implica que tdp console ya puede crear el componente local de Gdb para que se conecte a este componente gdbserver reci´en creado. Por su parte, el archivo TDP-Shell script del componente tdp agent, le informa que despu´es de ejecutar el gdbserver, sit´ue la informaci´on de su puerto de comunicaciones en el espacio de atributos tdp. Para ello utiliza el comando tdp put de l´ıneas 24 sobre la tupla con atributo array, REMOTE MACHINE PORT. El valor del ´ındice de esta tupla est´a contenido en la variable$AGENT ID, la cual contiene el identificador ´unico asociado al componente tdp agent. Este identificador es obtenido gracias a la funci´on especial de TDP-Shell TDPGet LocalHost() (l´ıneas 14, TDP-Shell script 7.6) y esta formado por la concatenaci´on de las cadenas de caracteres del nombre de la m´aquina donde se ejecuta el tdp agent m´as el pid (dado por el sistema operativo) de este componente.

El ´ultimo bucle del archivo TDP-Shell script que interpreta tdp console, le informa que espere suspendido, a trav´es del comando tdp get sobre la tupla con atributo array GDBSERVER END[ANY] (l´ıneas 28), a que los componentes tdp agent le confirmen que se ha acabado la ejecuci´on de sus componentes remotos de Gdb. Esto ´ultimo lo realizan utilizando el comando tdp wait process status (l´ıneas 25, TDP-Shell script 7.6) para esperar que sus respectivos gdbserver finalicen su ejecuci´on (est´en en el estado tdp

“FINISHED” o “FAILED”) y posteriormente, situando el estado de esta finalizaci´on en el espacio de atributos tdp a trav´es de la tupla GDBSERVER END[$AGENT ID]

(comando tdp put, l´ıneas 26, TDP-Shell script 7.6). Es interesante observar el uso de la funci´on especial de TDP-Shell TDPGet Arguments, situada en la l´ıneas 11 del archivo TDP-Shell script que interpretan los tdp agents. Esta funci´on especial devuelve los argumentos pasados atdp agent, comprendidos entre los dos argumentos de esta funci´on, que en este caso practico que se est´a analizando son todos, del primero (primer argumento de la funci´on, “1”) a el ultimo ( “ALL” significa el ´ultimo). Con este proceder, se consigue que en el caso de utilizar la librer´ıa MPICH1, el componente tdp agent pueda obtener los argumentos conexi´on propios de esta librer´ıa (pasados por el proceso MPI padre a los scriptstdp shell MPI.sh hijos y de estos a lostdp agents) para pasarlos al proceso de la aplicaci´on MPI que se va a monitorizar.

178 7. Casos pr´acticos del entorno de trabajo TDP-Shell