Академический Документы
Профессиональный Документы
Культура Документы
ESCUELA DE INFORMATICA
Implementaci
on de un cl
uster
Beowoulf usando Mosix
Autores:
a
Yolanda Aucapin
rdenas
Juan Diego Ca
Andres Garca
Luis Lazo Pablo Sinchi
January 5, 2017
Docente:
squez
Angel
Va
Abstract
Existen ciertas aplicaciones que demandan grandes cantidades de
recursos para su ejecuci
on; una solucion viable en este caso es la implementaci
on de un cl
uster, para lo cual se requiere analizar la tecnologa y lenguajes de programacion necesarios para su correcta implementaci
on. Existen diferentes tipos de cl
usters, en este caso se considera el Beowulf que permite la implementacion en base a computadores
sencillos de caractersticas heterogeneas interconectados mediante una
red. El software a utilizar para la gestion y control del cl
uster es Mosix
que es una extensi
on del kernel Linux y varias libreras de apoyo como
Parallel Python. Las pruebas de rendimiento seran realizadas mediante un algoritmo que eval
ua una integral definida y el renderizado de
im
agenes utilizando la aplicacion Blender.
Introducci
on
Actualmente en diversas areas como la investigacion se hace uso de aplicaciones complejas, las cuales requieren grandes cantidades de recursos computacionales (CPU, memoria, etc.) para ser ejecutadas de manera adecuada
y obtener un resultado en un tiempo aceptable.
Para hacer frente a este tipo de aplicaciones, la tecnologa de cl
uster
permite integrar recursos de diversos computadores, que una vez integrados
se comportan como si se tratara de un solo computador de altas capacidades.
Cuando se requiere ejecutar una aplicacion, este sera dividida en tareas hacia
todos los computadores que conforman el cl
uster, de esta manera el tiempo
requerido para obtener una respuesta se reduce.
Las aplicaciones a ejecutar dependen del lenguaje de programacion y la
tecnologa empleada en el cl
uster; en algunos casos como MPI (Interfaz de
paso de mensajes) se requiere que la distribucion hacia los computadores
integrados al cluster sea programada dentro de la aplicacion; por otra parte
se puede permitir el acceso directo a recursos ubicados en diferentes zonas
geograficas y tener nodos dedicados a una tarea especfica como se realiza en
Grid Computing.
En el presente trabajo se hace uso del software Mosix, el cual es una
extension del Kernel Linux para formar un cl
uster mediante una red LAN
y medir su rendimiento en ejecuciones en serie y en paralelo, tanto con una
aplicacion de desarrollo propio, como una aplicacion existente en la web.
1
Cl
usters
2.1
Cl
usters
En terminos generales un cl
uster es cualquier conjunto de elementos independientes integrados mediante alg
un medio, para coordinar un comportamiento
cooperativo, al igual que en los sistemas biologicos. Los cl
usters estan conectados entre s mediante un tipo de red, programadas para soportar acceso
concurrente, y para compartir recursos en tareas determinadas o trabajos
pesados, donde se requiere mayor capacidad y se puede aprovechar la integracion de m
ultiples CPUs, trabajando sobre la misma tarea [1].
2.1.1
Componentes generales
1. Nodos: Son cada una de las maquinas que se encuentran interconectadas para formar el cl
uster.
2. Almacenamiento: El sistema de almacenamiento requerido puede ser
interno o externo y hacer uso de diversas tecnologas.
3. Sistema operativo: Debe soportar multiprocesamiento y facilitar la
administracion por parte del usuario.
4. Conexi
on de red: Se requiere que los nodos puedan comunicarse
entre si, esto se logra mediante conexiones de red.
5. Middleware: Es software que hace posible la comunicacion entre aplicaciones, hardware y otros sistemas operativos.
6. Ambiente de programaci
on paralela: Permiten hacer uso de los
diferentes recursos con los que se cuenta dentro del cl
uster.
2.1.2
Clasificaci
on
Los cl
uster pueden clasificarse en base a sus caractersticas en:
HPCC (High Performance Computing Clusters): Son clusters
de alto rendimiento que poseen grandes capacidades de procesamiento
y memoria.
HACC (High Availability Computing Clusters): Un cluster de
alta disponibilidad brinda alta tolerancia a fallos, lo cual deriva en una
confiabilidad permanente.
HPCC (High Througput Computing Clusters): Tienen la eficiencia como principal premisa, en este caso el rendimiento para un
objetivo especfico es primordial.
2.2
Cloud Computing
En este tipo de servicio el cliente usa las aplicaciones que contrata al proveedor. Dichas aplicaciones se encuentran alojadas en las infraestructuras cloud
del proveedor y el usuario no tendra ning
un control sobre ellas. Un ejemplo
de este tipo de servicio es Google Docs.
2.2.2
Al utilizar un servicio IaaS el usuario tendra mas control que en PaaS, pero
tendra que encargarse de la gestion de la infraestructura, es decir, el usuario
puede elegir que tipo de instancias desea usar (Linux o Windows), as como
la capacidad de memoria o procesador de cada una de las maquinas. El
hardware es transparente al usuario ya que se maneja utilizando maquinas
virtuales. Como ejemplos de IaaS se tienen: Amazon Web Service (AWS).
2.3
Grid Computing
2.4
An
alisis comparativo de las tecnologas
Cl
uster Beowulf
La familia de cl
usters Beowulf, son sistemas de computo paralelo que se
basan en ordenadores personales interconectados mediante una red como
Ethernet, con el fin de formar una maquina de grandes capacidades que
emula el comportamiento de un supercomputador de multiprocesamiento.
La tecnologa Beowulf fue soportada por la comunidad Linux, razon por
la cual existen casi en todas las distribuciones Linux, parches que permiten
crear este tipo de cl
uster como es el caso de Mosix.
3.1
Arquitectura
La arquitectura de un cl
uster Beowulf se basa en multicomputadores, de los
cuales uno es usado como nodo principal denominado Maestro y los demas
son llamados Esclavos, conectados mediante una red, dicha arquitectura
se describe en la figura 1.
Nodo maestro:
Debido a que el cl
uster se comporta como una
sola maquina, el nodo maestro se utiliza como una consola y es el que
controla todo el cl
uster.
Nodo esclavo: Ejecuta las tareas asignadas por el nodo maestro. El
hardware de este tipo de nodos es simple, ya que no es necesario que
tengan teclado, mouse, ni monitor, inclusive pueden ser configurados
sin disco duro, lo mnimo que se requiere es un procesador, memoria y
tarjeta de red.
Red: Se deben considerar componentes que proporcionen una velocidad adecuada.
Software: Beowulf utiliza como sistema operativo alguna de las distribuciones de linux, adicionalmente se requiere software que realice la
6
Figure 1: Arquitectura de un cl
uster Beowulf
3.1.1
Ventajas
Alta disponibilidad: En un cl
uster Beowulf si un nodo falla, el
cl
uster en general seguira funcionando, esto es posible ya que esta formado por muchos nodos de configuraciones similares.
Facilidad de configuraci
on: Una vez que un nodo ha sido correctamente configurado se puede hacer una imagen del sistema y ponerlo
en los otros nodos.
3.1.2
Desventajas
Programaci
on m
as difcil: Los programas a ejecutar deben ser
escritos especficamente para sistemas paralelos con la finalidad de
aprovechar los recursos del cl
uster. Si el codigo esta mal escrito puede
eliminar todas las ventajas.
Limitaci
on de la red:
la velocidad de la red.
La velocidad del cl
uster se ve limitada por
Lenguajes de programaci
on para computaci
on
en paralelo
3. Agregar una nueva capa de lenguaje paralelo sobre un lenguaje secuencial existente.
4. Definir totalmente un nuevo lenguaje paralelo as como su compilador.
A continuacion se presentan dos ejemplos de lenguajes que cumplen el
punto 3 antes mencionado:
1. CODE: Es un lenguaje visual, que permite transformar un programa
secuencial en paralelo. El programa paralelo es representado mediante
un grafo dirigido, donde los datos fluyen a traves de los arcos que
conectan los nodos. Los programas secuenciales pueden estar escritos
en cualquier lenguaje de programacion y CODE producira programas
paralelos para una gran variedad de arquitecturas.
2. LINDA: Es un lenguaje basado en C y Fortran por lo cual puede
combinarse con estos lenguajes. Linda implementa el paralelismo utilizando un peque
no n
umero de operaciones simples sobre memoria virtual compartida para crear y coordinar procesos paralelos asignando
una distribucion maestro/esclavo para el algoritmo.
Como ejemplos de lenguajes que cumplen con el punto 4, es decir definen
totalmente un nuevo lenguaje y compilador, se pueden mencionar:
1. Chapel (Cray): Es un lenguaje paralelo emergente cuyo objetivo es
hacer que la programacion paralela sea mas productiva y de acceso general. Ofrece soporte a estructuras de control tradicionales como if-else,
for-loop, do-while, etc, pero ademas establece soporte para estructuras
de control con paralelismo implcito.
2. X10: Es un lenguaje de programacion paralela orientado a objetos e
influenciado principalmente por Java por lo cual da soporte a todos sus
tipos basicos, para la sincronizacion de las fases de ejecucion se hace
uso de relojes que son una clase definida dentro de X10, estos alertan
cuando todas las actividades han terminado y se puede continuar a la
siguiente fase.
Un benchmark (comparador de rendimiento) es un conjunto de procedimientos que permiten evaluar el rendimiento de un ordenador. Una de las mejores
9
Dise
no
La arquitectura del cl
uster estara formada por un nodo maestro y tres nodos
esclavos, conectados mediante una red LAN.
Las caractersticas de cada uno de los nodos se describe en la tabla de la
figura 2
10
Configuraci
on
7.1
Mosix
Principales caractersticas
paz de operar como un sistema independiente y tomar sus propias decisiones de control; esta propiedad permite una configuracion dinamica,
donde los nodos pueden unirse o abandonar la red con interrupciones
mnimas [6].
7.1.2
Migraci
on de procesos
En Mosix cada uno de los procesos tiene un Unique Home Node (UHN) en el
cual fue creado [7]. Un proceso migrado a un nodo remoto utiliza los recursos
de este siempre que le sea posible, pero interact
ua con su entorno de usuario
mediante UHN.
Para implementar la migracion de procesos, el proceso a migrar es divido
en dos contextos:
1. Contexto de usuario (remote): Encapsula el proceso cuando este
se encuentra ejecutandose en el nivel de usuario. Contiene el codigo
del programa, datos y registros del proceso. Este contexto puede ser
migrado.
2. Contexto de sistema (deputy): Encapsula el proceso cuando se
ejecuta en el kernel. Contiene la descripcion de los recursos a los que
esta conectado el proceso, y la pila del kernel necesario para la ejecucion del codigo del sistema. Mientras el proceso puede ser migrado
entre diferentes nodos, el deputy nunca sera migrado, debido a su dependencia con el UHN.
En la figura 3 a la izquierda presenta un proceso regular en Linux, mientras que a la derecha el proceso es dividido y la parte remote es migrada a
otro nodo.
12
Ventajas
Desventajas
Instalaci
on y configuraci
on
Si la instalacion y configuracion ha sido realizada correctamente se obtiene una respuesta por cada nodo que haya establecido conexion (figura 5).
Ademas se muestran las direcciones IP de cada uno de los nodos que han
retornado una respuesta y el n
umero de procesadores disponibles en cada
uno de ellos.
7.2
7.2.1
Aplicaciones
Lenguaje de programaci
on
Recuperaci
on de resultados de los nodos: Los resultados de la
ejecucion de cada job o unidad de trabajo se almacena en variables.
La combinacion de estos elementos permite implementar un algoritmo
capaz de resolver las exigencias especficas de un problema dado. En este
caso particular, se ha implementado un algoritmo de calculo matematico
enfocado hacia dos formas de ejecucion: serie y paralelo.
7.2.2
Aplicaci
on desarrollada: C
alculo de una integral definida
7.2.3
7.3
7.3.1
Resultados y discusi
on
Evaluaci
on de la integral definida
Renderizado de im
agenes utilizando Blender
Ultima
imagen del rango de imagenes usadas para el render
N
umero de nodos en los que se va a ejecutar el renderizado
Con estos parametros se analiza el total de imagenes por nodo y realiza
la distribucion respectiva hacia los distintos nodos. En este caso se
generan 231 imagenes en formato .jpg.
19
20
21
22
23
Conclusiones
Mediante la ejecucion de la evaluacion de una integral definida tanto en
serie como en paralelo, se ha podido demostrar que cuando esta se realiza utilizando los nodos disponibles en el cl
uster existe una mejora considerable en el rendimiento, lo cual evidencia la utilidad de un cl
uster
para procesamiento de aplicaciones que requieren grandes cantidades
de recursos.
Mosix constituye una herramienta sumamente u
til a la hora de construir
una arquitectura de cl
uster ya que el programador no debe preocuparse
de distribuir las tareas entre los distintos nodos, sino que esta se realizara de forma automatica mediante la migracion de procesos entre
los nodos.
Al formar un cl
uster descentralizado Mosix ofrece una gran ventaja, ya
que permite que cada uno de los nodos sea maestro para los procesos
creados localmente y servidor para los procesos migrados. Ademas
puede brindar un gran aporte en centros de investigacion donde se
requiere ejecutar procesos que demandan altas cantidades de recursos.
En particular, resulta sumamente importante conocer las ventajas de
la utilizacion de la computacion distribuida con un cl
uster Beowulf
frente a una supercomputadora para la resolucion de problemas complejos, siendo las mas importantes el reducido costo de la infraestructura frente al elevado costo de una supercomputadora, y por otro lado
la facilidad de extender las capacidades del cl
uster conforme aumenta
la demanda del problema que se este tratando sin mayor dificultad, e
incluso permitiendo la adicion de nodos al cl
uster en caliente.
24
References
[1] T. Sterling, G. Bell, and K. B. Janusz, Beowulf cluster computing with
linux (scientific and engineering computation), 2001.
[2] A. Huth and J. Cebula, The basics of cloud computing (2011).
[3] I. Berstis, Redbooks paper, Fundamentals of Grid Computing, pp. 1
28, 2002.
[4] J. P. Caballero, L. Gutierrez, J. Echaiz, and J. R. Ardenghi, Mosix2: la
version grid de mosix para linux-2.6, in IX Workshop de Investigadores
en Ciencias de la Computacion, 2007.
[5] A. Barak and R. Wheeler, MOSIX: An integrated unix for multiprocessor
workstations. International Computer Science Institute, 1988.
[6] A. Barak, O. Laden, and Y. Yarom, The now mosix and its preemptive
process migration scheme, Bulletin of the IEEE Technical Committee on
Operating Systems and Application Environments, vol. 7, no. 2, pp. 511,
1995.
[7] M. R. Tera and S. Kota, Infrastructure for load balancing on mosix
cluster.
[8] A. Barak, O. Ladan, and A. Shiloh, Scalable cluster computing with
mosix for linux, Proc. 5-th Annual Linux Expo, vol. 100, 1999.
25