Sistema de colas Condor en CICA

Preview:

DESCRIPTION

Sistema de colas Condor en CICA, por Ana Silva

Citation preview

Sistema de colas CONDORSistema de colas CONDOR

Juan Antonio OrtegaJuan Antonio Ortega

Ana SilvaAna 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?¿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 clustersAlta 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: LapackBlas 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.exeNecesita los argumentos arg1 arg2Debe ejecutarse sobre Linux 64 bitsLo lanzamos a la cola

✗ Crearíamos un fichero con la siguiente información,

executable = programa.exerequirements = (Arch == “X86_64” && OpSys == “LINUX”)arguments = arg1 arg2Queue

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;}

gcc -c hello.c -o hello.o

condor_compile gcc hello.o -o hello

############################################# # 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 = vanillaExecutable = /afs/engr.wisc.edu/apps/bin/matlabArguments = -nodisplay -nojvm

Input = condor.inputOutput = condor.outputError = condor.errorLog = 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 = parallelexecutable = lamscript

arguments = my_lam_linked_executable arg1 arg2machine_count = 4Scheduler = DedidicatedScheduler@nombre.dominio

should_transfer_files = yeswhen_to_transfer_output = on_exittransfer_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       = javaexecutable     = Hello.classarguments      = Hello

output         = Hello.outputerror          = Hello.error

should_transfer_files = YESwhen_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 CICA. 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=“DedicatedScheduler@condor.cica.es”

✗ 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 = "DedicatedScheduler@condor.cica.es" queue

Comandos básicos✗ Comprobación del estado de los nodos

condor_statusMostrará 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_qMostrará 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 lanzadascondor_rm [número de tarea]Eliminará las tareas que el propio usuario ha lanzado.

✗ Lanzado de tareascondor_submit ClassAdSe 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,

✗ StateUnclaimed : Sin reclamo, no está reservado.Claimed : reclamado, pasará a Busy.Owner : está siendo usado por el S.O.

✗ ActivityIdle : 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: supercomputacion@cica.es

Web: supercomputacion.cica.es