120 | | Un job del clúster tiene unos cuantos requerimientos básicos tales como: |
121 | | * '''número de processos:''' el número de cpus que se requieren para la ejecución del job. |
122 | | * '''cola de ejecución:''' etiqueta que se le da a un grupo de nodos. Determina los nodos que acogeran todos los jobs que se manden a una cola. Es muy común que un clúster se compartimente en distintas colas a modo de intentar maximizar el rendimiento de un clúster. Estas colas pueden compartir nodos entre ellas y estar asignadas a proyectos y/o grupos de usarios distintos. |
123 | | * '''wall-time:''' determina el tiempo de ejecución del job dentro del clúster. Una vez pasado este tiempo el job y su aplicación seran detenidos forzosamente. Es un muy común que en los clústers se ejectuen antes los jobs con un wall-time pequeño que con uno de grande. |
124 | | |
125 | | ==== Los requerimientos de un job en una cola PBS ==== |
126 | | |
127 | | En la gestión de colas TORQUE/PBS existen dos términos para referirse a la unidad cálculo: el ''node'' y el ''cpp''. Un ''node'' equivalen a las unidades físicas de cálculo que integran distintas cantidades de cpus ''cpp'' (2, 8, 16,...) |
128 | | |
129 | | Las peticiones se hacen por un conjunto de ''flags''. El envio del job al gestor de la cola se puede hacer añadiendo todas las directrices en la línea de comandos de la aplicación, o por medio de una script (archivo de texto con instrucciones de sistema). En según que circumstancias nos va interesar hacerlo de una manera u otra, pero las dos son equivalentes. La estructura tipo de un script (llamado por ejemplo {{{job.pbs}}}) de colas tiene la siguiente estructura: |
130 | | |
| 120 | A continuación se muestra un aplantilla para la ejecución de jobs: |
163 | | En esta plantilla se muestra la sintaxis de los siguientes requerimientos/especificaciones. Se tienen que cambiar los argumentos que estén entre {{{[]}}}. |
164 | | * ''-N [jobname] :'' nombre del job |
165 | | * ''-l walltime=[HH]:[MM]:[SS] :'' duración del job (en {{{[horas]:[minutos]:[segundos]}}}). |
166 | | * ''-l mem=[MM][kb/mb/gb/tb] :'' memoria requerida y límite de la memoria (número entero) en kb: kilobytes, mb: megas, gb: gigas, tb: teras (''NOTA:'' la memoria del nodo se irá consumiendo con los valores de 'mem' de cada job. El job que requiera mas memoria que la que le queda libre al nodo, se quedará a la espera hasta que se libere la memoria necesaria. Si el job al correr supera el límite, el sistema de colas lo matará) |
167 | | * ''-q [queue] :'' nombre de la cola a la cual se manda el job |
168 | | * ''-m [flags] :'' indica cuando se tiene que mandar un correo. Si no se pone este requerimiento si el job es abortado por el sistema se manda un correo al usuario (variable {{{MAIL}}}). Hay las siguientes opciones (son combinables): |
169 | | * ''n'': sin correo |
170 | | * ''a'': el job es abortado por el sistema |
171 | | * ''b'': se inicia la ejecución del job |
172 | | * ''e'': el job a terminado |
173 | | * ''-M [emailCOUNT]:'' dirección de correo donde se quiere que mande un job |
174 | | * ''-e [rutaArchivo]:'' ruta del archivo en donde se quiere almacenar la salida estandard del error del job (si no se indica se construye en el directorio donde está el script el archivo ${PBS_JOBNAME}.e${PBS_JOBID}) |
175 | | * ''-o [rutaArchivo]:'' ruta del archivo en donde se quiere almacenar la salida estandard del job (si no se indica se construye en el directorio donde está el script el archivo ${PBS_JOBNAME}.o${PBS_JOBID}) |
176 | | * ''-W depend=afterany:[jobid]:'' el job se mandará a la cola cuando otro job anterior (el número [jobid]) termine su ejecución (no importa como termine) |
177 | | * ''-t [array]:'' permite tratar un conjunto de jobs cómo una array. Cada job es identificado con un único valor dado por la [array] que se construye como combinación de valores. Por ejemplo: |
| 153 | En esta plantilla se muestra la sintaxis de los siguientes directivas PBS/TORQUE: |
| 154 | * '''-N [jobname]''' : nombre del job |
| 155 | * '''-l walltime=[HH]:[MM]:[SS]''' : duración del job (en {{{[horas]:[minutos]:[segundos]}}}). |
| 156 | * '''-l mem=[MM][kb/mb/gb/tb]''' : memoria requerida y límite de la memoria (número entero) en kb: kilobytes, mb: megas, gb: gigas, tb: teras |
| 157 | * '''-q [queue]''' : nombre de la cola a la cual se manda el job |
| 158 | * '''-m [flags]''' : indica cuando se tiene que mandar un correo. Si no se pone este requerimiento si el job es abortado por el sistema se manda un correo al usuario (variable {{{MAIL}}}). Hay las siguientes opciones (son combinables): |
| 159 | * '''n''': sin correo |
| 160 | * '''a''': el job es abortado por el sistema |
| 161 | * '''b''': se inicia la ejecución del job |
| 162 | * '''e''': el job a terminado |
| 163 | * '''-M [emailCOUNT]''': dirección de correo donde se quiere que mande un job |
| 164 | * '''-e [rutaArchivo]''': ruta del archivo en donde se quiere almacenar la salida estandard del error del job (si no se indica se construye en el directorio donde está el script el archivo ${PBS_JOBNAME}.e${PBS_JOBID}) |
| 165 | * '''-o [rutaArchivo]''': ruta del archivo en donde se quiere almacenar la salida estandard del job (si no se indica se construye en el directorio donde está el script el archivo ${PBS_JOBNAME}.o${PBS_JOBID}) |
| 166 | * '''-W depend=afterany:[jobid]''': el job se mandará a la cola cuando otro job anterior (el número [jobid]) termine su ejecución (no importa como termine) |
| 167 | * '''-t [array]''': permite tratar un conjunto de jobs cómo una array. Cada job es identificado con un único valor dado por la [array] que se construye como combinación de valores. Por ejemplo: |