Vous êtes sur la page 1sur 62

Facultad de Ingeniera Universidad de la Repblica

Proyecto Fenton - Cluster de Computadores de Alto Desempeo con Acceso Remoto (CCADAR) Informe Final

Julio 2008

Estudiantes:

Santiago Iturriaga, Paulo Maya, Damin Pintos


Supervisor:

Sergio Nesmachnow

Pgina 2

Resumen

El informe presenta el trabajo realizado en el marco de la asignatura Proyecto de Grado de la carrera Ingeniera en Computacin. Este proyecto fue propuesto por el grupo acadmico CeCal (Centro de Clculo) del Instituto de Computacin de la Facultad de Ingeniera, Universidad de la Repblica, ms especcamente en el rea de computacin de alto desempeo. El proyecto consisti en la implementacin de un cluster de computadoras de alto desempeo con la capacidad de brindar acceso remoto para que sus usuarios interacten con el y para que sus administradores lo regulen y monitoreen. Este documento est organizado en siete secciones. La primer seccin es una introduccin a este proyecto en la cual incluimos una breve introduccin a la computacin de alto rendimiento, objetivos y motivaciones del proyecto, alcance y actividades desarrolladas en el transcurso del proyecto. En la segunda seccin se profundiza en el estado del arte de la computacin de alto rendimiento donde hablamos sobre la importancia de estas tecnologas, organizacin de computadores, diseo de algoritmos paralelos, arquitecturas de computacin paralela y herramientas disponibles. En la tercer seccin se presentan las tecnologas relevadas para la implantacin de un cluster de alto desempeo. En la cuarta seccin se especica la solucin propuesta con las tecnologas elegidas y la interfaz de acceso remoto desarrollada para el cluster de alto desempeo con acceso remoto. Tambin se detalla el proceso de vericacin realizado durante el desarrollo. En la quinta seccin se describen los ambientes donde el sitema es puesto en produccin. Finalmente en la sexta y sptima seccin se presentan las conclusiones y los trabajos a futuro. Palabras clave: Cluster de computadores, Beowulf, DRM, MPI.

NDICE

Pgina 3

ndice

1. Introduccin
1.1. 1.2. 1.3. 1.4. 1.5. Introduccin a la computacin de alto rendimiento Motivacin del proyecto Trabajos previos Objetivos y alcance del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5
6 6 7 8 11

. . . . . . . . . . . . . . . . . . . . . . . . . . .

Actividades del proyecto . . . . . . . . . . . . . . . . . . . . . . .

2. Computacin de alto rendimiento


2.1. 2.2. Organizacin de computadores Diseo de algoritmos paralelos 2.2.1. 2.2.2. 2.2.3. 2.2.4. 2.3. 2.4. Particin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13
14 18 19 19 20 20 21 23 24 24 25 25 25 26 27 27 28 29 30

Comunicacin . . . . . . . . . . . . . . . . . . . . . . . . . Agrupacin . . . . . . . . . . . . . . . . . . . . . . . . . . Asignacin . . . . . . . . . . . . . . . . . . . . . . . . . .

Taxonoma de Flynn . . . . . . . . . . . . . . . . . . . . . . . . . Arquitecturas de computacin paralela . . . . . . . . . . . . . . . 2.4.1. 2.4.2. 2.4.3. 2.4.4. 2.4.5. 2.4.6. Arreglos de procesadores . . . . . . . . . . . . . . . . . . . Multiprocesadores . . . . . . . . . . . . . . . . . . . . . . Multicomputadores . . . . . . . . . . . . . . . . . . . . . . Mquinas de memoria compartida distribuida . . . . . . . Multiprocesadores multi-hebrados . . . . . . . . . . . . . Cluster de PC's . . . . . . . . . . . . . . . . . . . . . . . . MPI: Message Passing Interface . . . . . . . . . . . . . . . PVM: Parallel Virtual Machine . . . . . . . . . . . . . . . Middleware . . . . . . . . . . . . . . . . . . . . . . . . . .

2.5.

Herramientas para la programacin paralela . . . . . . . . . . . . 2.5.1. 2.5.2. 2.5.3.

2.6.

Conclusiones sobre la computacin de alto rendimiento . . . . . .

3. Relevamiento de tecnologas
3.1. 3.2. SSI:OpenMosix, OpenSSI y Kerrighed Condor 3.2.1. 3.2.2. 3.2.3. 3.2.4. 3.3. 3.4. 3.3.1. 3.4.1. 3.4.2. 3.4.3. 3.4.4. 3.4.5. 3.4.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Caractersticas generales . . . . . . . . . . . . . . . . . . . Bibliotecas para programacin paralela . . . . . . . . . . . Interfaz de programacin Resumen Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

32
32 33 33 33 33 33 34 35 35 35 36 37 37 39 40

Sun Grid Engine

TORQUE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Caractersticas generales . . . . . . . . . . . . . . . . . . . Bibliotecas para programacin paralela . . . . . . . . . . . Interfaz de programacin . . . . . . . . . . . . . . . . . . Maui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Gold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Casos de estudio . . . . . . . . . . . . . . . . . . . . . . .

NDICE

Pgina 4

3.4.7. 3.5. 3.6. 3.7. 3.8. 3.9.

Resumen

. . . . . . . . . . . . . . . . . . . . . . . . . . .

41 42 42 43 43 44

Ganglia Apache

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4. Cluster con acceso remoto


4.1. 4.2. 4.3. 4.4. Gerenciador de recursos y despachador de trabajos . . . . . . . . Desarrollo de la interfaz de acceso remoto . . . . . . . . . . . . . Otras herramientas . . . . . . . . . . . . . . . . . . . . . . . . . . Vericacin de la solucin . . . . . . . . . . . . . . . . . . . . . .

45
45 46 50 51

5. Puesta en produccin
5.1. 5.2. Cluster de computadores del CeCal . . . . . . . . . . . . . . . . . Cluster de computadores Medusa . . . . . . . . . . . . . . . . . .

52
52 54

6. Conclusiones 7. Trabajo futuro A. Documentos anexos

56 58 59

Pgina 5

1.

Introduccin
Durante los primeros aos de la historia de las computadoras modernas se

consider que un servidor deba ser necesariamente una nica mquina con un procesador muy potente para dar servicio a varias terminales tontas, este servidor es conocido como super computador o mainframe. Segn esta doctrina, para aumentar el poder de clculo del sistema es necesario contar con un procesador ms potente en la computadora servidor. De este modo, al aumentar los requerimientos de procesamiento se hace necesario en la mayora de los casos, cambiar la sper computadora actual por una nueva mejor, pasando a subutilizar o simplemente desechando la sper computadora anterior con un alto costo asociado. Esta idea encontr oposicin en 1994, cuando Donald Becker y Thomas Sterling crearon el proyecto Beowulf, en el que lograron un elevado nivel de procesamiento poniendo a trabajar varias computadoras en paralelo con procesadores 16 DX4, interconectadas en una red Ethernet de 10 Mbit. A partir de ese momento, y debido al xito alcanzado en el proyecto, muchos otros proyectos siguieron la investigacin del tema, bajo la premisa de convertir hardware de relativo bajo costo en clusters que logren equiparar o superar el desempeo alcanzado por las supercomputadores. La construccin de los ordenadores del cluster es ms fcil y econmica debido a su exibilidad: pueden tener todos la misma conguracin de hardware y sistema operativo (cluster homogneo), diferente rendimiento pero con arquitecturas y sistemas operativos similares (cluster semi-homogneo), o tener diferente hardware y sistema operativo (cluster heterogneo). Para que un cluster funcione como tal, no basta solamente con conectar entre s los ordenadores, sino que es necesario proveer un sistema de manejo del cluster, el cual se encargue de interactuar con el usuario y los procesos que corren en l para optimizar el funcionamiento. En general, un cluster necesita de varios componentes de software y hardware para poder funcionar. A saber: Nodos (los ordenadores o servidores) Sistemas Operativos Conexiones de Red Middleware (capa de abstraccin entre el usuario y los sistemas operativos) Protocolos de Comunicacin y Servicios. Aplicaciones (pueden ser paralelas o no) Actualmente, el cluster de computadoras se utiliza en diferentes tareas, como data mining, servidores de archivos, servidores de base de datos, servidores web, simuladores de vuelo, renderizacin de grcos, modeladores climticos, entre otros.

1.1 Introduccin a la computacin de alto rendimiento

Pgina 6

El objetivo de un cluster de computadoras es simplemente reunir el poder de cmputo de una serie de nodos para proveer alta escalabilidad, poder de cmputo, o construir redundancia y de esta manera proveer alta disponibilidad. De esta manera en lugar de un simple cliente realizando peticiones a uno o ms servidores, los cluster utilizan mltiples mquinas para proveer un ambiente ms poderoso de cmputo a travs de una sola imagen de sistema. El procesamiento es visible al usuario como una sola unidad, aunque se encuentre compuesto de muchas computadoras trabajando en paralelo para lograr el mismo n. El alto poder de procesamiento de varias computadoras trabajando en paralelo (o cluster de computadoras) se perla como una solucin viable a varias problemticas, que requieren gran poder de cmputo a un bajo costo de implementacin. Algunas de las problemticas actuales ms importantes estn relacionadas con la ciencia e ingeniera, dinmica de uidos computacional, simulaciones electromagnticas, modelado ambiental, dinmica estructural, modelado biolgico, dinmica molecular, simulacin de redes, modelado nanciero y econmico, etc.

1.1. Introduccin a la computacin de alto rendimiento


A medida que la computacin avanza los problemas a resolver se tornan cada vez ms complicados, con modelos ms complejos, con mayores volmenes de datos y tiempos de respuesta ms limitados. La computacin de alto rendimiento o HPC (siglas en ingls de High Performance Computing) naci para satisfacer todos estos requisitos de poder de cmputo; rene un conjunto de tecnologas, como ser supercomputadores o clusters, y se apoya en el paradigma de programacin paralela y distribuida. La computacin distribuida resuelve problemas de computacin masiva utilizando un gran nmero de computadoras con una infraestructura de telecomunicaciones distribuida; y mediante el uso compartido de recursos situados en distintos lugares y pertenecientes a diferentes dominios de administracin sobre una red que utiliza estndares abiertos. La programacin paralela es una tcnica de programacin basada en la ejecucin simultnea de procesos o trabajos, bien sea en un mismo ordenador (con uno o varios procesadores) o en un cluster de ordenadores. Existe una diversa gama de arquitecturas de computacin paralela, desde arquitecturas de procesadores paralelos con memoria compartida hasta clusters de computadores comunicados por una red como Fast Ethernet. En la seccin 2 se profundizar sobre la computacin de alto rendimiento, diferentes tipos de arquitecturas y tcnicas, y se analizarn las herramientas y paradigmas de programacin paralela y distribuida.

1.2. Motivacin del proyecto


Actualmente existe en Facultad de Ingeniera un cluster de computadores utilizado para investigacin en proyectos internos. A corto plazo se proyecta alquilar el cluster como servicio a entidades externas. El software utilizado permite

1.3 Objetivos y alcance del proyecto

Pgina 7

un nivel de abstraccin muy bajo, que limita los perles de usuarios capaces de utilizar el sistema. Es importante notar que los usuarios nales sern en la mayora de los casos profesionales en reas dispares como por ejemplo las ciencias bsicas (matemtica, fsica, qumica, etc.), no necesariamente relacionadas con la informtica. Se desea mantener un control estricto de las actividades de los usuarios de manera de poder garantizar la disponibilidad de recursos en un determinado momento. El grupo responsable del cluster tiene inters en mantener un historial de utilizacin de recursos por parte de los distintos usuarios y procesos; tanto para poder realizar un seguimiento de su estado actual y vericar su correcto funcionamiento, como para realizar mediciones referidas a la utilizacin de recursos por parte de los usuarios ya que se lo considera un activo. El proyecto Fenton intenta resolver estos problemas permitiendo la utilizacin del sistema por parte de usuarios no especializados, as como tambin permitir el monitoreo del cluster en tiempo real por parte de los administradores.

1.3. Objetivos y alcance del proyecto


La motivacin principal del proyecto Fenton es la construccin e implantacin de un sistema de acceso remoto a un cluster de alto desempeo. Dentro del marco de esta motivacin se ha denido el alcance del proyecto y varios objetivos y actividades. Una de las actividades principales englobada dentro del proyecto es el estudio del estado del arte sobre la utilizacin de equipamiento destinado al procesamiento paralelo-distribuido. Otro actividad importante es la evaluacin y diseo de herramientas automticas para la administracin y utilizacin de un cluster de computadores. Para esto se planic realizar el relevamiento de paquetes de software de base (sistemas operativos, bibliotecas, monitores de desempeo, etc.) que permitan el desarrollo y la ejecucin de programas paralelos y distribuidos. Durante el relevamiento de las herramientas se deben evaluar tanto caractersticas funcionales como caractersticas de usabilidad. Como se mencion en la seccin anterior se debe tener especial consideracin en el grado de abstraccin de las herramientas de administracin y las utilizadas para la ejecucin de trabajos en el cluster, para que de esta forma la infraestructura pueda ser utilizada por un conjunto diverso y amplio de usuarios. A continuacin se presentan los objetivos especcos del proyecto: El estudio del estado del arte sobre la utilizacin de equipamiento destinado al procesamiento paralelo-distribuido para la resolucin de problemas complejos. La evaluacin de paquetes de software de base (sistemas operativos, bibliotecas, monitores de desempeo, etc.) que permitan el desarrollo y la ejecucin de programas paralelos y distribuidos, instalando una o varias alternativas con tal n.

1.4 Trabajos previos

Pgina 8

El desarrollo de software que permita la administracin semiautomtica del clster, para garantizar su alta disponibilidad y su funcionamiento a niveles razonables de eciencia computacional. El desarrollo de una interfaz amigable que permita la utilizacin del cluster de forma simple, an para usuarios sin conocimientos exhaustivos de informtica y/o de las tcnicas de computacin de alto desempeo.

1.4. Trabajos previos


No son pocos los trabajos realizados sobre investigacin, desarrollo, construccin y aplicaciones de clusters. Sin embargo es relativamente poca la bibliografa asociada, dado que el tema ha ganado importancia principalmente en la ltima dcada. Los estudios se remontan desde los aos '70, y puede decirse que IBM fue la primera en establecer una teora formal con respecto a los clusters a travs de un estudio realizado por Gene Myron Amdahl en 1967. En el CeCal se han llevado a cabo en los ltimos aos una gran cantidad de trabajos de investigacin por parte de docentes y de estudiantes. Dentro del mbito acadmico-docente podemos destacar los siguientes trabajos:

Una versin paralela del algoritmo evolutivo para optimizacin multiobjetivo NSGA-II y su aplicacin al diseo de redes de comunicaciones conables (2003). Proyecto realizado por el Mg. Ing. Sergio Nesmachnow realizado como proyecto nal del curso "Introduccin a la Optimizacin Multiobjetivo usando Metaheursticas", dictado por el Prof. Dr. Carlos Coello en el marco de la VII Escuela Internacional de Informtica en el CACIC 2003. En este trabajo se desarroll una versin paralela del Algoritmo Evolutivo para Optimizacin Multiobjetivo NSGA-II. Se introducen los detalles de diseo e implementacin de una versin paralela y se analiza la calidad de resultados y la eciencia computacional, comparando con los resultados y tiempos de ejecucin de la versin secuencial del algoritmo NSGA-II sobre un conjunto de problemas de prueba estndar. Adicionalmente, se estudi la aplicacin de la versin paralela propuesta a la resolucin de un problema de diseo de redes de comunicaciones conables. Por parte de los estudiantes podemos mencionar como ejemplo algunos de los proyectos de grado realizados recientemente:

Proyecto MPI.net (2003).


Gonzalo Ferres y Nicols Pepe.

Proyecto de grado realizado por Sebastin Baa,

El proyecto propuso la adaptacin de la biblioteca MPI para su utilizacin desde lenguajes a travs de la plataforma .NET. Este proyecto form parte del proceso de desarrollo del rea de procesamiento de alta performance en aplicaciones comerciales e industriales utilizando computadoras de bajo costo en curso en el UAS. Utilizando mecanismos de exportacin de clases a travs de el ambiente .NET, este proyecto propuso la utilizacin de MPI desde lenguajes soportados

1.4 Trabajos previos

Pgina 9

por .NET de modo que las tcnicas de procesamiento paralelo puedan utilizarse desde programas desarrollados en esos lenguajes. Para realizar esto ltimo debieron encapsular en clases las primitivas bsicas de comunicacin de la biblioteca MPI (envo de mensajes, recepcin de mensajes bloqueante y no bloqueante, primitivas de comunicacin colectivas) y las primitivas de sincronizacin de procesos y reduccin de resultados de modo que posibilitara su uso desde programas remotos. Complementariamente, se debi instrumentar un mecanismo que posibilitara la distribucin del cdigo paralelo a ejecutar en los diferentes nodos de la mquina virtual, que podan estar en diferentes redes.

