Changes between Version 55 and Version 56 of ColasPBS


Ignore:
Timestamp:
Dec 15, 2014 8:03:35 PM (7 years ago)
Author:
carlos
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ColasPBS

    v55 v56  
    231231== Ejemplos ==
    232232
    233 === Wall time insuficiente ===
    234 Tomamos un job sencillo de ejemplo escrito en un fichero llamado attachment:prueba.pbs. Este job lanza el script attachment:espera.bash el cual se espera los segundos dados por el primer argumento y escribe por pantalla el mensaje "Hola mundo".
    235 {{{
    236 #!/bin/bash
    237 ### Job name
    238 #PBS -N prueba
    239 ### Max run time
    240 #PBS -l walltime=00:00:10
    241 ### Queue name
    242 #PBS -q grid
    243 ### Number of nodes and processors per node
    244 #PBS -l nodes=1:ppn=1
    245 
    246 cd ${PBS_O_WORKDIR}
    247 
    248 ./espera.bash 60
    249 }}}
    250 
    251 Lanzando el job obtendríamos:
    252   {{{
    253 [user@ui ~]$ qsub prueba.pbs
    254 307065.ce01.macc.unican.es
    255 [user@ui ~]$ qstat | grep prueba
    256 307065.encina               prueba           user                  0 R grid           
    257 [user@ui ~]$ qstat -n1 | grep prueba
    258 307065.encina  user    grid     prueba      23057     1  --    --  48:00 R   --    wn002
    259 [user@ui ~]$ ls
    260 prueba.pbs
    261 }}}
    262 Pasados los 60 segundos...
    263   {{{
    264 [user@ui ~]$ ls
    265 prueba.e307065  prueba.o307065  prueba.pbs
    266 }}}
    267 La ejecución del job ha generado dos ficheros de salida en los cuales se almacena información de la ejecución del job y de la propia aplicación (ficheros {{{prueba.[e/o]307065}}}). Al mirar el contenido de estos ficheros:
    268   {{{
    269 [user@ui ~]$ cat prueba.o307065
    270 [user@ui ~]$ cat prueba.e307065
    271 =>> PBS: job killed: walltime 43 exceeded limit 10
    272 }}}
    273 El tiempo dado al job ha diso insuficiente.
    274 
    275 === Memoria insuficiente ===
    276 Para evitar generar problemas en los nodos por exceso de uso de memoria se tiene el flag 'mem'. A modo de ejemplo se tiene un programa de Fortran que ocupa en memoria 160 MB. Mandamos un job con 150MB de límite de memoria.
    277 {{{
    278 #!/bin/bash
    279 ### Job name
    280 #PBS -N prueba
    281 ### Max memory
    282 #PBS -l mem=150mb
    283 ### Queue name
    284 #PBS -q grid
    285 ### Number of nodes and processors per node
    286 #PBS -l nodes=1:ppn=1
    287 
    288 cd ${PBS_O_WORKDIR}
    289 
    290 ./Fortran.out
    291 }}}
    292 
    293 El job se lanza a la cola, y pasados unos segundos nos sale este mensaje en el fichero de salida 'prueba.e477378':
    294    {{{
    295 [user@ui ~]$ cat prueba.e477378
    296 #!comment
    297 =>> PBS: job killed: mem 162836480 exceeded limit 157286400
    298 }}}
    299 
    300 === Ocupar toda la memoria de un nodo con un único job ===
    301 Se pueden tener aplicaciones que requieran mucha memoria. Para evitar que el job se mande en un nodo donde tiene parte de la memoria ocupada, y/o para no entorpecer los otros jobs, es posbile quedarse con toda la memoria de un nodo. Para hacer esto nos tenemos que asegurar que no entre ningún otro job al nodo. Para hacer esto, mandaremos el job requiriendo todas las unidades de cálculo del nodo. Así, si queremos toda la memoria de los nodos de la cola {{{'dinamica'}}} (con 8 cpus), requeriríamos:
    302    {{{
    303 #PBS -l nodes=1:ppn=8
    304 }}}
    305 
    306233=== Lanzar un job interactivo ===
    307234A la hora de hacer pruebas es muy útil abrir una sessión interactiva en un nodo del clúster. Esto se hace mandando un job interactivo. La sessión que se habra durará todo el tiempo que se quiera hasta que no se le mande la instrucción de salida {{{'exit'}}}. La sintaxis es (la cola asume '{{{ppn=1}}}'):