Sistema de colas CONDOR - e-CA

Anuncio
Sistema de colas CONDOR
Juan Antonio Ortega
Ana Silva
Contenidos
Conceptos previos
Cluster CICA
¿Qué es Condor?
¿Qué muestra Condor?
Tipos de máquinas Condor
Tareas Condor (ClassAd)
Universos Condor
Comandos básicos
Conceptos previos
✗
✗
✗
UMA : acceso uniforme a memoria. La memoria
física se comparte de forma uniforme por todos
lo procesadores.
NUMA : acceso no uniforme a memoria. La
memoria está distribuida entre los procesadores.
Se usa el paso de mensajes para la comunicación
entre memorias.
Memoria : Compartida por red (Sistemas de
disco, sistema de ficheros compartidos).
Conceptos previos
✗
✗
✗
MPI : Interfaz de paso de mensajes. Librerías
estándares entre nodos que ejecutan un
programa en un sistema de memoria distribuida.
Pool : colección de procesadores que usa Condor.
Paralelización : optimización de aplicaciones para
su ejecución en multiprocesadores.
¿Qué es un cluster?
Conjunto de ordenadores que trabajan de forma
conjunta, que permite la distribución de una gran
carga de trabajo entre ellos.
¿Por qué usamos clusters?
Por su bajo coste frente a una sola máquina con
gran potencia de cálculo, es decir, con un gran
número de procesadores.
Tipos de clusters
Alta disponibilidad: máquinas que siempre deben estar en
servicio.
Reparto de carga : máquinas en las cuales hay un acceso
másivo.
Alto rendimiento : máquinas de cáculo intensivo.
Cluster CICA
Cluster
- ~200 procesadores
- Arquitectura 64 bits
- 4 GB RAM por nodo
- Herramientas de administración: C3,
Ganglia
- 200 GB de disco por nodo
- Sistema de disco Sata-Ethernet “Coraid”
Capacidad ~ 6 Teras
- Sistema de ficheros compartidos LUSTRE
- Herramientas software:
- Compiladores Intel (Fortran, C++)
- Bibliotecas matemáticas: Lapack
Blas e Intel MKL.
- OpenMPI
¿Qué es Condor?
✗
✗
Sistema de gestión de carga para tareas de
computación intensivas.
Proporciona un sistema de colas, políticas de
planificación de ejecución, esquema de
prioridades, monitorización y gestión de recursos.
¿Para qué sirve Condor?
Es un sistema que nos permite abordar tareas de
cálculo que sobrepasan a la capacidad de cálculo
de una máquina individual.
Aplicaciones actuales:
✗
Simulaciones de Física Cuántica.
✗
Simulación molecular y de sist. periódicos.
✗
Cálculos de redes neuronales.
✗
Estudios de cambio climático en Andalucía.
...
Máquinas Condor I
✗
✗
✗
Submit : máquinas
desde donde los
usuarios lanzan sus
tareas.
Execute: máquinas
donde se ejecutan las
tareas.
Central-manager:
máquina desde la cual
se monitorizan los
nodos y las tareas
enviadas.
Máquinas Condor II
En todas las máquinas la instalación de Condor es
“full-install”, sólo se diferenciarán en su fichero
de configuración “condor_config”.
En nuestro caso...
Máquina Central-manager y Submit
“condor.cica.es”
Resto de máquinas Execute “Cluster CICA”
Los usuarios de Condor tendrán acceso a
condor.cica.es, desde la cuál lanzarán las tareas.
Definición de trabajos I
✗
✗
✗
✗
El envío de tareas se realiza mediante un fichero
de información creado para Condor : CLASSAD
El ClassAd lo debe crear el usuario para cada
tarea que se vaya a lanzar.
Debe informar de la tarea en sí, su ejecutable,
sus argumentos, los ficheros de datos a procesar,
los requerimientos de la máquina que necesite
usar...
Condor, se encarga de preparar el entorno,
copiando en el nodo donde se envíe la tarea el
ejecutable, creando ficheros de salida y un log,
previamente definido por el usuario.
Definición de trabajos II
✗
✗
Supongamos lo siguiente:
Mi ejecutable es programa.exe
Necesita los argumentos arg1 arg2
Debe ejecutarse sobre Linux 64 bits
Lo lanzamos a la cola
Crearíamos un fichero con la siguiente
información,
executable = programa.exe
requirements = (Arch == “X86_64” && OpSys == “LINUX”)
arguments = arg1 arg2
Queue
Atributos para ClassAd
✗
✗
✗
Al ejecutar condor_q -l , Condor nos mostrará
una lista con los atributos que cumple el cluster
para las tareas. (Memoria en uso, prioridad...)
Ejecutando condor_status -l Condor mostrará
los atributos referidos a las características de los
nodos. (Sistema operativo, arquitectura...)
Ambas clases de atributos podrán usarse para la
creación del ClassAd, ya sea como requerimiento
o valor determinado.
Universos Condor I
✗
¿Qué es un universo para Condor?
Es un entorno de ejecución.
Conjunto de recursos que Condor pone a
disposición de las tareas que van a ejecutarse en
el cluster.
Universos Condor II
Condor para definir sus tareas, las agrupa por
universo. Contamos con los siguientes :
✗
Universo Standard
✗
Universo Vanilla
✗
Universo Parallel
✗
Universo Java
Universo Standard
Se usa para lanzar tareas que han sido
especialmente preparadas para su ejecución bajo
Condor.
Les hace adquirir características, como por
ejemplo: migrar de nodo.
Ejemplo Universo Standard
Ejemplo:
#include <stdio.h>
int main(void)
{ printf("hello,Condor\n");
return 0;
}
condor_compile gcc hello.o -o hello
gcc -c hello.c -o hello.o
#############################################
# Submit description file for hello program #
#############################################
Executable
= hello
Universe
= standard
Output
= hello.out
Log
= hello.log
Queue
Universo Vanilla
Se usa para lanzar tareas que no han sido
“condorizadas”.
Es el universo más usado.
Si una tarea se puede lanzar bajo cualquiera de los
demás universos, se puede lanzar bajo el
Universo Vanilla.
Devolverá los resultados a un fichero de salida.
Ejemplo de universo Vanilla
Ejemplo:
###########################################
#
#
# Example condor submit file for Matlab
#
#
#
###########################################
Universe = vanilla
Executable = /afs/engr.wisc.edu/apps/bin/matlab
Arguments = -nodisplay -nojvm
Input = condor.input
Output = condor.output
Error = condor.error
Log = condor.log
should_transfer_files = yes
when_to_transfer_output = on_exit_or_evict
Queue
Universo Parallel
El universo Parallel permite la ejecución de tareas
MPI.
Necesita el atributo machine_count, que indica el
número de máquinas que se van a usar para
ejecutar esa tarea.
✗
Planificador dedicado:
Este universo se basa en que debe existir un elemento
(llamado planificador dedicado) definido por el
administrador del sistema, que hará una reserva de
recursos en el cluster antes de lanzar la tarea.
Ejemplo Universo Parallel
Ejemplo:
######################################
## Example submit description file
#
## for LAM MPI
#
######################################
universe = parallel
executable = lamscript
arguments = my_lam_linked_executable arg1 arg2
machine_count = 4
Scheduler = [email protected]
should_transfer_files = yes
when_to_transfer_output = on_exit
transfer_input_files = my_lam_linked_executable
queue
Universo Java
Es el universo para la gestión de tareas en java.
Se basa en la máquina virtual Java. La cual Condor
prepara para la ejecución de la tarea.
✔
Condor dispone del comando condor_status -java que
permite ver los nodos que disponen de java y con cuál
versión cuentan.
Ejemplo Universo Java
Ejemplo
public class Hello {
public static void main( String [] args ){
System.out.println("Hello, world!\n");}
}
javac Hello.java
#####################################
# Example 1 #
# Execute a single Java class, #
# not on a shared file system #
#####################################
universe = java
executable = Hello.class
arguments = Hello
output = Hello.output
error = Hello.error
should_transfer_files = YES
when_to_transfer_output = ON_EXIT
queue
ClassAd Condor-CICA
Dada a la arquitectura y configuración del cluster
CICA hay atributos que serán comunes en el
ClassAd:
✗
✗
Universe : siempre habrá que indicarlo en el
ClassAd.
requirements : indicará las caracteristicas de los
nodos executes. En nuestro caso su valor
siempre será:
requirements = (Arch == “X86_64” && OpSys == “LINUX”)
✗
should_transfer_files : este atributo es necesario
cuando no se tiene memoria compartida, como
es el caso del cluster Piara. Por lo que su valor
será “YES”.
ClassAd Condor-CICA
✗
✗
when_to_transfer_output : este atributo indicará
cuando transfiere la ejecución los ficheros de
salida. En nuestro caso indicaremos “ON_EXIT”,
que nos dará los resultados al término de la
tarea.
Scheduler : Tan solo cuando lancemos tareas al
universo Parallel indicaremos en este atributo el
siguiente valor:
Scheduler=“[email protected]”
✗
queue : indica que la tarea será puesta en la
cola. Es un parámetro obligatorio.La ejecución de
la tarea no será secuencial, sino paralela.
En resumen
universe = universe
executable = executable
arguments = arg1 arg2 ...
requirements = (Arch == "X86_64" && OpSys == "LINUX")
log = logfile
output = outfile.$(NODE)
error = errfile.$(NODE)
should_transfer_files = yes
when_to_transfer_output = on_exit
Scheduler = "[email protected]"
queue
Comandos básicos
✗
✗
Comprobación del estado de los nodos
condor_status
Mostrará una lista con todos los nodos del
sistema de colas y su ocupación en ese instante.
Se podrá ejecutar en cualquier nodo.
Comprobación de la cola de tareas
condor_q
Mostrará la lista de tareas pendientes, en
ejecución o retenidas que están en cola.
Tan solo se podrá ejecutar en el Central-Manager.
O bien añadiendo -global desde cualquier otro
nodo.
Comandos básicos
✗
✗
Borrado de las tareas lanzadas
condor_rm [número de tarea]
Eliminará las tareas que el propio usuario a
lanzado.
Lanzado de tareas
condor_submit ClassAd
Se debe ejecutar desde el directorio donde se
encuentren todos los ficheros que usen el
ClassAd (ejecutable, argumentos, ficheros
transferidos...)
Estado de los nodos
Cuando ejecutamos condor_status se muestran
los siguientes valores,
✗
✗
State
Unclaimed : Sin reclamo, no está reservado.
Claimed : reclamado, pasará a Busy.
Owner : está siendo usado por el S.O.
Activity
Idle : Ocioso, no está ejecutando ninguna tarea.
Busy : Ocupado, está ejecutando alguna tarea.
Estado de las tareas
Cuando ejecutamos condor_q se muestran los
siguientes valores,
✗
State (ST)
I : Idle, pendiente de asignación de máquina.
H : Held, retenida, ya sea por error en el ClassAd
o bien por error en la ejecución.
R : running, en ejecución.
X : executed, ya ha sido ejecutada y se está
eliminando de la cola.
En Desarrollo
✗
✗
✗
Acceso a los recursos de cluster mediante una
interfaz Web.
Automatización de la creación de ClassAds
mediante una interfaz Web.
Sistema de autentificación global mediante un
servidor de LDAP.
Gracias por la atención
Preguntas
Correo: [email protected]
Web: supercomputacion.cica.es
Descargar