Proyecto algoritmos genticos incremntales (2003).


realizado por Federico Dominioni y Pablo Musso.

Proyecto de grado

Los Algoritmos Genticos constituyen uno de los paradigmas de Computacin Evolutiva ms difundidos, basando su funcionamiento en la simulacin del principio de evolucin natural en donde a partir de un poblacin (de soluciones potenciales) se establece una especie de ley de la selva virtual en donde los individuos ms aptos (mejores soluciones) sobreviven. La evolucin de dicha poblacin es a travs de interacciones (cruzamiento) y transformaciones nicas (mutaciones), luego de determinadas generaciones la poblacin converge hacia una solucin ptima o cercana a la misma. El auge de la computacin paralela y distribuida ha renovado el inters prctico por los algoritmos basados en analogas de procesos naturales para la resolucin de problemas de optimizacin sobre complejos espacios de bsqueda y funciones objetivo. El proyecto consisti en el estudio, diseo e implementacin del modelo de algoritmos genticos incrementales, un modelo distribuido original de Alba y Troya, dicho modelo deber ser adaptado para ser ejecutado en un cluster de PC's no dedicadas y por lo tanto para su ejecucin se debi tener en cuenta las cargas de dichas PC. Los modelos diseados fueron aplicados a problemas de optimizacin combinatoria, en particular en el rea de diseo de redes de comunicaciones conables.

Algoritmos genticos paralelos y su aplicacin al diseo de redes de comunicaciones conables (2004). Tesis de maestra realizada por Mg.
Ing. Sergio Nesmachnow, nalizada en Julio de 2004. Al tratar con problemas de optimizacin combinatoria NP difciles, para los cuales la complejidad de los algoritmos conocidos aumenta de manera superpolinomial con el tamao del problema, la aplicabilidad de los mtodos exactos de resolucin se encuentra limitada por el enorme tiempo y consumo de recursos computacionales que demandan. Es aqu cuando las tcnicas heursticas aparecen como la nica alternativa viable para abordar problemas NP difciles. En este trabajo se realiz un estudio de las tcnicas de computacin evolutiva y la aplicacin de tcnicas de procesamiento de alta performance para implementar modelos de algoritmos genticos capaces de ejecutar en un am-

1.4 Trabajos previos

Pgina 10

biente paralelo-distribuido y se presentaron algoritmos evolutivos abocados al caso concreto de disear redes de comunicaciones de alta conectividad topolgica. Tambin se evaluaron diferentes algoritmos evolutivos puros e hbridos en sus versiones secuenciales y paralelas. El estudio comparativo realizado en este proyecto report resultados satisfactorios tanto desde el punto de vista de la calidad de resultados obtenidos como desde el punto de vista de la mejora de eciencia computacional alcanzada por las versiones paralelas de los algoritmos con respecto a sus contrapartes secuenciales. El proyecto Fenton es una muy buena posibilidad para mejorar la eciencia computacional obtenida con las versiones paralelas desarrolladas en el proyecto de algoritmos paralelos genticos.

Mejora del desempeo de modelos numricos del Ro de la Plata (2006). Tesis de maestra del Ing. Pablo Ezzatti, nalizada en Junio de 2006.
En las ltimas dcadas, la simulacin computacional de uidos ha emergido como un rea de intenso trabajo. A medida que las tcnicas computacionales se fueron perfeccionando, el inters de modelar con precisin el comportamiento de los ujos de uidos fue en aumento, provocando importantes inversiones en equipamiento informtico. En Uruguay, en el Instituto de Mecnica de Fluidos e Ingeniera Ambiental (IMFIA) de la Facultad de Ingeniera de la Universidad de la Repblica, desde hace algunos aos, se est trabajando en el modelado numrico del Ro de la Plata. Con el n de obtener mejoras signicativas en diversas caractersticas del modelado, se busc un nuevo modelo. Finalmente se opt por el modelo RMA10, ampliamente utilizado en el modelado de estuarios. Las cualidades de este nuevo modelo permiten la obtencin de resultados sumamente alentadores en diversas simulaciones realizadas. En contraposicin a la mejora del modelado, se incrementan de forma abrupta los costos computacionales (tiempo de procesamiento), lo que implica un gran obstculo para su utilizacin y para aplicar mejoras al modelo. En esta tesis se estudiaron tcnicas de computacin de alto desempeo aplicadas al clculo cientco, con el n de mejorar el desempeo computacional de modelos numricos que utilizan el paradigma de elementos nitos (MEF). Se abord la aplicacin de las tcnicas estudiadas al modelo hidrodinmico RMA10 aplicado al Ro de la Plata. Se present una estrategia secuencial para el clculo de la matriz de rigidez del modelo RMA-10 utilizando tablas de dispersin y su posterior resolucin empleando mtodos multifrontales para sistemas lineales dispersos. Tambin se evalu la aplicacin de distintas estrategias de programacin paralela a la modicacin propuesta y se realiz un estudio comparativo de las diferentes estrategias. Como en el proyecto anterior de algoritmos genticos, el proyecto Fenton provee un ambiente que facilitara las pruebas de las estrategias de programacin

1.5 Actividades del proyecto

Pgina 11

paralela estudiadas as como mejorara la eciencia computacional de estas.

Algoritmos genticos paralelos aplicados a la resolucin de problemas de asignacin de frecuencias en redes celulares (2006). Tesis de licenciatura en informtica de la Universidad Nacional de la Patagonia San Juan Bosco (Argentina) realizada por Cristian Perfumo, Gerardo Mora y Lucas Rojas, tutoreada por el Mg. Ing. Sergio Nesmachnow e Ing. Jos Gallardo. Con la masicacin de las redes inalmbricas, los entes reguladores del espectro de radiofrecuencias se han encontrado con el problema de asignar una frecuencia a cada comunicacin sin que esto conlleve a interferencias. Dado que las frecuencias son un recurso nito, el objetivo es maximizar la reutilizacin de las frecuencias sin disminuir la calidad de la transmisin. En este trabajo se investiga sobre la aplicacin de los algoritmos genticos como herramienta de resolucin del problema de asignacin de frecuencias en redes inalmbricas. En este trabajo se llev a cabo una investigacin sobre algoritmos genticos, considerando sus variantes secuenciales y paralelas, y su aplicacin a la resolucin del problema de la asignacin de frecuencias en las redes de telefona celular.

Diseo, conguracin, administracin y evaluacin de performance de un HPC cluster(2006). El proyecto propone la construccin de un cluster
de alta performance para la solucin de problemas con altos requerimientos de computo. Este proyecto se cristalizo en la construccin del cluster Medusa. El cluster de alto desempeo Medusa es un esfuerzo conjunto del Instituto de Mecnica de los Fluidos e Ingeniera Ambiental (IMFIA) y del Centro de Clculo (CeCal) (Facultad de Ingeniera, Universidad de la Repblica, Uruguay), con el apoyo nanciero del Programa de Desarrollo Tecnolgico (PDT), proyecto 48/01 (2006-2008). En su conguracin original (ao 2006), Medusa cuenta con seis nodos con procesador Opteron Dual Core y tecnologa de interconexin Ethernet. La aplicacin primaria del cluster ha involucrado la ejecucin de simulaciones para el desarollo de puentes, barcazas, prevencin de efectos ambientales no deseables por buques de gran calado, etc. El proyecto CCADAR esta ntimamente relacionado con el cluster Medusa pues el sistema de utilizacin, administracin y acceso remoto de buscado en el proyecto CCADAR es para la utilizacin del cluster Medusa.

1.5. Actividades del proyecto


En el marco del proyecto se realizaron un conjunto de actividades especcas, abarcando actividades de investigacin, estudio del arte, anlisis, modelacin, implementacin, ensayo, divulgacin de resultados y redaccin del presente informe. Las actividades se detallan a continuacin.

1.5 Actividades del proyecto

Pgina 12

Investigacin y estudio del estado del arte.

Unos de los principales obje-

tivos del proyecto es la investigacin y estudio del estado del arte a lo que reere a la computacin de alta performance. Esta actividad abarc auto estudio por parte de los integrantes del proyecto y el curso de la materia Computacin de Alta Performance dictada por el grupo CeCal del Instituto de Computacin de la Facultad de Ingeniera.

Estudio de tecnologas existentes.

En paralelo a la investigacin y estudio

del estado del arte se llev a cabo un relevamiento de paquetes de software de base (sistemas operativos, bibliotecas, monitores de desempeo, etc.) que permitieran el desarrollo y la ejecucin de programas paralelos y distribuidos. De esta actividad surgi la propuesta de herramientas que permitieran la implantacin y administracin del cluster de alto desempeo con acceso remoto.

Relevamiento de requerimientos y determinacin del alcance del proyecto. Durante las primeras etapas del proyecto se realizaron reuniones con
los tutores para relevar los principales requerimientos, identicar los posibles problemas y determinar el alcance del proyecto que permitiera cumplir con los objetivos del proyecto.

Implementacin de la interfaz Web.

Dentro de los alcances del proyecto se

encuentra la implementacin de una interfaz web que permita el acceso remoto al cluster. Esta interfaz debera contener elementos de usabilidad, funcionalidades de administracin y reportes del cluster para los administradores del mismo. Esta actividad se dividi en varias etapas. La primera fase involucr una etapa de relevamiento de requerimientos donde se mantuvieron reuniones con los tutores y especialistas en el rea de usabilidad de interfaces web. A continuacin se llev a cabo una etapa de diseo de la interfaz web donde se tuvieron en cuenta conocimientos previos por parte de los integrantes del proyecto as como la curva de aprendizaje de distintas herramientas de desarrollo. Luego de la etapa de diseo se realiz la etapa de desarrollo la cual se hizo en forma iterativa e incremental. Se jaron pequeas iteraciones en las cuales se fueron incrementando y mejorando las funcionalidades de la interfaz web.

Vericacin de la solucin.

Una vez implantado el cluster con las tecno-

logas seleccionadas y luego de terminado el desarrollo de la interfaz web se procedi con la etapa de vericacin. En esta etapa se probaron los principales requerimientos funcionales del sistema. Por ltimo, otras actividades llevadas a cabo fueron la realizacin de la documentacin nal como este informe, manuales, y la presentacin nal.

Pgina 13

2.

Computacin de alto rendimiento


Como se mencion anteriormente, en el correr de los ltimos aos ha crecido

la importancia de satisfacer los requisitos crecientes de poder de cmputo debido a la necesidad de resolver problemas realistas con modelos ms complejos, as como trabajar con grandes volmenes de datos sin perder de vista la capacidad de respuesta en un tiempo limitado. El procesamiento paralelo (o computacin paralela de alto rendimiento) ha ganado terreno y se ha vuelto muy importante en la resolucin de problemas, apoyndose en tecnologas como los clusters y mediante el uso de paradigmas de programacin paralela y/o distribuida. La computacin distribuida como modelo para resolver problemas de computacin consiste en compartir recursos heterogneos (basados en distintas plataformas, arquitecturas de computadores y programas, lenguajes de programacin), situados en distintos lugares y pertenecientes a diferentes dominios de administracin sobre una red que utiliza estndares abiertos. La computacin distribuida ha sido diseada para resolver problemas que superan la capacidad de cualquier supercomputadora o mainframe manteniendo la exibilidad de trabajar en mltiples problemas ms pequeos. Existen varios grados de distribucin: de hardware y procesamiento, de datos y de control. Algunas de las ventajas de la computacin distribuida son la mejora en el desempeo, la robustez, la seguridad no centralizada y el acceso transparente a los datos remotos. Las tcnicas de autorizacin segura son esenciales antes de permitir que los recursos informticos sean controlados por usuarios remotos dado que el entorno es generalmente multiusuario. La programacin paralela es una tcnica de programacin basada en la ejecucin simultnea, bien sea en un mismo ordenador (con uno o varios procesadores) o en un cluster de ordenadores, en cuyo caso se denomina computacin paralela-distribuida. Al contrario que en la programacin concurrente, las tcnicas de paralelizacin enfatizan la verdadera simultaneidad de la ejecucin de las tareas. El avance en diferentes tecnologas como microprocesadores con mayor poder de procesamiento, comunicacin de datos de alta velocidad y el desarrollo de bibliotecas para la comunicacin entre procesos han facilitado la utilizacin de la programacin paralela en aplicaciones. Mediante la programacin paralela los multicomputadores y los sistemas con mltiples procesadores consiguen un aumento en el rendimiento, en cambio en los sistemas monoprocesador el benecio en el rendimiento no es tan evidente ya que la CPU es compartida por mltiples procesos en el tiempo. El mayor problema de la computacin paralela radica en la complejidad en la sincronizacin entre tareas, ya sea mediante secciones crticas, semforos o pasaje de mensajes, para garantizar la exclusin mutua en las zonas del cdigo en las que sea necesario. La programacin paralela proporciona ventajas como mayor capacidad de proceso, menor tiempo de procesamiento y aprovechamiento de la escalabilidad potencial de los recursos. Existen diversos tipos de aplicaciones que pueden verse beneciadas por la programacin paralela. Por un lado estn las aplicaciones de clculo intensivas, que requieren un alto nmero de ciclos de mquina y han impulsado el desarrollo de los supercomputadores. Algunos ejemplos son aplica-

2.1 Organizacin de computadores

Pgina 14

ciones para dinmica de uidos computacional, simulaciones electromagnticas, modelado ambiental, dinmica estructural, modelado biolgico, dinmica molecular, simulacin de redes y modelado nanciero y econmico. Otro tipo de aplicaciones con una gran demanda de recursos son las de almacenamiento masivo, dependen de la capacidad para almacenar y procesar grandes cantidades de informacin y requieren de un acceso rpido y seguro a una cantidad considerable de datos almacenados. Algunas de ellas son las aplicaciones para anlisis de data ssmica, procesamiento de imgenes, minera de datos, anlisis estadstico de datos y anlisis de mercados. Finalmente las aplicaciones exigentes comunicacionalmente son relativamente nuevas y pueden ser llamadas servicios por demanda. Requieren de recursos computacionales conectados por redes con un ancho de banda considerable. Por ejemplo procesamiento de transacciones en lnea, sistemas colaborativos, texto por demanda, vdeo por demanda, imgenes por demanda o simulacin por demanda. Obviamente todas las aplicaciones anteriores dependen en cierto grado de cada uno de los aspectos computacionales mencionados: poder de cmputo, capacidades de almacenamiento y ecientes canales de comunicacin, sin embargo las podemos agrupar por su caracterstica dominante. Los sistemas de sistemas combinan en forma ms compleja las caractersticas anteriores y dependen, en muchos casos, de sistemas computacionales integrados diseados primordialmente para ellas. Ejemplos de sistemas de sistemas son las aplicaciones de soporte a decisiones corporativas y gubernamentales, control de sistemas a tiempo real, banca electrnica o compras electrnicas. Existe una alta correspondencia entre la evolucin de tecnologas informticas y el desarrollo de aplicaciones; en particular el hardware tiene gran inuencia en el xito de ciertas reas. Las aplicaciones intensivas en clculo fueron estimuladas principalmente por mquinas vectoriales y procesadores masivamente paralelos. Las aplicaciones de almacenamiento masivo han sido guiadas por dispositivos de almacenamiento como RAID y robots de cintas. Las aplicaciones exigentes comunicacionales como herramientas colaborativas basadas en WWW y servicios por demanda en lnea originalmente surgieron con las LAN y estn creciendo drsticamente con Internet.

2.1. Organizacin de computadores


La organizacin de los procesadores se reere a como se conectan o enlazan los procesadores o nodos en un computador paralelo. Existen varios criterios para evaluar los distintos diseos de organizacin. Se puede tener en cuenta el dimetro, el cual viene dado por la mayor distancia entre dos nodos, mientras menor sea el dimetro menor ser el tiempo de comunicacin entre nodos. Otro factor a tener en cuenta es el ancho de biseccin de la red, siendo este el menor nmero de enlaces que deben ser removidos para dividir la red por la mitad. Un ancho de biseccin alto puede reducir el tiempo de comunicacin cuando el movimiento de datos es sustancial, y hace al sistema ms tolerante a fallas debido a que defectos en un nodo no hacen inoperable a todo el sistema. Las redes se pueden separar en redes estticas y dinmicas, en las redes

2.1 Organizacin de computadores

Pgina 15

estticas la topologa de interconexin se dene cuando se construye. Si la red es dinmica, la interconexin puede variar durante la ejecucin de un programa o entre la ejecucin de programas.

