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