Bus y Ethernet (gura 1).

En las redes de tipo bus o Ethernet los procesa-

dores comparten un nico bus como recurso de comunicacin. La arquitectura es fcil y econmica de implementar, pero no es escalable ya que solo un procesador puede usar el bus en un momento dado, a medida que se incrementa el nmero de procesadores, el bus se convierte en un cuello de botella debido a la congestin.

Figura 1: Bus y Ethernet

Mallas (gura 2).

Al igual que la interconexin mediante bus (o Ethernet),

las mallas son fciles y econmicas de implementar, sin embargo el dimetro se incrementa al aadir nodos. En las mallas de dimensin 1, si los dos nodos extremos tambin son conectados, entonces se tiene un anillo. Las mallas de 2 dimensiones y de 3 dimensiones son comunes en computacin paralela y tienen la ventaja de que pueden ser construidas sin conexiones largas. El dimetro de las mallas puede ser reducido a la mitad si se extiende la malla con conexiones toroidales de forma que los procesadores en los bordes tambin estn conectados con vecinos. Esto sin embargo presenta dos desventajas: conexiones ms largas son requeridas y un subconjunto de un torus no es un torus y los benecios de esta interconexin se pierden si la mquina es particionada entre varios usuarios.

Figura 2: Mallas

Mariposa (gura 3).

Las redes de tipo mariposa son similares a las mallas

pero presentan menor dimetro.

2.1 Organizacin de computadores

Pgina 16

Figura 3: Mariposa

rboles binarios.
(NP-difciles).

Los rboles binarios son particularmente tiles en proble-

mas de ordenamiento, multiplicacin de matrices, y algunos problemas en los que los tiempos de solucin crecen exponencialmente con el tamao del problema

Pirmides (gura 4).

Las redes de tipo pirmide intentan combinar las

ventajas de las mallas y los rboles, se incrementa la tolerancia a fallas y el nmero de vas de comunicacin.

Figura 4: Pirmides

Hipercubo (gura 5).

Un hipercubo puede ser considerado como una ma-

lla con conexiones largas adicionales, estas conexiones reducen el dimetro e incrementan el ancho de biseccin.

2.1 Organizacin de computadores

Pgina 17

Se puede denir recursivamente un hipercubo de la siguiente manera: un hipercubo de dimensin-cero es un nico procesador y un hipercubo de dimensinuno conecta dos hipercubos de dimensin-cero. En general, un hipercubo de dimensin d+1 con 2d+1 nodos se construye conectando los procesadores respectivos de dos hipercubos de dimensin d.

Figura 5: Hipercubo

Omega.

Omega es una red formada por crossbar switches 2x2, con cuatro

estados posibles: recto, cruzado, broadcast superior y broadcast inferior que son congurados segn la conexin que se tiene. Estas topologas se llaman dinmicas o recongurables. Estas redes reducen considerablemente la competencia por ancho de banda, pero son altamente no escalables y costosas. El switch de alto desempeo de la SP2 es una red omega. La gura 6 muestra una red omega de 3 etapas que conecta 8 procesadores.

2.2 Diseo de algoritmos paralelos

Pgina 18

Figura 6: Omega

Fibras de interconexin (gura 7).


o topologas.

Las bras de interconexin son un

conjunto de switches, llamados routers, enlazados por distintas conguraciones

Figura 7: Fibras de interconexin

2.2. Diseo de algoritmos paralelos


El diseo de algoritmos paralelos involucra cuatro etapas, las cuales se presentan como secuenciales pero que en la prctica no lo son. La primera etapa es la de particin, en esta etapa el cmputo y los datos sobre los cuales se opera se descomponen en tareas. En este punto del diseo se ignoran aspectos como el nmero de procesadores de la mquina a usar y se concentra la atencin en explotar oportunidades de paralelismo.

2.2 Diseo de algoritmos paralelos

Pgina 19

Finalizada la primera etapa, se inicia la etapa de comunicacin donde se determina la comunicacin para coordinar las tareas, se denen estructuras y algoritmos de comunicacin. Luego en la etapa de agrupacin se evala en trminos de eciencia y costos de implementacin a las dos etapas anteriores. Se agrupan tareas pequeas en tareas ms grandes. En la ltima etapa cada tarea es asignada a un procesador tratando de maximizar la utilizacin de los procesadores y de reducir el costo de comunicacin. La asignacin puede ser esttica (se establece antes de la ejecucin del programa) o en tiempo de ejecucin mediante algoritmos de balanceo de carga.

2.2.1. Particin
En la etapa de particin se buscan oportunidades de paralelismo y se trata de subdividir el problema lo ms namente posible, dividiendo tanto los cmputos como los datos. Existen dos formas de descomposicin, descomposicin del dominio y descomposicin funcional. La descomposicin del dominio se centra en los datos, se determina la particin apropiada de los datos y luego se trabaja en los cmputos asociados con los datos. La descomposicin funcional es el contrario al enfoque anterior, primero se descomponen los cmputos y luego se ocupa de los datos. En el proceso de particin existen varios aspectos a tener en cuenta, en particular el orden de tareas debe ser por lo menos superior al nmero de procesadores para tener exibilidad en etapas siguientes. Es importante evitar cmputos y almacenamientos redundantes, y las tareas deben ser de tamaos equivalentes para facilitar el balanceo de la carga de los procesadores. Para permitir cierta escalabilidad el nmero de tareas debe ser proporcional al tamao del problema.

2.2.2. Comunicacin
El proceso de particin de tareas no es independiente del proceso de comunicacin. En el proceso de comunicacin se especica como los datos sern transferidos o compartidos entre tareas. La comunicacin puede ser denida en dos fases. Primero se denen los canales que conectan las tareas y luego se especica la informacin o mensajes que deben ser enviados y recibidos en estos canales. La forma de organizacin de la memoria (distribuida o compartida) determinar la forma de atacar la comunicacin entre tareas. En ambientes de memoria distribuida, las tareas tienen una identicacin nica e interactan enviando y recibiendo mensajes hacia y desde tareas especcas. Las bibliotecas ms conocidas para implementar el pasaje de mensajes en ambientes de memoria distribuida son MPI (Message Passing Interface) y PVM (Parallel Virtual Machine). En ambientes de memoria compartida no existe la nocin de pertenencia y el envo de datos no se da como tal. Todas las tareas comparten la misma memoria. Semforos, semforos binarios, barreras y otros mecanismos de sincronizacin

2.2 Diseo de algoritmos paralelos

Pgina 20

son usados para controlar el acceso a la memoria compartida y coordinar las tareas. Para poder dar esta etapa por terminada es necesario tener en cuenta varios aspectos. Cada tarea debe efectuar aproximadamente el mismo nmero de operaciones de comunicacin que cada una de las dems tareas. De otra forma es muy probable que el algoritmo no sea extensible a problemas mayores ya que habrn cuellos de botella. La comunicacin entre tareas debe ser tan reducida como sea posible, de esta forma los procesos no se trancan entre s en la espera de mensajes y se evita que el canal de comunicacin sea un cuello de botella. Las operaciones de comunicacin y los cmputos de diferentes tareas deben poder proceder concurrentemente.

2.2.3. Agrupacin
Durante las tareas de participacin y comunicacin el algoritmo resultante es an abstracto en el sentido de que no se tom en cuenta la arquitectura sobre la que se ejecutar. En este proceso se busca un algoritmo concreto, que se ejecute ecientemente sobre cierta clase de computadores. En particular, se considera la utilidad de agrupar tareas y de replicar datos y/o cmputos. En el proceso de particin se trata de establecer el mayor nmero posible de tareas con la intencin de maximizar el paralelismo. La maximizacin de tareas no necesariamente produce un algoritmo eciente, ya que el costo de comunicacin puede ser signicativo. Mediante la agrupacin de tareas se puede reducir la cantidad de datos a enviar y as reducir el nmero de mensajes y el costo de comunicacin. Se puede intentar replicar cmputos y/o datos para reducir los requerimientos de comunicacin. En esta etapa es importante chequear si la agrupacin redujo los costos de comunicacin. A su vez si se han replicado cmputos y/o datos, se debe vericar que los benecios son superiores a los costos. Se debe vericar que las tareas resultantes tengan costos de cmputo y comunicacin similares. Al igual que en las otras etapas se debe revisar si el nmero de tareas es extensible con el tamao del problema. Si el agrupamiento ha reducido las oportunidades de ejecucin concurrente, se debe vericar que aun hay suciente concurrencia y posiblemente considerar diseos alternativos. Finalmente se deber analizar si es posible reducir aun ms el nmero de tareas sin desbalancear la carga o reducir la extensibilidad.

2.2.4. Asignacin
En este proceso se determina en que procesador se ejecutar cada tarea. En mquinas de memoria compartida tipo UMA no se presenta este problema ya que proveen asignacin dinmica de procesos. Actualmente no hay mecanismos generales de asignacin de tareas para mquinas distribuidas por lo que este problema debe ser atacado explcitamente en el diseo de algoritmos paralelos.

2.3 Taxonoma de Flynn

Pgina 21

La asignacin de tareas puede ser esttica o dinmica. En la asignacin esttica, las tareas son asignadas a un procesador al comienzo de la ejecucin del algoritmo paralelo y corren ah hasta el nal. La asignacin esttica en ciertos casos puede resultar en un tiempo de ejecucin menor respecto a asignaciones dinmicas y tambin puede reducir el costo de creacin de procesos, sincronizacin y terminacin. En la asignacin dinmica se hacen cambios en la distribucin de las tareas entre los procesadores en tiempo de ejecucin, con el n de balancear la carga del sistema y reducir el tiempo de ejecucin. Sin embargo, el costo de realizar el balance puede ser signicativo y por ende incrementar el tiempo de ejecucin. Los algoritmos de balanceo de carga se pueden clasicar como balanceo centralizado, balanceo completamente distribuido y balanceo semi-distribuido. Cuando el balanceo es centralizado un nodo ejecuta el algoritmo y mantiene el estado global del sistema. Como contrapartida cuando el balanceo es completamente distribuido cada procesador mantiene su propia visin del sistema intercambiando informacin con sus vecinos y as hacer cambios locales. Como posible punto intermedio entre ambos tipos de algoritmo est el balanceo semi-distribuido, donde los procesadores se dividen en regiones, cada una con un algoritmo centralizado local mientras que otro algoritmo balancea la carga entre las regiones.

2.3. Taxonoma de Flynn


Una forma de clasicar las diferentes arquitecturas de computacin secuencial y paralela es mediante la taxonoma de Flynn, que est basada en la multiplicidad del ujo de instrucciones y del ujo de datos en un computador. Un ujo de instrucciones es una secuencia de instrucciones ejecutadas por el computador y un ujo de datos es la secuencia de datos sobre los cuales operan las instrucciones. Dentro de la clasicacin de Flynn hay varias categoras. La primera de ellas es SISD, Single Instruction stream, Single Data stream (ver gura 8). La mayor parte de computadores seriales son SISD, teniendo en general un CPU que ejecuta una instruccin y busca o guarda datos en un momento dado.

2.3 Taxonoma de Flynn

Pgina 22

UP: UC: M: FI: FD:

Unidad de Procesamiento Unidad de Control Memoria Flujo de Instrucciones Flujo de Datos Figura 8: Single Instruction stream, Single Data stream

La segunda categora es SIMD, Single Instruction stream, Multiple Data stream (ver gura 9). Esta categora comprende los arreglos de procesadores. Tiene un conjunto de unidades de procesamiento cada una ejecutando la misma operacin sobre datos distintos.

Figura 9: Single Instruction stream, Multiple Data stream

En la categora MISD, Multiple Instruction stream, Single Data stream (ver gura 10) existen n procesadores, cada uno recibiendo una instruccin diferente y operando sobre el mismo ujo de datos. Actualmente no hay mquinas de este tipo por ser poco prcticas, a pesar de que ciertas MIMD puedan ser usadas de esta forma.

2.4 Arquitecturas de computacin paralela

Pgina 23

Figura 10: Multiple Instruction stream, Single Data stream

La categora de MIMD, Multiple Instruction stream, Multiple Data stream (ver gura 11) incluye a la mayora de los multiprocesadores y multicomputadores, que en general tienen ms de un procesador independiente, y cada uno puede ejecutar un programa diferente sobre sus propios datos. Es posible hacer una segunda categorizacin segn su forma de organizacin de memoria, ya sea memoria compartida o memoria distribuida.

Figura 11: Multiple Instruction stream, Multiple Data stream

Por ltimo la categora SPMD (Single Program, Multiple Data), donde cada procesador ejecuta una copia exacta del mismo programa, pero opera sobre datos diferentes. Pese a no ser una categora denida por Flynn es muy usada y puede ser considerada como un caso particular de MIMD.

2.4. Arquitecturas de computacin paralela


En esta seccin se enumeran las diferentes arquitecturas que se pueden encontrar relacionadas a la computacin paralela.

2.4 Arquitecturas de computacin paralela

Pgina 24

2.4.1. Arreglos de procesadores


En un arreglo de procesadores tenemos un computador cuyo conjunto de instrucciones permite operaciones tanto sobre vectores como escalares al que se denomina computador vectorial.

Procesador Vectorial Pipelined.

En estas mquinas los vectores uyen

a travs de las unidades aritmticas pipelined. Las unidades consisten de una cascada de etapas de procesamiento compuestas de circuitos que efectan operaciones aritmticas o lgicas sobre el ujo de datos que pasa a travs de ellas. Las etapas estn separadas por registros de alta velocidad usados para guardar resultados intermedios. La informacin que uye entre las etapas adyacentes est bajo el control de un reloj que se aplica a todos los registros simultneamente. Ejemplos de esta categora son mquinas como la Cray-1 y la Cyber-205.

Arreglos de Procesadores.

Son mquinas que constan de un computador

secuencial conectado a un arreglo de elementos idnticos de procesamiento sincronizado capaces de ejecutar las mismas operaciones sobre datos diferentes. El computador secuencial generalmente es un CPU de propsito general que almacena el programa y los datos que sern operados en paralelo, adems de ejecutar la porcin secuencial del programa. Los elementos de procesamiento se asemejan a CPUs pero no tienen unidades de control propias; el computador secuencial genera todas las seales de control para las unidades de procesamiento en el computador. Los arreglos de procesamiento dieren fundamentalmente en la complejidad y la topologa de interconexin de sus elementos de procesamiento. Ejemplos de estas mquinas son: IILIAC IV, Goodyear MPP y Connection Machine CM-200.

2.4.2. Multiprocesadores
Son equipos formados por un nmero de procesadores completamente programables capaces de ejecutar su propio programa. La principal debilidad que presentan los multiprocesadores (mquinas de memoria compartida) radica en que no se pueden agregar procesadores indenidamente ya que a partir de cierto nmero y dependiendo de la aplicacin, el mecanismo de switches o enrutamiento se satura, generando un problema importante a la hora de escalar la solucin.

UMA: Multiprocesadores de Acceso Uniforme a Memoria.


un bus comn, crossbar switches o packet-switched networks.

Estos compu-

tadores tienen sus procesadores interconectados a travs de un mecanismo de switches a una memoria compartida centralizada. Entre estos mecanismos estn: Encore Multimax y Sequent Symetry S81 son ejemplos comerciales de este tipo de multiprocesadores.

2.4 Arquitecturas de computacin paralela

Pgina 25

NUMA: Multiprocesadores de Acceso No-Uniforme a Memoria.

Es-

tos multiprocesadores tienen el espacio de direccionamiento compartido y la memoria distribuida. La memoria compartida est formada por la memoria local de los procesadores. El tiempo de acceso a memoria depende de si el acceso es local al procesador o no. La BBN TC2000 y la SGI Origin 2000 son ejemplos de este modelo de computacin paralela.

2.4.3. Multicomputadores
Una de las principales caractersticas de los multicomputadores es que los procesadores que los conforman no comparten memoria, cada procesador tiene su propia memoria privada (mquinas de memoria distribuida) y la interaccin entre ellos es a travs de pasaje de mensajes. Ejemplos son: Intel ParagonXP/S, Meikos Computing Surface, nCUBE 2, Parsytec SuperCluster, Thinking Machine CM-5 y la IBM SP2.

2.4.4. Mquinas de memoria compartida distribuida


Actualmente las mquinas paralelas tienden a aprovechar las facilidades de programacin que ofrecen los ambientes de memoria compartida y la escalabilidad de los ambientes de memoria distribuida. Este modelo conecta entre s mdulos de multiprocesadores manteniendo la visin global de la memoria. Las mquinas de memoria compartida distribuida entra dentro de la categora de NUMA y un ejemplo es la SGI Origin 2000.

2.4.5. Multiprocesadores multi-hebrados


En los multiprocesadores multi-hebrados, cada procesador tiene cierto nmero de ujos de instrucciones implementados en hardware, incluyendo el contador de programa y registros, cada uno destinado a ejecutar una hebra. En cada ciclo el procesador ejecuta instrucciones de una de las hebras. En el ciclo siguiente, el procesador hace un cambio de contexto y ejecuta instrucciones de otra hebra. La Tera MTA (multithreaded architecture) es el primer ejemplo con esta arquitectura, donde cada procesador tiene 128 ujos de instrucciones. Un acceso a memoria dura aproximadamente 100 ciclos por lo que en la prxima ejecucin de la hebra se tendrn los datos requeridos. Este mecanismo permite a la MTA tolerar la latencia a memoria y por lo tanto no requiere de memorias cache. Cada instruccin de 64-bits codica 3 operaciones (una de memoria y dos que pueden ser aritmticas o de control). Cuenta con un sistema operativo de versin distribuida completamente simtrica de UNIX. El sistema cuenta con entre 1 y 256 procesadores que comparten una enorme memoria. A su vez cada procesador tiene 1 o 2 GB de memoria, un mapeo aleatorio de la memoria y una red altamente interconectada proveen acceso casi uniforme de cualquier procesador a cualquier memoria. Los estudios realizados muestran que el costo del multi-hebrado es pequeo, con un rendimiento comparable con el de la T90 y los cdigos de la MTA

2.4 Arquitecturas de computacin paralela

Pgina 26

son signicativamente ms fciles de optimizar que en mquinas masivamente paralelas o estaciones de trabajo de alto rendimiento.

2.4.6. Cluster de PC's


El trmino cluster se aplica a los conjuntos de computadoras unidos mediante una red de alta velocidad que se comportan como si fuesen un nico recurso computacional con mayor poder de cmputo. Hoy en da los clusters de PC's tienen un papel importante en aplicaciones cientcas, de ingeniera, comerciales, simulaciones, etc. La tecnologa de clusters ha evolucionado apoyndose en actividades que van desde aplicaciones de supercmputo y software de misiones crticas, servidores Web y comercio electrnico, hasta bases de datos de alto rendimiento. El uso de clusters surge gracias a la convergencia de varias tendencias actuales como la disponibilidad de microprocesadores econmicos de alto rendimiento y redes de alta velocidad, la existencia de herramientas para cmputo distribuido de alto rendimiento, as como la creciente necesidad de potencia computacional para aplicaciones que la requieran. Se espera de un cluster que presente combinaciones de las siguientes caractersticas: alto rendimiento, alta disponibilidad, equilibrio de carga y escalabilidad. La construccin de un cluster es econmica debido a su exibilidad, permitiendo tener varios computadores con la misma conguracin de hardware y sistema operativo (cluster homogneo), diferente rendimiento pero con arquitecturas y sistemas operativos similares (cluster semi-homogneo), o tener diferente hardware y sistema operativo (cluster heterogneo). Se pueden construir clusters con ordenadores personales desechados por anticuados que consiguen competir en capacidad de clculo con superordenadores de precios elevados.

Cluster de alto rendimiento.

Un cluster de alto rendimiento est diseado

para dar altas prestaciones de capacidad de clculo. Por medio de un cluster se pueden conseguir capacidades de clculo superiores a las de un ordenador ms caro. Para garantizar esta capacidad de clculo, los problemas necesitan ser paralelizables, ya que el mtodo con el que los clusters agilizan el procesamiento es dividir el problema en subproblemas ms pequeos y resolverlos en los nodos.

Cluster de alta disponibilidad.

Un cluster de alta disponibilidad se ca-

racteriza por compartir los discos de almacenamiento de datos, los distintos computadores se monitorean constantemente entre s para responder en forma instantnea frente a la cada de uno de ellos. Los clusters de alta disponibilidad pueden dividirse entre clusters de alta disponibilidad de infraestructura y clusters de alta disponibilidad de aplicacin.

2.5 Herramientas para la programacin paralela

Pgina 27

Cluster de balanceo de carga.

Un cluster de equilibrio de carga o de cmpu-

to adaptativo est compuesto por uno o ms ordenadores que actan como front-end del cluster, y que se ocupan de repartir las peticiones de servicio que reciba el cluster a otros ordenadores del cluster que forman el back-end de ste.

Escalabilidad.

La escalabilidad es la propiedad deseable de un sistema, una

red o un proceso, que indica su habilidad para, o bien manejar el crecimiento continuo de trabajo de manera uida, o bien para estar preparado para crecer en tamao sin perder calidad en los servicios ofrecidos. La capacidad de este tipo de clusters se puede ampliar fcilmente aadiendo ms ordenadores al cluster. La robustez es una de las caractersticas ms importantes ya que ante la cada de alguno de los ordenadores del cluster el servicio se puede ver mermado, pero mientras haya ordenadores en funcionamiento, stos seguirn dando servicio.

2.5. Herramientas para la programacin paralela


En programacin paralela existen diferentes lenguajes y herramientas de programacin con caractersticas especcas para diferentes clases de problema. C++ Composicional es una extensin de C++ que provee al programador facilidades para controlar localidad, concurrencia, comunicaciones, y asignacin de tareas. Puede ser usado para construir libreras que implementen tareas, canales, y otras abstracciones bsicas de la programacin paralela. High Performance Fortran (HPF) es un ejemplo de lenguajes datos-paralelos y se ha convertido en un estndar para aplicaciones cientcas e ingenieriles. El paralelismo es expresado en trminos de operaciones sobre matrices y la comunicacin es inferida por el compilador. Parallel Virtual Machine (PVM) es una biblioteca de subrutinas para enviar y recibir mensajes. Message Passing Interface (MPI) es una biblioteca similar a PVM pero, tal como HPF, MPI se ha convertido un estndar.

2.5.1. MPI: Message Passing Interface


MPI es un estndar que dene la sintaxis y la semntica de las funciones contenidas en una librera de paso de mensajes diseada para ser usada en programas que exploten la existencia de mltiples procesadores. Fue creado por cientcos desarrolladores de software y aplicaciones bajo el objetivo de desarrollar un estndar portable y eciente para programacin paralela. Implementaciones del estndar en forma de biblioteca permiten trabajar con memoria distribuida, tener paralelismo explcito y contener un nico mecanismo de comunicacin que puede ser punto a punto. El nmero de tareas es jado en tiempo de pre-ejecucin (aunque esto ha cambiado en la versin 2 del estndar) y permite agrupamiento de procesos e incluye contextos de comunicacin entre grupos de procesos. La caracterstica que hace que las implementaciones de este estndar sean de especial inters para sistemas distribuidos es que no utiliza memoria compartida.

2.5 Herramientas para la programacin paralela

Pgina 28

Los elementos principales que intervienen en el paso de mensajes son el proceso que enva, el que recibe y el mensaje. Dependiendo de si el proceso que enva el mensaje espera a que el mensaje sea recibido, se puede hablar de paso de mensajes sncrono o asncrono. En el paso de mensajes asncrono, el proceso que enva, no espera a que el mensaje sea recibido, y contina su ejecucin, siendo posible que vuelva a generar un nuevo mensaje y a enviarlo antes de que se haya recibido el anterior. Por este motivo se suelen emplear buzones, en los que se almacenan los mensajes a espera de que un proceso los reciba. Generalmente empleando este sistema, el proceso que enva mensajes solo se bloquea cuando naliza su ejecucin, o cuando el buzn est lleno. En el paso de mensajes sncrono, el proceso que enva el mensaje espera a que un proceso lo reciba para continuar su ejecucin. Por esto se suele llamar a esta tcnica encuentro, o rendezvous. Dentro del paso de mensajes sncrono se engloba a la llamada a procedimiento remoto, muy popular en las arquitecturas cliente/servidor. La Interfaz de Paso de Mensajes es un protocolo de comunicacin entre computadoras, es el estndar para la comunicacin entre los nodos que ejecutan un programa en un sistema de memoria distribuida. Las implementaciones en MPI consisten en un conjunto de bibliotecas de rutinas que pueden ser utilizadas en programas escritos en los lenguajes de programacin C, C++, Fortran y Ada. La ventaja de MPI sobre otras bibliotecas de paso de mensajes, es que los programas que utilizan la biblioteca son portables (dado que MPI ha sido implementado para casi toda arquitectura de memoria distribuida), y rpidos, (porque cada implementacin de la librera ha sido optimizada para el hardware en la cual se ejecuta).

2.5.2. PVM: Parallel Virtual Machine


PVM permite utilizar una coleccin de computadores heterogneos como una nica mquina virtual paralela. El sistema administra en forma transparente el enrutamiento de mensajes, la conversin de datos y la planicacin de tareas en la mquina virtual. Los programas estn compuestos por una serie de tareas que cooperan entre s. Estas tareas acceden a recursos de PVM a travs de una biblioteca estndar, que contiene funciones para iniciacin y nalizacin de tareas as como para comunicacin y sincronizacin entre tareas. El sistema PVM se compone de dos partes. La primera parte es un daemon, llamado pvmd3, el cual reside en todas las mquinas que forman la mquina virtual. Cuando un usuario desea ejecutar una aplicacin, lo primero que debe hacer es crear la mquina virtual, iniciando PVM. Luego, la aplicacin se puede ejecutar desde cualquiera de los computadores en el sistema. Mltiples usuarios pueden congurar mquinas virtuales y cada uno de ellos puede ejecutar mltiples aplicaciones simultneamente en su conguracin. La segunda parte de PVM es una biblioteca de funciones que ofrece un completo repertorio de primitivas. Existen funciones para enviar y recibir mensajes, iniciar procesos, coordinar tareas y modicar la mquina virtual. El modelo de computacin de PVM se basa en la nocin de que una aplicacin consiste de mltiples tareas y cada tarea es responsable de una parte de la carga de trabajo

2.5 Herramientas para la programacin paralela

Pgina 29

computacional de la aplicacin. Las tareas se identican mediante un entero llamado el identicador de tarea y abreviado TID. Los mensajes se envan y reciben utilizando estos TID, los cuales son asignados por PVM. Algunas de sus cualidades de PVM son potencia, simplicidad, portabilidad, practicidad. Permite la administracin dinmica de un conjunto de equipos que conforman la mquina virtual. Contiene mecanismos de creacin e identicacin de procesos, un modelo de comunicacin entre procesos basado en pasaje de mensajes y brinda mecanismos de sincronizacin de procesos. PVM brinda soporte para manejar heterogeneidad y aprovecha las arquitecturas multiprocesador.

2.5.3. Middleware
El middleware es un software de conectividad que ofrece un conjunto de servicios que hacen posible el funcionamiento de aplicaciones distribuidas sobre plataformas heterogneas. Funciona como una capa de abstraccin de software distribuida, que se sita entre las capas de aplicaciones y las capas inferiores (sistema operativo y red). El middleware nos abstrae de la complejidad y heterogeneidad de las redes de comunicaciones subyacentes, as como de los sistemas operativos y lenguajes de programacin, proporcionando una API para la fcil programacin y manejo de aplicaciones distribuidas, dando a su vez la sensacin al usuario de que utiliza un nico computador muy potente. Dependiendo del problema a resolver y de las funciones necesarias, sern tiles diferentes tipo de servicios de middleware. Por lo general el middleware del lado cliente est implementado por el Sistema Operativo subyacente, el cual posee las libreras que implementan todas las funcionalidades para la comunicacin a travs de la red. Adems ofrece herramientas para la optimizacin y mantenimiento del sistema: migracin de procesos, checkpoint-restart (congelar uno o varios procesos, mudarlos de servidor y continuar su funcionamiento en el nuevo host), balanceo de carga, tolerancia a fallos, etc. Es importante que la solucin sea escalable, en este caso debe poder detectar automticamente nuevos servidores conectados al cluster para proceder a su utilizacin. El middleware recibe los trabajos entrantes al cluster y los redistribuye de manera que el proceso se ejecute ms rpido y el sistema no sufra sobrecargas en un servidor. Esto se realiza mediante polticas denidas en el sistema (automticamente o por un administrador) que le indican dnde y cmo debe distribuir los procesos, por un sistema de monitorizacin, el cual controla la carga de cada CPU y la cantidad de procesos en l. El middleware tambin debe poder migrar procesos entre servidores con distintas nalidades. Debe ser capaz de balancear la carga, si un servidor est muy cargado de procesos y otro est ocioso, pueden transferirse procesos a este ltimo para liberar de carga al primero y optimizar el funcionamiento. Adems debe permitir al administrador realizar un mantenimiento de los servidores, si hay procesos corriendo en un servidor que necesita mantenimiento o una actualizacin, deber ser posible migrar los procesos a otro y proceder a desconectar

2.6 Conclusiones sobre la computacin de alto rendimiento

Pgina 30

del cluster al primero. A su vez es el encargado de priorizar los trabajos. En caso de tener varios procesos corriendo en el cluster, pero uno de ellos de mayor importancia que los dems, puede migrarse este proceso a los servidores que posean ms o mejores recursos para acelerar su procesamiento. Las aplicaciones middleware han aparecido de manera relativamente reciente en el mundo de la informtica ganando popularidad en la dcada de los 80 ya que eran la solucin innovadora para integrar las nuevas aplicaciones con los sistemas antiguos (legacy systems), en todo caso, el trmino ha sido usado desde 1968. El uso de middleware tambin facilita la computacin distribuida mediante la conexin de mltiples aplicaciones para crear una aplicacin mucho mayor sobre una red.

2.6. Conclusiones sobre la computacin de alto rendimiento


El modelo de computacin de alto rendimiento es una realidad cada vez ms utilizada para la resolucin de problemas complejos. Los clusters de computadores y el uso de paradigmas de programacin paralela y distribuida han ganado popularidad en los ltimos tiempos. La popularidad de los clusters se ve estimulada por varios factores; como los bajos costos de las PC y el incremento en la velocidad y capacidad de tecnologas de comunicacin. La escalabilidad es otro factor importante que estimula la utilizacin de los clusters, ya que si se desea incrementar el poder de cmputo se pueden agregar ms nodos sin perder la inversin hecha previamente. Dentro del mbito de la Facultad de Ingeniera se han realizado inversiones en la investigacin e implementacin de clusters y herramientas de cmputo de alto rendimiento. Un ejemplo de estos trabajos es el cluster Medusa que fue llevado a cabo en conjunto entre el Instituto de Mecnica de los Fluidos e Ingeniera Ambiental (IMFIA) y del Centro de Clculo (CeCal) con el apoyo nanciero del Programa de Desarrollo Tecnolgico (PDT) en el ao 2006. La programacin paralela y distribuida es fundamental para la completa utilizacin de los recursos que brinda un cluster de computadores. Existen muchas herramientas que facilitan el desarrollo de programas paralelos y distribuidos y dos de las herramientas ms utilizadas son las bibliotecas MPI y PVM. Las bibliotecas MPI y PVM contienen subrutinas para enviar y recibir mensajes y manejar la sincronizacin entre procesos que facilitan el desarrollo de aplicaciones paralelas y distribuidas. En el proyecto de grado CCADAR se busca la implementacin de una herramienta de fcil acceso para los usuarios, que permita la ejecucin de trabajos paralelos y distribuidos en un cluster de computadores de forma de aprovechar las ventajas de la programacin paralela y distribuida. Para facilitar la ejecucin de trabajos paralelos en el cluster el proyecto de grado tiene como objetivo brindar soporte para las bibliotecas MPI y PVM. Para el manejo de la asignacin de recursos y control de la ejecucin de trabajos paralelos y distribuidos en el cluster fue necesario contar con un Middleware

2.6 Conclusiones sobre la computacin de alto rendimiento

Pgina 31

especializado en estas funciones. Un Middleware de este tipo se encuentra encargado de recibir las peticiones de ejecucin de trabajos en el cluster, realiza la asignacin de recursos a los trabajos para su ejecucin y prioriza la ejecucin de trabajos segn reglas predenidas. En el siguiente captulo se investigarn en profundidad las tecnologas necesarias para el proyecto CCADAR como middlewares, herramientas de monitoreo del sistema, etc.

Pgina 32

3.

Relevamiento de tecnologas
El relevamiento de paquetes de software fue una actividad muy importante

dentro del proyecto. Encontrar un conjunto de aplicaciones que permitan la ejecucin de programas paralelos y distribuidos fue vital para cubrir el alcance del proyecto. El relevamiento se enfoc en sistemas de administracin de cluster, sistemas de despacho de trabajos y sistemas de monitoreo de clusters. Las caractersticas en las cuales se centr el relevamiento de aplicaciones del cluster fueron: su desempeo, la interfaz disponible para el usuario, la interfaz de administracin del cluster, la informacin disponible del cluster y sus nodos individuales, los mecanismos de despacho e inicializacin de trabajos y nalmente que se trate de una herramienta de cdigo abierto. Previamente al relevamiento se estableci GNU/Linux como sistema operativo del cluster, pudiendo tratarse de una distribucin como Fedora u openSUSE, y la biblioteca MPI como principal herramienta para el desarrollo de programas paralelos y distribuidos. En esta seccin se presentarn las aplicaciones que fueron relevadas para el despacho de trabajos y administracin del cluster, las aplicaciones de monitoreo del cluster, los lenguajes de desarrollo, los manejadores de base de datos relacionales y otras aplicaciones que fueron necesarias para la implementacin del proyecto.

3.1. SSI:OpenMosix1 , OpenSSI y Kerrighed


A diferencia de un cluster tradicional en un cluster SSI todas las computadoras vinculadas dependen de un sistema operativo idntico en comn. Un middleware SSI oculta la naturaleza heterognea y distribuida de los recursos, y los presenta a los usuarios y a las aplicaciones como un recurso computacional unicado y sencillo. Una de las metas que ms diferencia un SSI de un cluster o un grid tradicional es su completa transparencia en la gestin de recursos. Es debido a esta completa transparencia que es posible migrar procesos de un nodo a otro. Ni siquiera es necesario programacin adicional para beneciarse del paralelismo, de esta manera no es necesario re-escribir programas utilizando bibliotecas como PVM (Parallel Virtual Machine) o MPI (Message Passing Interface). A pesar de las ventajas presentadas por los SSI a nivel de manejo de recursos no se cree que se ajusten a los requerimientos planteados en este proyecto principalmente debido a que el cluster ya se encuentra en funcionamiento siguiendo un paradigma estilo Beowulf ms clsico. Quizs sea interesante construir un pequeo cluster SSI e investigar ms a fondo este tipo de tecnologas de manera de poder comparar ambas soluciones.

1 Moshe Bar, fundador y director de proyecto de openMosix (uno de los proyectos SSI ms inuyentes al momento del relevamiento de tecnologas), anunci el 15 de julio del 2007 el cierre del proyecto y que se congelara tanto su desarrollo como el soporte brindado a partir del 1 de marzo del 2008.

3.2 Condor

Pgina 33

3.2. Condor
3.2.1. Caractersticas generales
Condor es un proyecto open-source de la universidad de Wisconsin especcamente diseado para High-Throughput Computing (HTC). Si bien Condor puede utilizarse con nes de High-Performance Computing (HPC) existen importantes diferencias entre HPC y HTC. Fundamentalmente los trabajos ejecutados en un entorno HPC se caracterizan por necesitar resolver un problema en el menor tiempo posible; en cambio en un entorno HTC los problemas se caracterizan en general por requerir de meses o aos de procesamiento en lugar de horas o das. Como consecuencia en HPC el poder computacional de un cluster normalmente es medido en operaciones de punto otante por segundo (FLOPS), en cambio la comunidad HTC se interesa ms en la cantidad de trabajos que es posible completar en un largo periodo de tiempo, sin interesarse especialmente en que tan rpido puede terminarse un trabajo individual. Debido a este perl de tipo HTC, Condor se enfoca principalmente en la robustez y la conabilidad brindando funcionalidades como CPU harvesting para la utilizacin de ordenadores no dedicados en momentos de ocio de los procesadores, migracin de procesos, tolerancia a fallas y puntos de recuperacin. Paradjicamente si bien se trata de un proyecto open-source su cdigo fuente no se distribuye libremente. Para obtener el cdigo fuente de Condor es necesario enviar un correo electrnico explicando la razn por la que se quiere obtener y cada peticin es analizada puntualmente.

3.2.2. Bibliotecas para programacin paralela


Condor se encuentra diseado principalmente para la ejecucin de trabajos seriales. Si bien provee soporte limitado para las bibliotecas PVM y MPI para procesamiento paralelo su desempeo en esta rea se encuentra por debajo de otros manejadores de recursos distribuidos como TORQUE o SGE.

3.2.3. Interfaz de programacin


Condor brinda una interfaz de programacin propietaria, y no soporta el estndar Distributed Resource Management Application API (DRMAA).

3.2.4. Resumen
Condor no parece ser el software ideal para el proyecto. Si bien puede adaptarse a los requerimientos planteados y brinda funcionalidades interesantes (e.g. migracin de procesos, cpu harvesting, etc.), existen reas crticas en las que se encuentra claramente en desventaja con respecto a otros productos. El limitado soporte que brinda Condor a las bibliotecas PVM y MPI resulta ser un problema crtico y determinante para que fuera descartado en el sistema planteado en el proyecto.

3.3 Sun Grid Engine

Pgina 34

3.3. Sun Grid Engine


Sun Grid Engine es un software para administracin de recursos distribuidos que dinmicamente asocia requerimientos de hardware y software de los usuarios con los recursos disponibles en la red (generalmente heterogneos) de acuerdo a polticas predenidas. Sun Grid Engine acta como el sistema nervioso central de un cluster de computadoras conectadas por medio de una red. A partir de algunos procesos en ejecucin constante (demonios), el Sun Grid Master supervisa todos los recursos de la red para permitir control completo y alcanzar la utilizacin ptima de los mismos. Sun Grid Engine fue desarrollado como realce de Codine de Genias GmbH y Grisdware Inc., de acuerdo a requerimientos de varios clientes tales como el laboratorio de investigacin del ejrcito de Aberdeen y BMW. Con Sun Grid Engine el uso medio de los recursos aument de menos del 50 % a ms del 90 % en ambos ambientes. Sun Grid Engine rene el poder de clculo disponible en granjas de computadoras dedicadas, servidores conectados y computadoras de escritorio, y las presenta desde un nico punto de acceso para el usuario que necesita ciclos de cmputo. Esto se logra distribuyendo la carga de trabajo entre los sistemas disponibles, aumentando la productividad de mquinas y del uso de licencias, mientras se maximiza el nmero de trabajos que pueden ser completados. Los requerimientos de hardware para Sun Grid Engine son mnimos (100 MB de memoria disponible y 500MB de disco) y soporta la mayora de los sistemas operativos populares. Sun Grid Engine tambin soporta las plataformas SPARC Ultra III, SPARC Ultra IV, AMD64, x86 y Mac. Sun Grid Engine permite control de usuarios, limitando tanto el nmero mximo de trabajos por usuario, grupo y proyecto, como recursos tales como colas, hosts, memoria y licencias de software. Los recursos requeridos por cada trabajo se pueden indicar mediante expresiones lgicas (por ejemplo, un usuario puede requerir que un trabajo corra en un host que cumpla la condicin Solaris o Linux pero no Linux en IA64). La DRMAA es un conjunto de APIs estndar desarrollado por Global Grid Forum para application builders, portal builders e ISV's. La versin 6.1 soporta los ltimos C y Java bindings de DRMAA 1.0. Adicionalmente, es provisto de compatibilidad hacia atrs para: DRMAA 0.5 Java binding y DRMAA 0.95 C binding. Sun Grid Engine guarda la informacin referida a la cuenta de cada trabajo en una base de datos relacional (soportando Oracle, MySQL y PostgreSQL). Maneja aplicaciones paralelas (MPI o PVM habilitados) a travs de una interfase dedicada y permite la distribucin de recursos a equipos o departamentos, por ejemplo proporcionalmente a su contribucin econmica. El cdigo muestra una complejidad alta, adems el sistema es integrado, no muestra facilidades a la hora de dividirlo en subsistemas. Estas caractersticas hacen que en algunos aspectos se vea como un sistema cerrado, que no permite adaptaciones en caso de realidades no abarcadas por el mismo.

3.4 TORQUE

Pgina 35

3.3.1. Resumen
Sun Grid Engine provee la mayora de las funcionalidades requeridas para el proyecto. Por otro lado, tiene como desventaja el ser un nico gran paquete indivisible, lo cual hace muy difcil cualquier adaptacin o modicacin de su funcionamiento. Observando la historia reciente del producto, en una versin anterior se encontr un problema de seguridad (un salto en las restricciones) y quienes lo estaban utilizando en ese momento descartaron la idea de buscar el problema y solucionarlo, limitndose solamente a esperar que los creadores de la herramienta lo corrigieran. La decisin de obviar el problema se debe a que la herramienta cuenta con un cdigo muy complejo y difcil de modicar, lo que lo coloca como una opcin poco viable para ser utilizada dentro de este proyecto.

3.4. TORQUE
El sistema PBS (Portable Batch System) fue desarrollado a principios de los '90 por MRJ para la National Aeronautics and Space Administration (NASA). PBS es un software que provee controles sobre la iniciacin y despacho de trabajos batch; permite la administracin y asignacin de recursos a los diferentes trabajos permitiendo asegurar a los usuarios que los trabajos obtendrn los recursos necesarios para terminar su ejecucin. Del sistema PBS surgen dos aplicaciones: OpenPBS y TORQUE. Ambas fueron relevadas en el proyecto Fenton. OpenPBS es la versin de cdigo abierto de la versin original de PBS desarrollada para la NASA. Actualmente es ofrecida por Altair Grid Technologies, aunque no se encuentra en desarrollo y la empresa no brinda ningn tipo de soporte sobre el software. Altair ha apostado a una versin comercial del producto llamada PBS Pro, y en lo que a Altair respecta OpenPBS es simplemente una forma de comenzar a utilizar PBS con el objetivo de comprar PBS Pro. TORQUE (Terascale Open-source Resource and QUEue manager) es una bifurcacin open-source de la versin 2.3.12 de OpenPBS mantenido y desarrollado por Cluster Resources. Incorpora numerosas mejoras con respecto al proyecto PBS original provistas por NCSA (National Center of Supercomputing Applications), OSC (Ohio Supercomputer Center), Sandia, PNNL (Pacic Northwest National Laboratory), y otros centros HPC junto con las mejoras desarrolladas por Cluster Resources. A continuacin se vern las caractersticas generales de TORQUE. OpenPBS no fue investigado a fondo pues como se mencion anteriormente no est en desarrollo actualmente y no existe soporte del mismo.

3.4.1. Caractersticas generales


TORQUE ofrece apoyo para programar y ejecutar trabajos que requieren el acceso interactivo de los usuarios a la entrada y salida del trabajo durante el tiempo de ejecucin. Esto es a menudo necesario para ejecutar debuggers u

3.4 TORQUE

Pgina 36

otros programas que requieren informacin como parte de un trabajo que debe tener previsto el acceso a hardware. TORQUE ejecuta dos scripts administrativos con la ejecucin de cada trabajo llamados prlogo y eplogo. El prlogo se ejecuta inmediatamente antes de que se ejecute el trabajo y el eplogo se ejecuta de inmediatamente despus. Ambos scripts se ejecutan con privilegios de root y pueden utilizarse para colocar una bandera o establecer parte del entorno de trabajo como la creacin de directorios temporales, realizar una limpieza de datos temporales o ejecuciones previas. En TORQUE los trabajos son manejados de la misma manera que lo hace PBS. Se cuenta con un conjunto de colas de trabajos que denen propiedades generales para los trabajos que contienen (e.g., recursos disponibles, etc.). Al ingresar un trabajo al sistema, ste debe especicar caractersticas especcas de s mismo que ayuden al sistema a planicar su ejecucin (e.g., nodos a utilizar, memoria mxima a utilizar, etc.). Con la informacin de la cola a la que pertenece el trabajo y los datos especcos del trabajo en cuestin el despachador de trabajos decide el momento en que un trabajo comienza a ejecutarse y con que recursos cuenta en cada instante. TORQUE cuenta con una interfaz de usuario de lnea de comando (CLI) como principal manera de interactuar con el sistema. Tambin cuenta con una interfaz grca para X-Windows y una biblioteca para desarrollo en C aunque es posible utilizar bibliotecas desarrolladas por terceros para otros lenguajes (e.g., Perl o Python). Existen tres tipos de nodos en un sistema TORQUE:

Nodo Maestro.

Es necesario que exista un nodo maestro en el sistema. El

nodo maestro es quien ejecuta el servidor de TORQUE que a su vez administra los nodos de cmputo del cluster. Dependiendo del sistema este nodo maestro puede encontrarse dedicado nicamente a este rol o compartir otros roles.

Nodos Interactivos.

Los nodos interactivos proveen un punto de entrada al

sistema para los usuarios. En estos nodos los usuarios pueden ingresar tareas al sistema y monitorear su progreso. Los nodos interactivos deben tener comandos disponibles para ingresar trabajos al sistema.

Nodos de cmputo.
cuestin.

Los nodos de cmputo son los responsables de la eje-

cucin de los trabajos encolados en el sistema. Son los encargados de iniciar, detener y manejar los procesos de cmputo en el sistema operativo del nodo en

3.4.2. Bibliotecas para programacin paralela MPI (Message Passing Interface). El soporte para bibliotecas tipo MPI
se encuentra integrado en TORQUE. El sistema puede ejecutar varias implementaciones de MPI: MPICH, MPICH2, OpenMPI, etc. Los recursos utilizados

3.4 TORQUE

Pgina 37

por procesos paralelos son correctamente registrados y se reporta su uso en el log del PBS.

PVM (Parallel Virtual Machine)

Una de las principales desventajas de

TORQUE es la dicultad que plantea en el uso de la biblioteca PVM. El soporte para PVM no se encuentra integrado al sistema por lo que debe manejarse cuidadosamente, de lo contrario es posible que la mquina virtual de PVM no libere adecuadamente los recursos asignados a un trabajo luego de nalizada su ejecucin.

3.4.3. Interfaz de programacin


TORQUE soporta el estndar Distributed Resource Management Application API (DRMAA) al igual que la mayora de los manejadores de recursos.

3.4.4. Maui
TORQUE contiene la lgica necesaria para llevar a cabo la planicacin de trabajos, pero se trata de una lgica muy simple que no resulta adecuada para un ambiente de produccin. Bsicamente el planicador que se encuentra incorporado a TORQUE maneja los trabajos como una cola FIFO (First-In First-Out). Para mejorar el despacho de trabajos se utiliza Maui. Maui se enfoca en la planicacin de trabajos y deja la problemtica de iniciar los trabajos y la interaccin con los usuarios a los manejadores de recursos (Distributed Resource Management, DRM por sus siglas en ingls) como OpenPBS, TORQUE, SGE, etc. Actualmente Cluster Resources ofrece el producto Moab que fue desarrollado a partir de Maui. Moab brinda mejoras en las funcionalidades con respecto a Maui pero se trata de un producto comercial y no es de cdigo abierto.

Requerimientos de hardware.
entre 20 a 50 MB de RAM.

Maui requiere de muy pocos recursos de

hardware para su funcionamiento: en clusters de hasta 10 teraops basta con

Plataformas soportadas.

Maui soporta los sistemas operativos Solaris de

SUN, cualquier distribucin de GNU/Linux, AIX (Advanced Interactive eXecutive) el sistema UNIX propiedad de IBM, OSF/Tru-64, HP-UX, IRIX, FreeBSD, y otras plataformas de tipo UNIX. Tambin es posible integrar Maui con los manejadores de recursos distribuidos TORQUE, OpenPBS, PBSPro, Sun Grid Engine (SGE), LoadLeveler, LSF, BProc/Scyld, Scalable System Software (SSSRM) y SLURM.

Caractersticas generales.
cin.

El algoritmo de planicacin de Maui presenta

caractersticas muy interesantes algunas de las cuales se presentarn a continua-

3.4 TORQUE

Pgina 38

Fairness.
rios del cluster.

Fairness implica dar igual acceso a los recursos a todos los usua-

Preemption.
prioridad.

Otra caracterstica del algoritmo de planicacin es que per-

mite suspender trabajos en ejecucin para poder ejecutar trabajos con mayor

Allocation manager.

Maui tiene una interfaz para la interaccin con un

allocation management externo. Un allocation manager (tambin conocido como allocation bank o cpu bank) funciona como un banco en el cual la moneda son los recursos del sistema (e.g., procesadores, memoria, etc.) autorizando a los trabajos cierta cantidad de recursos.

Backll.

Backll es una optimizacin en el algoritmo de planicacin que

permite asignar de mejor forma los recursos permitiendo ejecutar algunos trabajos fuera de orden siempre y cuando stos no retrasen los trabajos de prioridad superior de la cola. Para determinar si un trabajo ser retrasado, cada trabajo debe proveer una estimacin de cunto tiempo necesitar para su ejecucin. Esta estimacin, conocida como lmite wallclock, es una valoracin del tiempo desde el comienzo del trabajo hasta su nal. Es til sobrestimar levemente el lmite de wallclock porque el planicador se puede congurar para eliminar a los trabajos que exceden sus lmites del wallclock. Sin embargo, la sobrestimacin demasiado grande del tiempo del wallclock de un trabajo evitar que el planicador pueda optimizar correctamente la cola de trabajo. Cuanto ms exacto el lmite del wallclock, mayor ser la posibilidad de que Maui encuentre agujeros en la planicacin para comenzar a ejecutar su trabajo con mayor anticipacin.

Reservas anticipadas.

Las reservas anticipadas permiten que un sitio

disponga ciertos recursos para el uso especco de ciertas aplicaciones durante cierto tiempo. El acceso a una reserva dada es controlado por un Access Control List (ACL) que determina quin puede utilizar los recursos reservados. Es importante observar que mientras que un ACL permite qu trabajos particulares utilicen recursos reservados, no fuerzan al trabajo a utilizar estos recursos. Maui procurar utilizar la mejor combinacin posible de recursos disponibles, sean stos reservados o no. Maui puede ser congurado para que ciertos trabajos sean restringidos y que funcionen utilizando solamente recursos reservados, aplicando restricciones a nivel de trabajo o especicando ciertas restricciones especiales de QoS.

Calidad de servicio (QoS).

Las funciones de QoS permiten otorgar cier-

tos privilegios especiales a usuarios. Estos benecios pueden incluir acceso a recursos adicionales, exclusiones de determinadas polticas, acceso a capacidades especiales y mejoras en la priorizacin de trabajos.

3.4 TORQUE

Pgina 39

Fairshare.

Este componente permite favorecer trabajos en base al uso

histrico a corto plazo. Es posible as ajustar la prioridad de un trabajo dependiendo de la utilizacin porcentual del sistema de usuarios, grupos, o QoS. Dada una determinada ventana de tiempo sobre la cual se evala la utilizacin de recursos del sistema se determina si est siendo mantenido un cierto balanceo de la asignacin de recursos en el cluster.

Interfaz de programacin.
Interfaz de extensin

Maui brinda dos interfases de programacin pa-

ra extender o personalizar el despacho de trabajos:

(Extension Interface).

Esta interfaz permite

que bibliotecas externas sean conectadas con el servidor de Maui brindando acceso a todos los datos y objetos utilizados por el planicador. Adems, permite que estas bibliotecas sobrescriban las principales funciones de Maui.

Interfaz local.

Se trata de una interfaz en C enfocada exclusivamente al

desarrollo de nuevos algoritmos de despacho.

Estadsticas.

Maui almacena tres diferentes clases de estadsticas:

Estadsticas de tiempo real.

Las estadsticas de tiempo real son man-

tenidas en memoria y pueden ser consultadas mediante comandos. El comando 'showstats' provee informacin detallada por usuario, por grupo, por cuenta o por nodo. Adems en cualquier momento estas estadsticas pueden limpiarse utilizando el comando 'resetstats'.

Histrico.

Las estadsticas de histrico pueden ser obtenidas para un lapso

de tiempo, un tipo de trabajo y/o una porcin de recursos utilizando el comando 'proler'. Este comando utiliza la traza de informacin detallada de un trabajo, que es guardada al dar por nalizado un trabajo.

Fairshare.

Este tipo de estadsticas son mantenidas sin importar si fairs-

hare se encuentra habilitado o no. Al igual que las trazas de los trabajos, las estadsticas son almacenadas en archivos utilizando texto plano por cada ventana de fairshare.

3.4.5. Gold
Gold es un sistema de contadura open-source desarrollado en Pacic Northwest National Laboratory (PNNL) bajo el proyecto Scalable Systems Software (SSS), que lleva registro y maneja el uso de recursos en clusters de alto desempeo. Acta de la misma forma que un banco en el que son depositados crditos en cuentas, estos crditos representan recursos en el sistema. A medida que los usuarios consumen recursos en el sistema con la ejecucin de trabajos se debitan crditos de sus respectivas cuentas.

3.4 TORQUE

Pgina 40

En Gold es posible realizar operaciones como depsitos, retiros, transferencias o reembolsos sobre las cuentas del sistema, adems, provee listados de balances a usuarios y administradores.

Caractersticas generales. Reservas.


Previo al inicio de un trabajo se realiza una estimacin del total de recursos que consumir. En base a la estimacin se reservan crditos en la cuenta correspondiente. Los crditos 'reservados' se debitan una vez que el trabajo es terminado, evitando que un proyecto consuma ms recursos de los que tiene asignados.

Vencimiento de crditos.

Puede especicarse un lapso de validez a los

crditos en el sistema, permitiendo que se implemente una poltica de salo-opirdelo previniendo el uso exhaustivo de crditos acumulados. De esta manera se establecen ciclos de utilizacin de recursos evitando el uso de recursos excedentes de un ciclo a otro.

Interfaz web.
ministradores.

La interfaz web permite el acceso remoto a usuarios y ad-

Interfaz de programacin.
(basado en XML).

Existen diferentes formas de integrar Gold al

sistema: Perl API, Java API o directamente utilizando el protocolo SSSRMAP

3.4.6. Casos de estudio


Varias universidades utilizan con xito TORQUE y Maui para manejar los recursos de sus clusters. Se presentarn algunos casos.

Oregon State University, Laboratorio de fsica.

La universidad Oregon

State University cuenta actualmente con un cluster de 34 computadoras Dell Optiplex GX620's con procesadores Intel Pentium D 830 (3.0 GHz) y 1 GB of RAM con sistema operativo SUSE GNU/Linux 10.1 64-bit. Las computadoras del cluster cuentan con compiladores Intel para C, C++ y Fortran y la biblioteca Math Kernel Library (cluster edition). Para el procesamiento paralelo se utilizan las bibliotecas MPI. El cluster utiliza TORQUE como manejador de recursos, y desde el 4 de febrero del 2007 se utiliza Maui para la planicacin de tareas.

University of Glasgow.

La universidad de Glasgow dispone de un cluster

que hoy en da cuenta con 60 nodos de procesamiento disponibles, cada uno con procesadores duales Opteron 248 y 2 GB RAM. El cluster utiliza TORQUE y Maui sobre Redhat Enterprise GNU/Linux 3. Adems de los componentes

3.4 TORQUE

Pgina 41

estndares incluidos en la distribucin (e.g. compilador gcc, g++, g77, etc.) se han instalado las bibliotecas MPICH 1.2.6 (MPI) para procesamiento paralelo.

University of Heidelberg.

Dispone de un cluster instalado a principios de

2002 que consta de 512 procesadores AMD Athlon MP, instalados en 256 nodos de procesamiento SMP con 2 GB de memoria RAM cada uno. Los procesadores funcionan cada uno a 1.4GHz y alcanzan un mximo terico de 2.4 billones de operaciones de punto otante por segundo (Gops). El sistema total indica un mximo terico de desempeo de mas de 1.4 Teraops. Las primeras mediciones de desempeo utilizando Linpack Benchmark mostraron un rendimiento de 825 Gops, ubicando el cluster en la posicin 35va del top 500 de supercomputadoras del mundo en Junio del 2002. Como base del cluster se utiliza un sistema Debian GNU/Linux. Para procesamiento paralelo se utiliza la biblioteca MPICH (MPI) y como manejador de recursos se utiliza TORQUE. Por sobre TORQUE se encuentra instalado Moab, el sucesor comercial de Maui.

Stony Brook University.

El cluster tiene 235 nodos de procesamiento dual

(470 procesadores individuales). Cada procesador es un Dell Pentium IV Xeon de 3.4GHz con 2 GB de memoria RAM y 40 GB de disco duro. Los computadores operan con Debian GNU/Linux, utilizan TORQUE y Maui para manejar los trabajos y la versin 1.4 de MPI para el procesamiento paralelo.

Dansk Center for Scientic Computing.

El cluster consta de 200 nodos

Dell PowerEdge 1950 1U con dos procesadores Intel Woodcrest de 2,66 GHz. De estos 200 nodos 160 cuentan con 4 GB de RAM y 40 cuentan con 8 GB de RAM. Como sistema se utiliza openSUSE GNU/Linux 10.1 con kernel 2.6 y para la planicacin y manejo de trabajos se utiliza TORQUE 2.1.2 y Maui 3.2.6. Para el procesamiento paralelo se disponen de bibliotecas tanto de tipo MPI como de tipo PVM.

3.4.7. Resumen
TORQUE, junto con Maui y Gold, satisfacen los requerimientos planteados para el proyecto. Su consumo de recursos del cluster es relativamente bajo, se adapta muy bien al manejo de clusters pequeos y posee un manejo eciente de trabajos paralelos (sobre todo si estos son homogneos). Existen ciertos aspectos en los que TORQUE no se desempea de la mejor manera. Si bien se encuentra integrado el soporte para bibliotecas tipo MPI, debe tenerse mucho cuidado al momento de ejecutar trabajos utilizando PVM. TORQUE presenta carencias tambin en sus funcionalidades de gerenciamiento de recursos; e.g. no es capaz de realizar CPU Harvesting o migracin de procesos. El soporte por parte de la comunidad de usuarios de TORQUE y Maui por medio de listas de correo es muy bueno y tambin se encuentra mucha documentacin disponible en el sitio web por medio de una Wiki (aunque an se encuentra en construccin).

3.5 Ganglia

Pgina 42

3.5. Ganglia
Ganglia es un sistema de monitoreo, escalable y distribuido, para sistemas de alto desempeo como clusters de computadores o grids. Es un proyecto de cdigo abierto y se encuentra disponible para una amplia cantidad de sistemas operativos: Linux, BSD, Solaris, Windows, Darwin, etc. Ganglia utiliza tecnologas ampliamente difundidas como XML para la representacin de datos, XDR para la comunicacin y RRDtool para el almacenamiento y visualizacin de datos. El proyecto posee un amplio nfasis en consumir el mnimo de recursos posibles por nodo y brindar un mximo de concurrencia. Posee una implementacin robusta y puede manejar clusters con hasta 2000 nodos. Ganglia se encuentra integrado por tres componentes:

GMonD

GMonD (Ganglia Monitoring Daemon) es un servicio encargado del

monitoreo de un nodo en particular y debe estar instalado en cada una de las mquinas que se desee monitorear. Este servicio recolecta mtricas del sistema en base a CPU, memoria, disco duro, trco de red y utiliza un protocolo simple va XDR para compartir esta informacin mediante XML sobre TCP.

GMetaD

El metaservicio de Ganglia (Ganglia Meta Daemon) es un servicio

que se encarga de recolectar y almacenar informacin de otros servicios (ya sean servicios GMonD u otros servicios GMetaD). GMetaD provee un mecanismo de consultas muy simple para obtener informacin histrica acerca de grupos de mquinas.

Interfaz web
GMetaD.

Ganglia brinda adems un front-end web implementado en PHP

para la presentacin al usuario nal de la informacin almacenada por el sevicio

3.6. Apache
Apache es un servidor HTTP de cdigo abierto para plataformas Unix (BSD, GNU/Linux, etc.), Windows, etc. Desde 1996, Apache es el servidor HTTP ms utilizado en la Internet. Alcanz su mxima cuota de mercado en 2005 cuando lleg a ser utilizado por el 70 % de los sitios web en el mundo. Sin embargo ha sufrido un descenso en su cuota de mercado en los ltimos aos y hoy en da brinda servicio al 49 % de los sitios de Internet . Entre las ventajas que brinda Apache se puede destacar su enfoque altamente modular y un excelente soporte gracias a su gran cantidad de usuarios. Adems, gracias a su enfoque altamente modular, Apache soporta una gran cantidad de lenguajes server-side como: PHP, Python, Ruby, Perl, etc.

2 Segn los datos de la encuesta realizada en Junio del 2008 por Netcraft.com. Netcraft fue fundada en 1995 y se especializa en el anlisis de mercado de servidores y alojamiento web incluyendo deteccin de servidor web y sistema operativo.

3.7 PHP

Pgina 43

3.7. PHP
PHP es un acrnimo recursivo que signica PHP Hypertext Pre-processor (aunque inicialmente signicaba Personal Home Page). Fue creado por Rasmus Lerdof en 1994; sin embargo la implementacin principal de PHP es producida actualmente por The PHP Group y sirve como el estndar de facto para PHP al no existir una especicacin formal del lenguaje. PHP es publicado bajo la licencia PHP, la cual es considerada por la Free Software Fundation (FSF) como software libre. PHP es un lenguaje de propsito general e interpretado, muy popular debido a la rapidez y facilidad con la que permite desarrollar aplicaciones. Fue diseado originalmente para la creacin de pginas web dinmicas pero actualmente puede ser utilizado desde una interfaz de lnea de comandos o desde una interfaz grca usando las bibliotecas Qt o GTK+. Cuenta con una comunidad de usuarios muy amplia y se encuentra disponible para su instalacin en la mayora de los servidores web en casi cualquier plataforma. Se encuentra instalado en ms de 20 millones de sitios web y en un milln de servidores, aunque el nmero de sitios implementados en PHP ha declinado desde agosto de 2005. Algunos de los puntos a destacar de PHP son: su facilidad de uso, su amplia documentacin que incluye muchos ejemplos prcticos, que brinda soporte al paradigma de programacin de orientacin a objetos y que posee manejo de excepciones (aunque algunas de estas ventajas han aparecido recientemente en las ltimas versiones de PHP). Como mayor desventaja se presenta generalmente su caracterstica de favorecer la creacin de cdigo desordenado y complejo de mantener. Esta desventaja tiene dos orgenes, por un lado se debe a que PHP brinda tantas facilidades en su uso que es muy popular entre usuarios programadores con poca formacin tcnica, y por otro lado la falta de una especicacin formal resulta en algunos casos en una denicin poco homognea de las bibliotecas proporcionadas por el lenguaje.

3.8. PostgreSQL
PostgreSQL es un servidor de base de datos relacional con una trayectoria de ms de 15 aos de desarrollo activo. Se trata de un proyecto de cdigo abierto liberado bajo la licencia BSD y desarrollado por una comunidad de desarrolladores y organizaciones comerciales denominada PGDG (PostgreSQL Global Development Group). PostgreSQL comenz con el proyecto Ingres en la Universidad de Berkeley. Este proyecto, liderado por Michael Stonebraker, fue uno de los primeros intentos de implementar un motor de base de datos relacional. Despus de haber trabajado un largo tiempo en Ingres y de haber tenido amplia experiencia comercial, Michael decidi volver a la Universidad para trabajar en un nuevo proyecto sobre la experiencia de Ingres. Dicho proyecto fue llamado Post-Ingres o simplemente Postgres. PostgreSQL se encuentra disponible para una gran cantidad de sistemas

3.9 MySQL

Pgina 44

operativos incluyendo GNU/Linux, UNIX (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64), y Windows. Una caracterstica interesante que presenta PostgreSQL es su capacidad de acceso concurrente a la informacin, MVCC por sus siglas en ingls (Multi-Version Concurrency Control). Mediante MVCC PostgreSQL permite el acceso de lectura a una tabla mientras que otro proceso realiza una operacin de escritura sobre esa misma tabla. Este comportamiento se debe a que cada usuario obtiene una visin consistente de la ltima versin actualizada. Esta estrategia es superior al uso de bloqueos por tabla o por las comn en otras bases y elimina la necesidad del uso de bloqueos explcitos. PostgreSQL realiza un gran nfasis en el seguimiento de los estndares ANSI/ISO SQL y su implementacin de SQL se respeta muy fuertemente los estndares ANSI/ISO SQL-92 y 99.

3.9. MySQL
MySQL es un sistema de gestin de base de datos relacional. MySQL AB

desarrolla MySQL como software libre en un esquema de licenciamiento dual. Por un lado se ofrece bajo la licencia pblica GNU para software de cdigo abierto, pero las empresas que quieran incorporarlo a productos que no poseen cdigo abierto deben comprar a la empresa una licencia especca para uso comercial. El manejador de base de datos MySQL se ha convertido en el sistema de gestin de base de datos relacional ms popular, principalmente debido a su gran difusin en Internet en el desarrollo de sitios web dinmicos. MySQL no posee un enfoque purista en su implementacin como lo hace PostgreSQL, si bien MySQL respeta en su mayora los estndares '92 y '99 no es una meta principal del producto.

3 Desde

enero de 2008 una subsidiaria de Sun Microsystems.

Pgina 45

4.

Cluster con acceso remoto


En esta seccin se describir el sistema Fenton, se profundizar en las tecnolo-

gas elegidas en la etapa de relevamiento e investigacin para la implementacin del gerenciamiento de recursos (DRM) y el despacho de trabajos. Se detallar la construccin de la interfaz para acceso remoto al cluster y adems se mencionarn las herramientas utilizadas para el desarrollo y la documentacin a lo largo del proyecto. Cabe destacar que durante todo el proceso de desarrollo del sistema se utilizaron exclusivamente herramientas de cdigo libre (OSS).

Figura 12: Arquitectura del sistema.

4.1. Gerenciador de recursos y despachador de trabajos


A continuacin se presentarn y justicarn las tecnologas seleccionadas para la implementacin del gerenciador de recursos (DRM) y despachador de trabajos del sistema Fenton. La etapa de relevamiento de tecnologas fue una de las ms importantes del proyecto, y en la implementacin del gerenciador de recursos y el planicador de trabajos radica uno de los mayores riesgos para el proyecto. Luego de evaluar diversas tecnologas para la implementacin de clusters se opt por utilizar TORQUE como DRM y Maui como despachador, dejando

4.2 Desarrollo de la interfaz de acceso remoto

Pgina 46

abierta la posibilidad de anexar Gold para la contabilizacin de recursos. Existen varios casos de estudio donde es posible comprobar que TORQUE resulta muy adecuado para la gestin de clusters de pequeo a mediano porte. Tanto TORQUE como Maui requieren pocos recursos de hardware para su ejecucin, ventaja que resulta muy importante en un cluster de reducidas dimensiones como el que se desea utilizar. TORQUE es un derivado de PBS

4 por lo que cuenta con un cdigo base muy

estable y slido. Estas caractersticas ayudan a mitigar los riesgos presentados por tecnologas emergentes que ofrecen funcionalidades innovadoras pero que tambin resultan problemticas en un proyecto de corta duracin. TORQUE y Maui son productos de relativamente pequeo tamao, esto facilita su comprensin y por lo tanto su modicacin y adaptacin a necesidades particulares de investigacin. Si bien TORQUE brinda todas las funcionalidades necesarias para satisfacer los requerimientos del proyecto, tambin presenta ciertas carencias dentro de las cuales las ms importantes son: el uso de ciclos de procesador no aprovechados (CPU harvesting) y la migracin de procesos. Estas carencias no son un problema importante ya que el cluster cuenta con nodos homogneos y dedicados, con capacidades de procesamiento similares y que no sern compartidos con otras aplicaciones externas al cluster (e.g., aplicaciones de escritorio). Como se mencion en la seccin de relevamiento de tecnologas, si bien TORQUE contiene la lgica necesaria para llevar a cabo la planicacin de trabajos se trata de una lgica muy bsica. Por esta razn se opt por incorporar a Maui para este propsito. Maui presenta un algoritmo de planicacin con diversas caractersticas y conguraciones que permiten mejorar la performance del cluster y adems brinda la posibilidad de implementar un algoritmo de planicacin desarrollado a medida. Para el monitoreo del sistema se decidi utilizar la herramienta Ganglia. Ganglia ya era utilizado como herramienta de monitoreo por el grupo CeCal y luego de evaluar sus funcionalidades se opt por continuar con su utilizacin debido su excelente desempeo, su bajo consumo de recursos y sus reportes en tiempo real e histricos del uso del cluster.

4.2. Desarrollo de la interfaz de acceso remoto


A continuacin se detallar el componente de acceso remoto del sistema Fenton. Un requerimiento importante del sistema es brindar una interfaz de usuario simple y de fcil acceso para usuarios no especializados. Por esta razn, y para evitar problemas con la posible heterogeneidad de los sistemas clientes, se decidi brindar una interfaz de usuario de tipo web para el acceso remoto al cluster. El desarrollo del componente de acceso web requiri la denicin de varias herramientas: un servidor web para alojar la aplicacin, un lenguaje serverside para implementar la lgica y un manejador de bases de datos relacionales

4 PBS es un DRM que fue desarrollado a mediados los aos '90 para manejar recursos de computo aeroespacial en la NASA.

4.2 Desarrollo de la interfaz de acceso remoto

Pgina 47

para almacenar usuarios, trabajos y resultados de ejecuciones. La utilizacin de TORQUE y Maui para el manejo de recursos y la planicacin de trabajos del cluster nos condiciona a trabajar sobre un sistema operativo GNU/Linux o Unix-BSD. Por esta razn se decidi utilizar Apache como servidor web de la interfaz de usuario. Teniendo en cuenta los conocimientos previos de los integrantes del grupo y la curva de aprendizaje de los diferentes lenguajes para desarrollar aplicaciones web, se decidi utilizar PHP como lenguaje de implementacin. El servidor web Apache brinda un excelente soporte para la ejecucin de cdigo PHP por lo que resultan una pareja ideal. Como entorno de desarrollo para la implementacin de la lgica en cdigo PHP necesaria se utiliz Eclipse con el plugin PHPEclipse. Para el almacenamiento de datos se consideraron dos motores de base de datos relacional: PostgreSQL y MySQL. Finalmente se seleccion trabajar con PostgreSQL, pero igualmente ambos cumplen los requerimientos del proyecto. PostgreSQL es un motor de base de datos relacional de tipo empresarial, maduro, con buena integracin con PHP y un muy buen soporte por parte de la comunidad. Si bien PostgreSQL no es tan amigable ni tan popular como MySQL, cuenta con una licencia de tipo BSD mucho ms exible y permisiva que la licencia utilizada por MySQL. A la hora de la implementacin se realiz una clara separacin entre la capa de presentacin y la capa con la lgica de negocios desacoplando la presentacin de la informacin con el comportamiento de la aplicacin. El acceso a datos se encapsul en un mdulo especco, esto redund en una ventaja para el producto: para utilizar otro manejador de base de datos relacional de condiciones similares solamente es necesario reimplementar el mdulo y repetir la etapa de vericacin. La apariencia del sitio tambin poda variar durante la implementacin, por lo tanto adems de separar la lgica de la aplicacin de la capa de presentacin, esta ltima se dividi por un lado en scripts PHP que reciben los pedidos del usuario y actan en consecuencia, y por otro lado en archivos HTML y CSS encargados de denir los componentes visuales de la interfaz. Para esto se utilizaron plantillas que son cargadas en cada script PHP para luego ser desplegadas en pantalla. En denitiva se obtuvo una versin moderada del patrn Model-View-Controller (MVC). Si en algn momento se desea redisear el sitio manteniendo el mismo funcionamiento solamente es necesario modicar las hojas de estilos (CSS) y las plantillas en formato HTML .

5 Realmente estas plantillas no son HTML puro ya que cuentan con etiquetas especiales que determinan la posicin del contenido dinmico en la pgina.

4.2 Desarrollo de la interfaz de acceso remoto

Pgina 48

Figura 13: Diagrama de interaccin. Se separaron en mdulos distintos las interfaces con TORQUE, Maui y el sistema operativo. Las interfaces con TORQUE y Maui brindan al usuario administrador informacin sobre el estado del sistema y permiten que este realice acciones sobre los trabajos (e.g., iniciar, detener, etc.). La interfaz con el sistema operativo es utilizada para almacenar los trabajos con el cdigo fuente, archivos binarios, ejecutables y los archivos conteniendo los resultados de los trabajos ejecutados por los usuarios. La aplicacin permite un manejo de usuarios con perles diferenciados. Se realiz una clara separacin entre usuarios administradores y usuarios normales, pero es posible ejercer diferencias ms sutiles entre ellos. Se dise un sistema de grupos de usuarios con funcionalidades asociadas, cada usuario puede pertenecer a uno o ms grupos, y estos a su vez pueden tener funcionalidades y trabajos asociados. Un usuario determinado puede hacer uso de una funcionalidad dada si pertenece a algn grupo que se lo permita, mientras que puede acceder a un trabajo determinado si pertenece a algn grupo con acceso al mismo. La interfaz de usuario vara notablemente dependiendo si el usuario es un usuario administrador o un usuario normal. Si bien ambos usuarios tienen cierto conocimiento sobre el uso de aplicaciones, el usuario normal no tiene por qu

4.2 Desarrollo de la interfaz de acceso remoto

Pgina 49

Figura 14: Diagrama de dependencias.

4.3 Otras herramientas

Pgina 50

estar interiorizado con el funcionamiento del cluster, por lo tanto se le presenta el sistema como un todo. Por otro lado el usuario administrador podr desde su propia interfaz administrar los recursos del cluster, conocer el estado de los nodos del cluster e interactuar con ellos para solucionar posibles problemas o mejorar su performance. El usuario administrador tendr a su cargo la tarea de mantener los usuarios y grupos del sistema as como el acceso de los mismos a los distintos trabajos. Dado que se trata de un ambiente multiusuario, la aplicacin permite administrar las reservas del cluster para organizar la utilizacin de recursos por parte de varios usuarios de forma simultnea. Cada trabajo creado tendr asociado un conjunto de recursos disponibles que determinarn el posterior funcionamiento de las ejecuciones de los trabajos por parte de los usuarios. Para esta implementacin se restringi el uso de espacio de almacenamiento en el disco duro, tiempo mximo de ejecucin y cantidad de nodos disponibles simultneamente, pero es posible agregar otros recursos a restringir (e.g, memoria, ciclos de procesador, etc.). El usuario tendr la posibilidad de subir un proyecto al cluster, compilarlo, ejecutarlo y consultar la salida a pantalla en tiempo real. Dados los extensos tiempos de ejecucin de los programas que se corren en clusters de estas caractersticas, el usuario puede abandonar el sitio para luego volver en otro momento y vericar el estado de la ejecucin. Si el programa contina en ejecucin podr ver la salida a pantalla (nuevamente en tiempo real) junto con las salidas anteriores de la misma ejecucin. Para los trabajos terminados existe la posibilidad de ver la salida en pantalla o descargarla en un archivo. Los usuarios administradores cuentan con un conjunto de reportes estadsticos sobre los recursos del cluster. Es posible consultar el porcentaje total de carga de CPU y memoria, los tiempos de procesamiento por usuario y por proceso, etc. La generacin de los reportes estadsticos se realiza con informacin brindada por TORQUE, Maui y Ganglia; es posible detallar la informacin por nodo del cluster, usuario o proceso. Por ltimo, se deni un mecanismo de alertas a los usuarios que permite enviar alertas a los diferentes usuarios del sistema, como ser inicio y nalizacin de trabajos, excesos de recursos del cluster, etc. Este mecanismo es totalmente extensible en cuanto a las deniciones de alertas y es soportado por funcionalidades de TORQUE y la base de datos. Un usuario puede observar las alertas que le fueron enviadas por Fenton en la interfaz web y se encuentra disponible la posibilidad de enviar las alertas por correo electrnico mediante un servidor SMTP. Este sistema de alertas debe ser disparado peridicamente por el sistema operativo (e.g., en GNU/Linux mediante el utilitario cron o anacron).

4.3. Otras herramientas


En el transcurso del proyecto fueron necesarias otras herramientas para algunas tareas especcas. Fue necesario contar con una herramienta colaborativa que permitiera compartir y versionar tanto el cdigo como los documentos. Para esto se utiliz Google Code, un servicio de Google que brinda alojamiento a

4.4 Vericacin de la solucin

Pgina 51

proyectos de software. Algunas de las funcionalidades que ofrece Google Code son: control de versiones utilizando Subversion, un manejador de incidencias, una Wiki, etctera. Subversion (tambin conocido como SVN) es un software de control de versiones diseado especcamente para reemplazar al popular Concurrent Versioning System (CVS). Los sistemas de control de versiones mantienen un seguimiento de los cambios realizados al cdigo fuente de un proyecto y permiten la colaboracin de varios desarrolladores. Dick Grune desarroll CVS en 1984 y fue liberado bajo una licencia pblica general GNU ganando mucha popularidad entre los proyectos open source. Lamentablemente CVS posee muchas deciencias, por esta razn CollabNet Inc. comenz en el ao 2000 con el desarrollo de Subversion. Subversion fue liberado bajo una licencia Apache por lo que es considerado software libre y desde entonces se ha vuelto muy popular en la comunidad open source y en ambientes corporativos. Para la documentacin del proyecto se utiliz L YX, un programa grco que AT X. L X hereda todas las capacidades de permite la edicin de texto usando L E Y AT X (notacin cientca, edicin de ecuaciones, creacin de ndices, etctera) L E

AT X. y por supuesto mantiene el enfoque WYSIWYM de L E

4.4. Vericacin de la solucin


Una de las actividades del proyecto fue la vericacin de las tecnologas propuestas y de la interfaz web desarrollada. Los objetivos de esta etapa son la vericacin y validacin de los requerimientos funcionales establecidos en etapas ms tempranas y que forman parte de los objetivos del proyecto. Durante el proceso de vericacin se aplicaron dos tipos de test, se realiz un test funcional complementado por un test exploratorio. El test funcional verica el cumplimiento de los requerimientos funcionales contra los casos de test, en un entorno que emula un ambiente de produccin del sistema. El objetivo de este test es vericar si el comportamiento observado del software a prueba coincide o no con sus especicaciones. El test exploratorio es un proceso simultneo de exploracin y aprendizaje del producto, diseo y ejecucin de pruebas. La estrategia en este caso fue recorrer las funcionalidades de la interfaz en busca de defectos de diseo, de programacin, de funcionamiento, etc. Durante el test exploratorio se generaron una serie de casos de test que apuntan a cubrir los requerimientos funcionales principales del sistema. Estos casos de test se incluyeron en la Gua de Test (ver pgina 59), pretendiendo guiar la vericacin en posteriores ocasiones. El mismo incluye casos de test y escenarios de pruebas que integran los casos de test, as como una descripcin del proceso ejecutado en cada caso. Las herramientas utilizadas en la vericacin fueron la gua de test y las funcionalidades provistas por el Google Code como son registro de incidencias y Wiki.

Pgina 52

5.

Puesta en produccin
Finalizada la descripcin del trabajo realizado, en esta seccin se presenta-

rn las instalaciones y puestas en produccin que se han realizado del sistema Fenton. Se describirn las caractersticas de hardware y software de los clusters de computadores de alto desempeo en los que fue instalado Fenton. Por ltimo se especicar el proceso que se sigui durante la instalacin del sistema.

5.1. Cluster de computadores del CeCal


Como primer caso se presentar el cluster de computadores de alto desempeo con el que cuenta el CeCal dentro del InCo. Este cluster es utilizado internamente por los integrantes del grupo de Computacin de Alta Performance del CeCal como ambiente de investigacin y desarrollo. Se trata de un cluster homogneo que cuenta con cuatro nodos:

lennon.fing.edu.uy, marley.fing.edu.uy, hendrix.fing.edu.uy y joplin.fing.edu.uy. Cada nodo cuenta con un procesador AMD Athlon
tran conectados entre si mediante una red Ethernet de 100 Mbps.

64

3000+, 1 GB de memoria RAM, sistema operativo openSUSE 10.1 y se encuen-

Figura 15: Cluster de computadores del CeCal.

En el marco del proyecto se realiz una primera instalacin de Fenton en este cluster. Inicialmente se utiliz para realizar una validacin de las tecnologas elegidas en un ambiente controlado pero a medida que el proyecto fue madurando y se fueron cumpliendo etapas de su desarrollo se realizaron actualizaciones del software instalado en el cluster.

5.1 Cluster de computadores del CeCal

Pgina 53

A continuacin describiremos con mayor detalle la evolucin del cluster del CeCal.

Primer hito.
se utiliz a

En esta primera etapa se instalaron solamente TORQUE y

Maui ya que el cluster contaba previamente con algunas bibliotecas para el desarrollo de aplicaciones paralelas como MPICH y PVM. Como nodo maestro

lennon.fing.edu.uy,

en este nodo se instal Maui y se instalaron

el servidor y el demonio de ejecucin de TORQUE. De esta manera el nodo

lennon.fing.edu.uy

podr ser utilizado como nodo maestro y como nodo de

cmputo, en cambio en el resto de los nodos se instal solamente el demonio de ejecucin de TORQUE ya que solo se utilizarn como nodo de cmputo.

Segundo hito.

A medida que el sistema fue evolucionando se instalaron otras

aplicaciones y para cuando el sistema lleg al siguiente hito se realiz una actualizacin del cluster y se instalaron PHP y PostgreSQL. Nuevamente PostgreSQL se instal solamente en instalar PHP en todos los nodos del cluster, el nodo

lennon.fing.edu.uy y si bien fue necesario lennon.fing.edu.uy es

quien brinda el servicio de interfaz web. El resto de los nodos solamente requieren PHP para ejecutar scripts de noticacin de inicio y nalizacin de trabajos que son manejados internamente por el sistema.

Tercer hito.

Durante la iteracin nal de desarrollo se actualiz una vez ms

el cluster con la ltima versin del sistema y se instal adems Ganglia. Ganglia cuenta con dos componentes: un demonio encargado de recolectar informacin del estado de los nodos del cluster y un demonio encargado de monitorear un nodo individual y enviar informacin al demonio de recoleccin. Adems Ganglia cuenta con una interfaz web en donde se puede consultar la informacin recogida por el servicio de recoleccin. En el nodo

lennon.fing.edu.uy

del cluster se

instalaron: la interfaz web, el servicio de recoleccin y el servicio de monitoreo. En el resto de los nodos se instalaron solamente demonios de monitoreo. Finalmente como ltimo paso del tercer hito, se instal la biblioteca OpenMPI para brindar mayor exibilidad a la hora del desarrollo de aplicaciones paralelas. Con esta distribucin de los servicios en el cluster el nodo maestro acta como front-end permitiendo que el resto de los nodos puedan ser privados e invisibles al usuario del cluster. Adems debido a los reducidos requerimientos de software de los nodos de cmputo resulta relativamente simple agregar o quitar nodos del cluster. Actualmente el cluster cuenta con la versin nal de Fenton y se encuentra disponible para su utilizacin en produccin. La interfaz web del sistema Fenton se encuentra disponible desde dentro del InCo en

uy/pgccadar.

http://lennon.fing.edu.

5.2 Cluster de computadores Medusa

Pgina 54

Figura 16: Acceso al sistema Fenton.

Figura 17: Estado del sistema Fenton.

5.2. Cluster de computadores Medusa


El cluster de computadores de alto desempeo Medusa fue la motivacin inicial del proyecto. Este cluster es mantenido en conjunto por el IMFIA y el CeCal, con el apoyo nanciero del Programa de Desarrollo Tecnolgico. El cluster fue construido en el ao 2006 y est constituido por seis servidores modelo Sun Fire X2100 x64 interconectados entre si mediante una red Ethernet. Cada nodo Sun Fire X2100 x64 posee un procesador AMD Opteron doble ncleo modelo 175, cada uno de estos ncleos trabaja a 2.2 GHz y tiene 1 MB de cache nivel 2. Adems cada nodo cuenta con una memoria de 2 GB ECC PC3200 DDR-400, un disco de 80 GB de capacidad y 7.200 RPM SATA y dos interfaces de red Ethernet 10/100/1000. El nodo utilizado como maestro cuenta

5.2 Cluster de computadores Medusa

Pgina 55

adems con un disco duro SATA 2 adicional con una capacidad de 250 GB. Todos los nodos utilizan GNU/Linux Fedora Core 5 x86 SMP como sistema operativo. Medusa fue implementado en el marco del proyecto "Laboratorio de simulacin numrica de ujos a supercie libre" y algunas de las aplicaciones para las cuales se ha utilizado el cluster son: la ejecucin de simulaciones para el desarrollo de puentes, barcazas, prevencin de efectos ambientales no deseables por buques de gran calado, etc. Se realiz la instalacin del sistema Fenton en el cluster Medusa. Para esto se incorpor un nuevo nodo (medusa10) al cluster que desempear el papel de nodo maestro. En este nodo se instal el sistema Fenton en su totalidad, pero an se encuentra pendiente la instalacin del sistema en los restantes nodos del cluster.

Pgina 56

6.

Conclusiones
La computacin de alto rendimiento es fundamental para la resolucin de

problemas con un alto grado de complejidad computacional, estos problemas provienen de disciplinas como matemtica, fsica o qumica y no se encuentran necesariamente relacionados con la informtica. Muchos de los usuarios de clusters de computadores de alto rendimiento no poseen una formacin en informtica y su uso les presenta una importante dicultad tcnica. En el primer captulo de ste documento se describen como objetivos principales del proyecto de grado la construccin de un cluster de computadores de alto rendimiento y la necesidad de facilitar el acceso al mismo a usuarios no especializados en informtica. Durante su desarrollo, ste proyecto de grado permiti explorar a fondo la problemtica de la computacin de alto rendimiento mediante etapas de aprendizaje e investigacin de tecnologas. Como parte del aprendizaje los estudiantes cursaron la materia 'Computacin de Alta Performance' dictada por el grupo CeCal del Instituto de Computacin de la Facultad de Ingeniera. Esta materia introdujo a los estudiantes a los conceptos principales de la computacin de alto rendimiento y a la programacin paralela y distribuida. Por otro lado se realiz en el proyecto de grado una etapa de investigacin de tecnologas que result muy importante y positiva para el desarrollo del proyecto. En esta etapa se investigaron las herramientas de cdigo abierto para la implementacin de clusters de computadores; sus caractersticas, sus funcionalidades y sus limitaciones. Una de las primeras aplicaciones investigadas fue Condor, un sistema diseado fundamentalmente para High-Throughput Computing (HTC) pero que puede adaptarse a los requerimientos planteados en el proyecto de grado. Condor brinda funcionalidades interesantes como migracin de procesos entre nodos y la capacidad de aprovechar ciclos ociosos de procesador (CPU Harvesting). Sin embargo Condor ofrece un soporte muy bsico a las bibliotecas PVM y MPI para programacin distribuida. Otra aplicacin investigada fue Sun Grid Engine, un software para administracin de recursos distribuidos actualmente desarrollado por Sun Microsystems. Sun Grid Engine provee las funcionalidades requeridas para el proyecto de grado, pero presenta como desventaja ser un nico gran paquete indivisible y muy complejo, lo cual hace muy difcil cualquier tipo de adaptacin o modicacin a su funcionamiento. Por ltimo se investig TORQUE, un software para administracin de recursos distribuidos con funcionalidades muy similares a las presentadas por Sun Grid Engine desarrollado por Cluster Resources Inc. A diferencia de Sun Grid Engine, TORQUE es un software de reducidas dimensiones enfocado especcamente en la administracin de recursos que no contiene la lgica necesaria para la planicacin de la ejecucin de trabajos en un cluster de computadores. Cluster Resources Inc. desarrolla tambin Maui, un software especializado en la planicacin y despacho de trabajos en clusters de computadores que resulta la pareja ideal para TORQUE. TORQUE y Maui brindan adems un excelente soporte de forma integrada a la biblioteca MPI para programacin paralela y distribuida. TORQUE junto con Maui proveen las funcionalidades requeridas para el proyecto de grado y

Pgina 57

adems presentan un bajo consumo de memoria, caracterstica que resulta muy importante en clusters pequeos. Como se detall en el cuarto captulo de este documento, TORQUE y Maui fueron las herramientas seleccionadas para la administracin de recursos y despacho de trabajos en el cluster. TORQUE y Maui permitieron construir una slida plataforma de ejecucin de trabajos, y fue a partir de esta plataforma que se desarroll una interfaz web para el acceso remoto al sistema. sta interfaz web de acceso al sistema permite una utilizacin amigable del cluster por parte de usuarios no especializados, adems permite a usuarios tcnicos la administracin de los recursos del cluster, la administracin de la seguridad del cluster y ofrece un conjunto de reportes histricos y en tiempo real sobre el uso de los recursos en el cluster. Para la generacin de estos reportes se integr la interfaz web del sistema con Ganglia, un sistema de monitoreo escalable y distribuido para sistemas de alto rendimiento. Podemos decir que el resultado de ste proyecto de grado fue muy positivo y los objetivos mencionados en el primer captulo del documento se alcanzaron en buena forma. Esto permite que hoy en da el sistema Fenton se encuentre en produccin y listo para su utilizacin.

Pgina 58

7.

Trabajo futuro
Como se mencion en la seccin anterior este proyecto deja planteados algu-

nos trabajos a futuro. A continuacin se enumerarn los trabajos ms relevantes a implementar y/o investigar pero que dados los tiempos del proyecto no fueron incorporados a la solucin desarrollada. Integracin de Gold con el sistema para permitir contabilizar los recursos disponibles en el cluster y limitar los recursos utilizados cada usuario. Aumentar la caractersticas y opciones de monitoreo para chequeo preventivo (hoy en da solo se chequea espacio en disco). Trabajar en la integracin de biblioteca PVM al sistema. Profundizar en el ne-tunning de TORQUE y Maui para obtener un desempeo ptimo del cluster. Mejorar la integracin del sistema con Ganglia para utilizar ms de las funciones que provee. Mejorar los reportes de los usuarios administradores para el anlisis del uso del sistema y de los datos histricos que son provistos por TORQUE y Maui. Continuar con la instalacin del sistema Fenton en el cluster Medusa (ver pgina 54). Incorporar el uso de un addon de Ganglia llamado Job Monach. Este addon permite a Ganglia comunicarse con TORQUE y recopilar informacin sobre nodos, trabajos y colas de ejecucin disponibles. Ganglia genera grcas y mantiene un historial con la informacin recopilada de TORQUE al igual que con el resto de las mtricas que maneja. Modicar la comunicacin entre el sistema Fenton y TORQUE para utilizar la API DRMAA. TORQUE brinda una implementacin en lenguaje C del estndar DRMAA disponible para el usuario programador. Si bien esta es una posibilidad, otra opcin ms accesible podra ser la utilizacin de la biblioteca pbs_python. Esta biblioteca encapsula la biblioteca implementada en C de TORQUE y permite una comunicacin ms simple con TORQUE utilizando Python.

Pgina 59

A.

Documentos anexos

Glosario
Este documento contiene un conjunto de deniciones y abreviaturas pertinentes a las reas de estudio relacionadas con el proyecto. Con este documento se busca proporcionar el entendimiento adecuado de estas terminologas. Ver documento

PGCCADAR-Glosario.

Manual de instalacin
Este documento sirve como gua de instalacin de las tecnologas propuestas en el proyecto, instalacin de la interfaz de acceso remoto desarrollada y creacin del ambiente de trabajo inicial del sistema. Ver documento

PGCCADAR-GuiaDeTest.

Manual de usuario y administrador


Estos documentos presentan y describen la utilizacin del sitio Web desarrollado. El primer manual se encuentra dirigido a las actividades de los usuariosadministradores y se encuentra enfocado a las funcionalidades de monitoreo y control. El segundo manual se encuentra dirigido a los usuarios-clientes y cubre funcionalidades como la ejecucin de trabajos en el sistema, la obtencin de resultados de una ejecucin, etc. Ver documentos y

PGCCADAR-ManualDeAdministrador.

PGCCADAR-ManualDeUsuario

Gua de testeo
Este documento es una gua para el testeo del cluster. La misma contiene casos de test, escenarios de integracin de los mismos y una descripcin de como realizar este proceso. Ver documento

PGCCADAR-ManualDeInstalacion.

REFERENCIAS
Referencias

Pgina 60

[1] B. Radic y E. Imamagic. Benchmarking the Performance of JMS on Computer Clusters. Presentado en CARNet Users' Conference, 2004. Disponible en lnea en

http://www.srce.hr/dokumenti/crogrid/radovi/ Benchmarking_the_Performance_of_JMS_on_Computer_Cluster.pdf.
[2] E. Imamagic, B. Radic y D. Dobrenic. Job Management Systems Analysis. Presentado en CARNet Users' Conference, 2004. Disponible en lnea en

http://www.srce.hr/dokumenti/crogrid/radovi/Job_Management_ Systems_Analysis.pdf.
[3] Maui, Cluster Resources. Maui Cluster Scheduler manual. Disponible en lnea en

http://www.clusterresources.com/products/maui/.
Cluster Resources. TORQUE Resource

Consulta-

do Julio de 2007. [4] TORQUE, Manager manual.

Disponible en lnea en

torque/.

http://www.clusterresources.com/products/

Consultado Julio de 2007.

[5] William Gropp, Ewing Lusk y Thomas Sterling. Beowulf Cluster Computing with Linux, Second Edition. Publicado por MIT, 2003. [6] Joseph D. Sloan. High Performance Linux Clusters with OSCAR, Rocks, OpenMosix, and MPI. Publicado por O'Reilly, 2004. [7] M. Michels y W. Borremans. Clustering with openMosix. University of

http://staff.science.uva.nl/ ~delaat/snb-2004-2005/p20/report.pdf. Consultado en Junio de 2007.


Amsterdam, 2005. Disponible en lnea en tation. Disponible en lnea en tado en Febrero de 2008.

[8] Dansk Center for Scientic Computing. CSC's Super Computer documen-

http://www.dcsc.sdu.dk/doc.php. Consul-

[9] Stony Brook University. Seawulf Cluster tutorials. Disponible en lnea en

http://www.sunysb.edu/seawulfcluster/tutorials.shtml. Consul-

tado en Febrero de 2008. [10] University of Heidelberg. Helics Cluster documentation. Disponible en lnea en

http://helics.uni-hd.de/doc/.

Consultado en Febrero de 2008.

[11] University of Glasgow. Glasgow computer cluster guide. Disponible en lnea en

http://www.gla.ac.uk/services/it/whatwedo/computecluster/ userguide/. Consultado en Febrero de 2008.


tion API Specication Documents. Disponibles en lnea en Consultado en Junio de 2007.

[12] DRMAA, Open Grid Forum. Distributed Resource Management Applica-

drmaa.org/documents.php.

http://www.

REFERENCIAS

Pgina 61

[13] Sergio Nesmachnow. Algoritmos genticos paralelos y su aplicacin al diseo de redes de comunicaciones conables. Facultad de Ingeniera, Universidad de la Repblica, Uruguay, 2004. Disponible en lnea en

//www.fing.edu.uy/~sergion/Tesis.pdf.

http:

[14] Pablo Ezzatti. Mejora del desempeo de modelos numricos del Ro de la Plata. Facultad de Ingeniera, Universidad de la Repblica, Uruguay, 2006.

http://www.fing.edu.uy/inco/grupos/cecal/ hpc/mej_des/tesis.pdf.
Disponible en lnea en

[15] Cristian Perfumo, Gerardo Mora y Lucas Rojas. Algoritmos genticos paralelos aplicados a la resolucin de problemas de asignacin de frecuencias en redes celulares. Universidad Nacional de la Patagonia, Argentina, 2006. Dis-

http://www.fing.edu.uy/inco/grupos/cecal/hpc/ AG_MIFAP/AG_MIFAP.pdf.
ponible en lnea en timizacin multiobjetivo NSGA-II y su aplicacin al diseo de redes de comunicaciones conables. Facultad de Ingeniera, Universidad de la Repblica, Uruguay, 2003. Disponible en lnea en

[16] Sergio Nesmachnow. Una versin paralela del algoritmo evolutivo para op-

~sergion/MOEA/PNSGAII.pdf.

http://www.fing.edu.uy/

[17] Sebastin Baa, Gonzalo Ferres y Nicols Pepe. Proyecto MPI.net. Facultad de Ingeniera, Universidad de la Repblica, Uruguay, 2003. Disponible en lnea en

http://www.fing.edu.uy/~sergion/mpinet/.

[18] Federico Dominioni y Pablo Musso. Proyecto algoritmos genticos incrementales. Facultad de Ingeniera, Universidad de la Repblica, Uruguay, 2003. Disponible en lnea en

http://www.fing.edu.uy/~sergion/agi/.

[19] R. Baron y L. Higbie. Computer Architecture. Publicado por Addison Wesley, 1992. [20] M. De Balsi. Computer Architecture. Publicado por Addison Wesley, 1990. [21] I. Foster. Designing and Building Parallel Programs. Publicado por Addison Wesley, 1995. Disponible en lnea Consultado en Agosto de 2007. [22] Apache, The Apache Software Foundation. Documentacin del Servidor HTTP Apache 2.0. Disponible en lnea

http://www-unix.mcs.anl.gov/dbpp/.

2.0/.
lnea

http://httpd.apache.org/docs/
Conguration. Disponible

Consultado en Junio de 2007. Ganglia 3.0 Installation and en

[23] Ganglia.

http://sourceforge.net/docman/display_doc.php?docid= 128915&group_id=43021. Consultado en Junio de 2007.


en

[24] PostgreSQL, The PostgreSQL Global Development Group. PostgreSQL

docs/8.2/interactive/index.html.

8.2 Documentation. Disponible en lnea en

http://www.postgresql.org/

Consultado en Julio de 2007.

REFERENCIAS

Pgina 62

[25] MySQL, Sun Microsystems. Documentacin tcnica. Disponible en lnea en

http://www.mysql.com/.
sultado en Julio de 2007.

Consultado en Julio de 2007.

[26] PHP, The PHP Group. Disponible en lnea en

http://www.php.net/. Conhttps:// https://

[27] Job Monarch. Documentacin tcnica. Disponible en lnea en

subtrac.sara.nl/oss/jobmonarch/. subtrac.sara.nl/oss/pbs_python/.

Consultado en Setiembre de 2007.

[28] PBS Python. Documentacin tcnica. Disponible en lnea en

Consultado en Setiembre de 2007.

Vous aimerez peut-être aussi