Sunteți pe pagina 1din 128

UNIVERSIDAD VERACRUZANA

Facultad de Contadura y Administracin Propuesta de implementacin de un clster de altas prestaciones

Tesina
Para obtener el Ttulo de:

Licenciado en Sistemas Computacionales Administrativos


Presenta:

Erick Samuel Gutirrez Rendn


Asesor: M.C. Rubn lvaro Gonzlez Bentez Cuerpo Acadmico: Tecnologas de la Informacin y las Organizaciones Inteligentes en la Sociedad del Conocimiento
Xalapa-Enrquez, Ver. Agosto 2010
1

Dedicatorias

NDICE
Pgina

Introduccin.6 Captulo 1
1. Computacin paralela y de altas prestaciones...............11 1.1. Arquitectura de computadoras....15 1.2. Computadoras paralelas..16 1.3. Modelos de cmputo en paralelo....22

Captulo 2
2. Teora de los clsteres...24 2.1. Antecedentes.25 2.2. Conceptos...30 2.3. Generalidades de los clsteres..35 2.4. Clasificacin de clsteres40 2.5. Ventajas y desventajas.46 2.6. Retos en la implementacin de un clster........47

Captulo 3
3. Arquitecturas y herramientas para Implementacin de un clster50 3.1. Modelos y arquitecturas....63 3.2. Software de paralelizacin...64 3.3. Estructura de un clster....73 4

3.4. Propuesta de implementacin de un clster....78 3.5. Propuesta de implementacin de un cluster tipo Beowulf106 4. Conclusin..119 5. Fuentes de informacin...122 6. ndice de tablas y figuras127

5 V

INTRODUCCION

Actualmente el proceso de globalizacin econmica ha llegado a todos los pases, obligando a las empresas y en general a todas las organizaciones que integran el sistema econmico y por lo tanto al aparato productivo, a disminuir costos y a ser ms eficientes con la finalidad de elevar la competitividad y ampliar la cobertura de sus servicios frente a sus competidores o atender eficazmente a la poblacin en el caso de que se trate de organizaciones pblicas o gubernamentales.

La misma globalizacin econmica trae consigo el avance y desarrollo de la tecnologa as como la transferencia de la misma entre pases (aunque esto ltimo se caracteriza por un rezago temporal), lo cual favorece la integracin poltica, cultural y econmica entre los pases as como fortalece la competencia entre empresas, quienes quieren innovar y ser lderes en su rea obteniendo mayores ganancia o asegurndose el mercado.

Mxico no es la excepcin y las empresas e instituciones buscan ser eficientes adoptando nuevas tecnologas como principal herramienta para lograr su objetivo, especialmente incorporan a su proceso productivo diversos sistemas

computacionales que les permiten mejorar su proceso o su producto, ms an, tratndose de sistemas computacionales administrativos tratan de elevar la calidad de su proceso mejorando el control de sus actividades y operaciones, desde el contacto con los proveedores hasta el servicio postventa, pasando por la planeacin, produccin, direccin y control propios de las organizaciones.

Uno de los sistemas computacionales administrativos que permiten reducir y/o eliminar problemas que limitan la competitividad de la empresa es el uso de la computacin paralela en las grandes empresas.

El presente trabajo recepcional, en la modalidad de tesina, tiene como objetivo general analizar el uso de la computacin paralela en las grandes empresas como una opcin para elevar la competitividad de las organizaciones a travs de la

implementacin de un sistema tipo clster que mejora la eficiencia y eficacia de los procesos, favoreciendo la reduccin de costos de tales organizaciones.

Como objetivos especficos se plantean: 1) Identificar los diferentes elementos que integran un sistema de computacin paralela; 2) Describir las ventajas del uso de estos sistemas, 3) Detectar los elementos necesarios para la implementacin de los clsteres y 4) Elaborar una propuesta de configuracin y puesta en marcha de un sistema de un sistema de computacin paralela, especficamente un clster de alto rendimiento en el centro de cmputo de la Facultad Contadura y Administracin la Universidad Veracruzana zona Xalapa, donde se imparte el programa de licenciatura en Sistemas Computacionales Administrativos.

Para el desarrollo del presente trabajo se realiz una exhaustiva revisin

de

literatura especializada en el tema publicada en libros y principalmente en pginas electrnicas, esto ltimo porque al ser un tema novedoso el principal medio por el que se difunde lo relacionado a los sistemas paralelos y avances recientes en computacin es el medio electrnico.

En el captulo uno se presenta las generalidades y especificaciones de la computacin paralela y de altas prestaciones, precisando su arquitectura y modelos.

En el captulo dos, se enfoca al marco terico, presentndose la teora de los clsteres, necesaria para desarrollar la implementacin de los clsteres, tema que se aborda en el captulo tres, donde adems se estudian temas como el software de paralelizacin, su implementacin, los tipos de software existentes y su configuracin, incluyendo la estructura de un clster. Tambin en el captulo tres, se presenta la propuesta de implementacin de un clster en el centro de cmputo de la Facultad Contadura y Administracin la Universidad Veracruzana zona Xalapa, donde se imparte el programa de licenciatura en Sistemas

Computacionales Administrativos.
8

Posteriormente se presentan las conclusiones y finalmente la bibliografa y pginas electrnicas consultadas, as como el ndice de tablas del documento.

CAPTULO 1: Computacin paralela y de altas prestaciones

10

1. Computacin paralela y de altas prestaciones


El Grupo de Investigacin de Altas Prestaciones y Paralelismo de la Universidad de Alicante menciona que las aplicaciones de la computacin de altas prestaciones y en concreto el paralelismo se extiende prcticamente a todos los mbitos donde la programacin se manifiesta como til. En la actualidad, la computacin paralela est siendo utilizada en multitud de campos para el desarrollo de aplicaciones y el estudio de problemas que requieren gran capacidad de cmputo, bien por el gran tamao de los problemas que abordan o por la necesidad de trabajar con problemas en tiempo real. De esta forma, el paralelismo en la actualidad, adems de constituir diversas lneas abiertas de intensa labor investigadora, puede encontrarse en infinidad de aplicaciones en campos muy variados, entre los que destacamos:

Modelado predictivo y simulacin: Se realiza mediante extensos experimentos de simulacin por computador que con frecuencia acarrean computaciones a gran escala para obtener la precisin y el tiempo de respuesta deseado. Entre estos modelados destacamos la previsin meteorolgica numrica y la oceanografa. El desarrollo industrial tambin reclama el uso de computadores para progresar en el diseo y automatizacin de proyectos de ingeniera, la inteligencia artificial y la deteccin remota de los recursos terrestres. En este campo destacamos: la inteligencia artificial y automatizacin (procesamiento de imgenes, reconocimiento de patrones, visin por computadora, comprensin del habla, deduccin automtica, robtica inteligente, sistemas expertos por computadoras, ingeniera del

conocimiento, etc.).

11

Investigacin mdica: En el rea mdica las computadoras rpidas son necesarias en tomografa asistida, diseo de corazones artificiales, diagnstico heptico, estimacin de daos cerebrales y estudios de ingeniera gentica.

La computacin paralela divide grandes problemas en partes ms pequeas, a estas divisiones del problema se le conocen como tareas o procesos, y se caracterizan por poder resolverse en forma paralela. Esta solucin surge como una respuesta de la arquitectura de computadoras a las crecientes demandas de potencia de cmputo de los usuarios. Tienen una influencia clave el bajo costo de los equipos y el gran desarrollo tecnolgico (Ley de Moore, plantea que el nmero de transistores de un chip se duplica cada dos aos).

Por otro lado cabe mencionar que es una forma eficaz de procesar la informacin y favorece la explotacin de sucesos concurrentes en el proceso de cmputo. Su objetivo principal es el aumentar el rendimiento de un equipo computacional. Las dos principales caractersticas de la computacin paralela son: Memoria compartida Paso de mensajes

Segn los modelos de cmputo existen dos tipos de paralelismo: Funcional.- Se refiere a tareas diferentes que se pueden realizar en paralelo, es inherente en todas las aplicaciones y generalmente tiene un grado de paralelismo bajo. De datos.- Se enfoca a que una misma tarea se ejecuta en paralelo sobre un conjunto de datos, se tiene replicas del mismo programa trabajando sobre partes distintas de los datos, tiene un control centralizado o

12

distribuido, en este caso el grado de paralelismo es muy alto, sin embargo, no est presente en todas las aplicaciones.

Existen diversos tipos de mtricas para analizar el rendimiento de la implementacin del paralelismo. Cabe sealar que el objetivo principal del paralelismo es aumentar el rendimiento de los programas, por otro lado el resultado de la aplicacin de los distintos tipos de mtricas depende de las capacidades del sistema y del comportamiento del programa. Es importante mencionar algunos conceptos bsicos para la mejor comprensin de este tipo de mtricas. Tiempo de ejecucin.- Es el tiempo que consume un programa desde su inicio hasta su trmino. Tiempo de CPU.- Es el tiempo que realmente se est ejecutando, es decir el tiempo que tiene asignado el CPU. Tiempo de comunicacin.- Tiempo invertido por la aplicacin en funciones de comunicacin entre procesos. Sobrecarga.- Tiempo total en que la aplicacin paralela no hace trabajo til.

Una vez entendidos estos conceptos se mencionarn los distintos tipos de mtricas existentes para la obtencin del rendimiento de la aplicacin del paralelismo segn Bosque Jos Luis (2006), as: Speedup.- Es la ganancia del sistema paralelo, frente al secuencial

S = T1_ TN

13

Este tipo de mtrica se refiere a que tan rpido es un algoritmo paralelo en comparacin a un algoritmo secuencial. Se define a S como el nmero de procesos, T1 es el tiempo de ejecucin de un algoritmo secuencial y TN es el tiempo de ejecucin de un algoritmo paralelo con S procesos.

Eficiencia.- Se mide en porcentaje, y es el tiempo empleado en un proceso efectivo.

E=S = T1_ N TN*N Fraccin serie.- Es el porcentaje del programa que no se puede paralelizar. Ley de Amdahl.- Si la fraccin serie de un programa es s el speedup mximo que se puede alcanzar es 1/s.

Speedup= s

+ p = 1 ____ = 1 s + p/N s + p/N s

Ley de Gustafson.- Tiempo constante incrementando el volumen de datos. Aumentar el volumen de datos aumenta el porcentaje de paralelismo. Scaled Speedup= s + p*N = s + p*N= N+ (1-N)*s s + p

14

1.1.

Arquitectura de computadoras

La clasificacin ms popular la realiz Flynn (Bosque Jos Luis, 2006), que clasific la arquitecturas de acuerdo a los flujos de datos (se les conoce tambin como data streams) y a los flujos de instrucciones (instructions streams), esta clasificacin se muestra en la figura 1. El concepto de flujos de datos se refiere al nmero de operandos que se pueden procesar al mismo tiempo y el de flujos de instrucciones se refiere a cuntos programas se pueden ejecutar al mismo tiempo. De acuerdo a esta clasificacin existen cuatro tipos de computadoras: Single Instruction Stream, Single Data Stream (SISD).- Un solo flujo de instrucciones y un solo flujo de datos. Arquitectura Von Neuman. Single Instruction Stream, Multiple Data Stream (SIMD).- Un solo flujo de instrucciones y varios flujos de datos. Sus caractersticas principales son, entre otras, cuenta con una sola unidad de control que despacha instrucciones a todos los elementos de procesamiento (EP), todas las unidades de proceso ejecutan la misma instruccin. Algunas computadoras comerciales que cuentan con este tipo de arquitectura son: Illiac IV, MPP, DAP, CM-2, MasPar MP1 y MasPar MP2. Arquitecturas vectoriales.

Multiple Instruction Stream, Single Data Stream (MISD).- Varios flujos de instrucciones y un solo flujo de datos. No hay implementaciones.

Multiple Instruction Stream, Multiple Data Stream (MIMD).- Varios flujos de instrucciones y varios flujos de datos. Algunas caractersticas son: todos los elementos de procesamiento (EP) poseen su propia unidad de control, todas las unidades de proceso ejecutan su propio programa. Algunas mquinas comerciales con esta arquitectura son el nCUBE2, iPSC, Symmetry, FX-8, FX-2800, TC-2000, CM-5, KSR-1 y la Paragon XP/S.

15

Es importante conocer la organizacin de la memoria en la arquitectura MIMD, esta se divide en: Arquitectura de paso de mensajes.- Cada procesador tiene su memoria local o privada, cada procesador puede comunicarse con los dems solo a travs del paso de mensajes, a estas computadoras suelen denominarse multicomputadoras (conjunto de mquinas Von Neumann (procesador + memoria local) conectadas a un bus comn, a travs del cual se pueden comunicar los procesadores y en particular pueden hacer operaciones de lectura y escritura sobre memorias de maquinas remotas). Cabe mencionar que las multicomputadoras estn divididas en MPPs (Massively Parallel Processors) y NOWs/COWs (Network/Clster Of Workstations). Los MPPs son supercomputadoras demasiado caras compuestas por varios CPUs estrechamente acoplados por una interconexin de alta velocidad, dos ejemplos conocidos de ste tipo de supercomputadoras son CRAY T3E y SP/2 de IBM. Por otro lado los NOWs, los cuales son conocidos tambin como COWs, consisten en PCs regulares o estaciones de trabajo (Workstation) finamente acoplados por la tecnologa de interconexin comercial.

Sus ventajas son.o La escalabilidad.- Las computadoras con sistemas de memoria distribuida son fciles de escalar, debido a la demanda de los recursos se puede agregar ms memoria y procesadores. Sus desventajas son.o El acceso remoto a memoria es lento. o La programacin puede ser complicada.

16

Arquitectura

de

memoria

compartida.-

Todos

los

procesadores

comparten toda la memoria. Con esto se tiene tiempo de acceso a memoria uniformes, ya que todos los procesadores se encuentran igualmente comunicados con memoria principal, adems el acceso a memoria es por medio de un solo canal. En esta configuracin debe asegurarse que los procesadores no tengan acceso simultneamente a regiones de memoria de una manera en la que pueda ocurrir algn error.

Sus ventajas son.o Facilidad de la programacin. - Es mucho ms fcil programar en estos sistemas que en sistemas de memoria distribuida. o Las computadoras MIMD con memoria compartida son sistemas conocidos como de multiprocesamiento simtrico (SMP), donde mltiples procesadores comparten un mismo sistema operativo y memoria. Otro trmino con que se conoce es mquinas firmemente juntas o de multiprocesadores. Sus desventajas son.o El acceso simultneo a memoria es un problema. o Poca escalabilidad de procesadores, debido a que se puede generar un cuello de botella en el nmero de CPUs. o En computadoras vectoriales como la Cray, todas las CPU tienen un camino libre a la memoria. No hay diferencia entre las CPUs. o La razn principal por el alto precio de Cray es la memoria.

17

Arquitectura Non Uniform Memory Arquitecture (NUMA).- Adems de la memoria compartida, cada procesador tiene una memoria local para guardar el programa y los datos no compartidos. En este caso disminuye el acceso a la red por parte de cada procesador haciendo ms eficiente el acceso a memoria.

Arquitectura Cache Only Memory Arquitecture (COMA).- Solo quedan las memorias locales para cada procesador y cada procesador puede acceder a la memoria de cualquier otro, se le conoce como memoria virtual.

18

A continuacin se presenta un pequeo cuadro comparativo de las arquitecturas SIMD y MIMD. SIMD Requiere menos hardware: 1 unidad de control. Necesita menos memoria: 1 sola copia del programa. Adecuada para programas de datos paralelos: Se requiere el mismo programa sobre un gran nmero de datos. Menos tiempo de arranque para comunicarse con los vecinos: Debido a que posee un reloj global. Ms costosa: Se requiere disear un microchip de arquitectura especial. Ms barata: Se pueden construir usando procesadores SISD de propsito general a gran escala, los cuales son muy baratos debido a la economa de escala. Necesita memoria para cada uno de los programas. Puede ejecutar varias tareas al mismo tiempo o emular un procesador SIMD mediante mecanismos de sincronizacin. Para comunicarse es necesario usar mecanismos de sincronizacin. MIMD Requiere ms hardware.

Tabla 1.- Comparacin de arquitecturas SIMD y MIMD

19

Figura 1.- Esquema de la clasificacin de computadoras. *Fuente.- Sesin 1: Arquitectura Paralela Basada en Cluster

1.2.

Computadoras paralelas.

Una computadora paralela es un conjunto de procesadores que son capaces de trabajar en colaboracin para resolver un problema computacional. Esta definicin es suficientemente amplia para incluir supercomputadoras paralelas que tienen cientos de miles de procesadores, redes de estaciones de trabajo, entre otros. Los ordenadores paralelos son interesantes porque ofrecen la posibilidad de concentrar los recursos computacionales (memoria y procesadores) sobre importantes problemas de clculo.

20

El paralelismo a veces ha sido visto como una sub-rea extraa de la informtica, interesante, pero de poca relevancia para el programador medio. La programacin paralela se est convirtiendo en parte fundamental para la empresa de programacin.

En la actualidad la computacin paralela est siendo utilizada en multitud de campos para el desarrollo de aplicaciones y el estudio de problemas que requieren gran capacidad de cmputo, ya sea por el gran tamao de los problemas que abordan o por la necesidad de trabajar con problemas en tiempo real. De esta forma, el paralelismo en la actualidad, adems de constituir diversas lneas abiertas de intensa labor investigadora, puede encontrarse en una infinidad de aplicaciones en campos muy variados, entre los que se destacan. Modelo predictivo

y simulacin.- Se realiza mediante extensos

experimentos de simulacin por computador que con frecuencia acarrean computaciones a gran escala para obtener la precisin y el tiempo de respuesta deseado. Entre otros modelos se puede destacar la previsin meteorolgica, numrica y la oceanografa. El desarrollo industrial tambin reclama el uso de computadores para progresar en el diseo y automatizacin de proyectos de ingeniera, la

inteligencia artificial y la deteccin remota de los recursos terrestres. En este campo se puede destacar la inteligencia artificial y automatizacin (procesamiento de imgenes, reconocimiento de patrones, visin por computador, comprensin del habla, ente otras.) Investigacin mdica.- En el rea mdica las computadoras rpidas son necesarios en tomografa asistida, diseo de corazones artificiales, diagnostico heptico, estimacin de daos cerebrales y estudios de ingeniera gentica.

21

1.3.

Modelos de computo en paralelo

En primer lugar se debe conocer que un clster es un tipo de computador paralelo o distribuido que consiste en un tipo de computadoras independientes pero interconectadas entre s que trabajan conjuntamente como un nico recurso para resolver un problema comn, de igual manera puede ser un multiprocesador casero, esto es que utiliza componentes comerciales, baratos y potentes (COTS). Ahora bien, los clsteres se pueden clasificar atendiendo a diversos factores como a continuacin se menciona: Aplicacin Alto rendimiento Diseado para la implementacin de alto coste computacional. Alta fiabilidad Diseado para aplicaciones criticas, en las que lo importante es la disponibilidad ms que el rendimiento.

Segn el propietario de los nodos Dedicado La aplicacin paralela se ejecuta en todo el sistema si ningn tipo de restriccin. No dedicado Cada nodo tiene un propietario y las aplicaciones paralelas se ejecutan en el tiempo en que los nodos estn ociosos (ciclos libres).

Configuracin del clster Homogneo La arquitectura (hardware y software) de todos los nodos es la misma. Heterogneo Los nodos tiene diferentes caractersticas, en cuanto a hardware o software.

Tabla 2.- Clasificacin de los Clsteres.


22

CAPTULO 2: Teora de los Clsteres

23

2. Teora de los clsteres


En este captulo se mencionarn algunos antecedentes de los clsteres, las causas que originaron su desarrollo e implementacin en las grandes empresas que necesitan de la resolucin de problemas grandes en tiempos cortos y a bajo costo.

Se explicarn algunos conceptos bsicos de los clsteres para su mayor entendimiento, de la misma manera se darn a conocer las generalidades de los clsteres con el objetivo de crear un conocimiento general de los componentes de los mismos.

La clasificacin de los clsteres es un tema importante, el cual de la misma manera se mencionara y explicar en el presente captulo, con el fin de poder identificar los tipos de clsteres existentes, cules son sus objetivos, sus componentes, rendimiento, entre otras caractersticas propias de cada uno de ellos.

Otro punto importante en este captulo son las ventajas y desventajas de los clsteres en su implementacin as como los retos que se tienen al llevarlos a cabo.

24

2.1.

Antecedentes

La base formal de que la ingeniera informtica puede ser utilizada como un medio para la elaboracin de trabajos paralelos de cualquier tipo fue posiblemente inventada por Gene Amdahl de IBM, que en 1967 public lo que ha llegado a ser considerado como el papel inicial de procesamiento paralelo conocido como Ley de Amdahl (indica la mejora de rendimiento que se puede esperar incrementando los elementos de procesamiento. Esta ley toma en cuenta la parte secuencial del proceso, es decir, aquella que independientemente de cuantos elementos de procesamiento tengamos, puede ser realizada por solo uno de ellos; y el resto del clculo no podr continuar hasta que se haya completado la parte secuencial).

Esta ley define la base para la ingeniera de la computacin tanto para multiprocesador y computacin clster, en donde la principal diferencia es si las comunicaciones interprocesador cuentan con el apoyo dentro de la computadora, por ejemplo, en una configuracin personalizada para el bus o la red de comunicaciones internas, o fuera del ordenador en una red commodity.

Es importante mencionar que la historia de los primeros grupos de computadoras se puede ligar directamente a la historia de los principios de las redes, siendo la principal motivacin el desarrollo de una red para enlazar los recursos de computacin, de hecho el realizar la creacin de un clster de computadoras. Las redes de conmutacin de paquetes fueron conceptualmente inventados por la corporacin RAND en 1962.

Usando el concepto de una red de conmutacin de paquetes, el proyecto ARPANET ((Red de la Agencia de Proyectos de Investigacin Avanzada) logr crear en 1969 lo que fue posiblemente la primera red de computadoras bsicas basadas en el clster de computadoras por cuatro tipos de centros informticos.

25

Dicho proyecto creci y se convirti en lo que actualmente se conoce como internet, considerndose como la madre de todos los clsteres.

El primer producto comercial de tipo clster fue ARCnet, desarrollada en 1977 por Datapoint pero no tuvieron un xito comercial y los clsteres no consiguieron tener xito hasta que en 1984 VAXclster produjera el sistema operativo VAX/VMS. Estos productos no solo apoyan a la computacin paralela, sino que tambin comparten los archivos y dispositivos perifricos.

La idea original de estos sistemas era proporcionar las ventajas del procesamiento paralelo, al tiempo que se mantiene la fiabilidad de los datos y el carcter singular. VAXclster y VMSclster estn an disponibles en los sistemas de HP OpenVMS corriendo en sistemas Itanium y ALpha.

Otros dos principios comerciales de clsteres notables fueron el Thandem Himalaya (alrededor de 1994 con productos de alta disponibilidad) y el IBM S/390 Parallel Sysplex tambin alrededor de 1994, este con fines empresariales.

Por otro lado se encuentra el software de Parallel Virtual Machine (PVM). Este software de fuente abierta basado en comunicaciones TCP/IP permiti la creacin de un superordenador virtual (un clster HPC) realizada desde cualquiera de los sistemas conectados TCP/IP.

De forma libre los clsteres heterogneos han constituido la cima de este modelo logrando aumentar rpidamente en FLOPS (operaciones de punto flotante que sirven para medir el rendimiento de una computadora) globalmente y superando con creces la disponibilidad incluso de los ms caros superordenadores.

El empleo de PC, PVM y redes de bajo costo dio como resultado en 1993 la creacin de un clster desarrollado por la NASA, Discover.

26

A continuacin se mencionaran de manera rpida algunos otros clsteres importantes. En 1995 se desarrollo el clster Beowulf diseado segn un producto bsico de la red con el objetivo especifico de ser un superordenador capaz de realizar firmemente y de manera paralela clculos de tipo HPC. Este clster fue construido por Donald Becker y Thomas Sterling, implemento 16 computadoras personales con procesadores Intel DX4 de 200Mhz, los cuales estaban conectados a travs de un switch Ethernet. Su rendimiento terico era de 3.2 GFlops. Berkeley NOW fue conformado por 105 estaciones de trabajo Sun Ultra 170, conectadas a travs de una red Myrinet (red de interconexin de clsteres de altas prestaciones, fsicamente consiste en dos cables de fibra ptica, upstream y downstream, conectados con un nico conector. La conexin suele realizarse mediante conmutadores y encaminadores, tiene tolerancia a fallos, con control de flujo, control de errores y monitarizacion de la red. Su rendimiento alcanza las latencias de 3 microsegundos y tiene un ancho de banda de 10 Gbps). Cada estacin de trabajo contena un microprocesador Ultra1 de 167 MHz, cach de nivel 2 de 512 KB, 128 Mb de memoria, dos discos de 2.3 GB, tarjetas de red Ethernet y Myrinet. En 1997 este clster logr un rendimiento de 10 GFlops. En el ao de 2003 Google llego a estar conformado por 15 000 computadoras personales, en promedio una consulta lee cientos de megabytes y consume algunos billones de ciclos del CPU. Clster PS2 desarrollado en el ao de 2004 en la Universidad de Illinois en Estados Unidos, utilizando consolas Play Station 2 en cmputo cientfico y visualizacin de alta resolucin, se emplearon 70 PS2 y un kit de Sony Linux (basado en Linux Kondora y Linux Red Hat).
27

Clster X en la lista Top 500 de noviembre de 2004, fue considerado el sptimo sistema clster mas rpido, sin emabargo para julio de 2005 ocupa el puesto catorce. Fue construido en el Tecnolgico de Virginia en el 2003; su instalacin fue realizada por estudiantes del dicho tecnolgico. Est constituido por 2200 procesadores Apple G5 de 2.3 GHz. Utiliza dos redes: Infiniband 4x para las comunicaciones entre procesos y Gigabit Ethernet para la administracin. Clster X posee 4 Terabytes de memoria RAM y 176 Terabytes de disco duro, su rendimiento es de 12.25 TFlops. Se le conoce tambin como Terascale. Thunder fue construido por el Laboratorio Nacional Lawrence Livermore de la Universidad de California. Est conformado por 4096 procesadores Intel Itanium2 Tiger4 de 1.4GHz. Utiliza una red basada en tecnologa Quadrics. Su rendimiento es de 19.94 TFlops. Se ubic en la segunda posicin del TOP 500 durante junio de 2004, luego en la quinta posicin en noviembre de 2004 y en la lista de julio de 2005 se ubic en la sptima posicin. ASCI Q fue construido en el ao 2002 por el Laboratorio Nacional Los lamos, Estados Unidos. Est constituido por 8192 procesadores AlphaServer SC45 de 1.25 GHz. Su rendimiento es de 13.88 TFlops. Se ubic en la segunda posicin del TOP 500 durante junio y noviembre de 2003, luego en la tercera posicin en junio de 2004, en la sexta posicin en noviembre de 2004 y en la duodcima posicin en julio de 2005. Red Espaola de Supercomputacin, esta red fue creada en el ao 2007, est compuesta por 7 clsteres distribuidos en distintas instituciones espaolas, ente los que se encuentra el supercomputador Marenostrum. En el Instituto de Investigacin en Ingeniera de Aragn, se emplea HERMES (se estudiar a detalle posteriormente), este clster de
28

computacin es utilizado por los miembros de dicho instituto para realizar simulaciones y clculos numricos de muy alto rendimiento. Por mencionar algunos de los trabajos realizados dentro de HERMES estn: Simulacin de prtesis mejoradas. Tratamiento de imgenes biomdicas. Anlisis de seales biolgicas. Desarrollo de interfaces orales En nuestro pas se encuentra THEOS, este clster est basado en tecnologa Intel, se encuentra implementado en el Centro Nacional de Procesado Sismolgico de PEMEX Exploracin y Produccin (CNPS), THEOS apoyo en la instalacin del citado hardware (1024 servidores IBM X-330, de dos procesadores cada uno, 2 Gb en RAM, dos discos de 36 Gb cada uno, mas 8 servidores X-342 de dos procesadores), en Villahermosa Tabasco. De igual manera importantes avances en la tecnologa y arquitectura de los microprocesadores han llevado a una gran evolucin de sus prestaciones: ley de Moore; es un antecedente ms de la aparicin de los clsteres.

29

2.2.

Conceptos.

Es importante mencionar algunas definiciones bsicas para el mejor entendimiento del funcionamiento de los clsteres: Rendimiento.- Es la efectividad del desempeo de una computadora, sobre una aplicacin o un benchmark (tcnica utilizada para medir el rendimiento de un sistema o componente de un sistema) en particular. En las mediciones de rendimiento estn involucrados velocidad, costo y eficiencia. Alto Rendimiento (HPC).- Gran demanda de procesamiento de datos en procesadores, memoria y otros recursos de hardware, donde la comunicacin entre ellos es muy rpida. Recurso (resource).- Se trata de un componente hardware (disco fsico, red) o software (direccin IP, nombre de red, script...) que forma parte del clster. Entre los recursos se producen dependencias que se han de reflejar en la configuracin de los mismos. Grupo (group).- Es una agrupacin de recursos, un grupo de recursos es la nica unidad del clster donde se puede realizar failover (modo de operacin de backup o respaldo en el cual las funciones de un componente del sistema son asumidas por un segundo componente del sistema cuando el primero no se encuentra disponible debido a un fallo un tiempo de parada preestablecido. Es usado para hacer a los sistemas ms tolerantes a fallos, y de esta forma hacer el sistema permanentemente disponible), cuando esto ocurre se mueven todos los recursos que lo componen de un nodo a otro. Esta es la razn que los diferentes recursos componentes de un servicio o instancia de aplicacin se agrupen en un mismo grupo, un recurso determinado no puede pertenecer a ms de un grupo de recursos.
30

Cada grupo tiene una lista de nodos (prefered owner) que por orden de preferencia se escogen a la hora de determinar hacia que nodo mover el grupo cuando se realiza un failover. Quorum.- Es un disco usado para compartir, entre los distintos nodos, informacin respecto a la configuracin del clster. Shared Quorum.- Se

trata

de

la

configuracin

ms habitual y

recomendada, todos los clsteres comparten el acceso a este recurso de disco fsico. Local Quorum.- Aqu el quorum se localizara en uno de los discos locales de uno de los nodos del clster, este tipo de configuracin solo tienen sentido para recuperacin de desastres o durante mantenimientos o fallos del disco compartido de quorum. Nodo.- Se refiere a una computadora sola que contiene recursos especficos, tales como memoria, interfaces de red, uno o ms CPU, etc. Escalabilidad.- Generalmente se mide la eficiencia de un problema, utilizando un tamao y un nmero de procesadores fijo, pero esto es insuficiente, pues los resultados sern diferentes cuando se aumente o disminuya el tamao del problema y el nmero de procesadores. Esto es, existe un problema de escalabilidad. Cuando se aumenta el nmero de procesadores para el mismo tamao del problema, la sobrecarga debido al paralelismo (comunicaciones, desbalanceo de carga), aumenta y

similarmente podemos tener casos en donde el tamao del problema es muy pequeo para tener una evaluacin real del problema sobre cierta mquina.

31

Balanceo de carga.- Lo ideal en el procesamiento paralelo es que cada procesador realice la misma cantidad de trabajo, donde adems se espera que los procesadores trabajen al mismo tiempo. La meta del balanceo de carga es minimizar el tiempo de espera de los procesadores en los puntos de sincronizacin. Alta disponibilidad.- Es la capacidad de mantener operativas los servicios y operaciones del corazn del Negocio continuamente, eliminando los problemas comunes de los sistemas de informacin de su organizacin, adems, la informacin se encuentra consolidada y en el caso de una prdida de datos o problemas de servicios, otra mquina tomar el rol de la principal, pudiendo tener un sistema continuo de datos sin afectar el negocio. Se divide en dos tipos.o Alta disponibilidad de Hardware.- Redundancia de Hardware. Si se produce un fallo de hardware en alguna de las mquinas del clster (falla fuente de poder, punto de red, cable o tarjeta de red, falla de controladora de discos, switch, etc.), si nuestra configuracin del equipamiento computacional lo permite, podremos cambiar nuestro hardware en caliente (HotSwap) sin tener que bajar los servicios de nuestra empresa. o Alta disponibilidad de Aplicaciones.- Si se produce un fallo de las aplicaciones de alguna de las mquinas del clster, el software de alta disponibilidad es capaz de re arrancar automticamente los servicios que han fallado en cualquiera de las otras mquinas del clster. Y cuando la mquina que ha fallado se recupera, los servicios son nuevamente migrados a la mquina original. Esta capacidad de recuperacin automtica de servicios nos garantiza la integridad de la informacin, ya que no hay prdida de datos. Y

32

adems evita molestias a los usuarios, que no tienen por qu notar que se ha producido un problema. Sistemas operativos.- Es el software bsico de una computadora que provee una interfaz entre el resto de programas del ordenador, los dispositivos hardware y el usuario. Las funciones bsicas del Sistema Operativo son administrar los recursos de la mquina, coordinar el hardware y organizar archivos y directorios en dispositivos de

almacenamiento. Los Sistemas Operativos ms utilizados son Dos, Windows, Linux y Mac. Algunos SO ya vienen con un navegador integrado, como Windows que trae el navegador Internet Explorer. Midleware.- Software que generalmente acta entre el sistema operativo y las aplicaciones con la finalidad de brindar a un clster.o Interfaz nica de acceso al sistema. o Herramientas para la optimizacin y rendimiento del sistema. o Escalabilidad. Compilador.- Un compilador es un programa que traduce otro programa escrito en un lenguaje de programacin llamado cdigo fuente, en un programa equivalente al lenguaje de computadora llamado ejecutable binario. Computadora vectorial.- Posee un conjunto de unidades funcionales utilizados para procesar vectores eficientemente. Contiene registros vectoriales para operar sobre ellos en un solo ciclo de reloj. Computadora paralela.- Mquina con dos o ms procesadores que pueden trabajar simultnea y/o coordinadamente. Estas pueden ser de dos tipos (como se mencion en el capitulo anterior) MIMD y SIMD.
33

Eficiencia.- Es la relacin entre el costo computacional y el funcionamiento del clster; y lo que indica es qu tan eficazmente se est utilizando el hardware, la forma de calcularla se especific en el capitulo anterior. Flops.- Un flop es utilizado para medir operaciones de punto flotante (expresin de un nmero mediante un exponente y una mantisa, ejemplo, 10.75 queda expresado como, 1.075 [esta es la mantisa] * 10 1 [este es el exponente]) por segundo. Es una medida de la velocidad del

procesamiento numrico del procesador. Se utilizan en unidades de millones de flops (MegaFlops), Miles de Millones de flops (GigaFlops), etc. Kernel.- Tambin conocido como ncleo; es la parte fundamental de un sistema operativo. Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora. Memoria compartida.- En una mquina paralela existe una sola memoria que puede ser accedida por todos los procesadores. Memoria

distribuida.-

Cada

uno

de

los

procesadores

de

un

multiprocesador tiene asociado a l una unidad de memoria. Paralelismo.- Consiste en el procesamiento de una serie de instrucciones de programa que son ejecutables por mltiples procesadores que trabajan de manera independiente. Existen dos formas conocidas de hacer paralelismo: una es en hardware y otra en software. Por hardware depende de la tecnologa de cmputo y la de software se refiere a la habilidad del usuario para encontrar reas bien definidas del problema que se desea resolver, de tal forma que ste pueda ser dividido en partes que sern distribuidas entre los nodos del clster.

34

Proceso.- Un proceso es bsicamente un programa en ejecucin. Cada proceso tiene asociado un espacio de direcciones, es decir una lista de posiciones de memoria desde algn mnimo hasta algn mximo que el proceso puede leer y escribir. Speedup (velocidad).- Se define como el tiempo que tarda en ejecutarse el mismo programa en un solo procesador, dividido entre el tiempo que toma ejecutarse el mismo programa en procesadores.

2.3.

Generalidades de los clsteres.

ARQUITECTURA

Un clster est formado por nodos de cmputo y una red de comunicacin, dichos nodos puede ser un ordenador convencional o un sistema multiproceso con su propia memoria y sistema operativo. Cabe mencionar que estos nodos pueden estar incluidos en una sola cabina (llamada tambin "rack"), o conectados por medio de una LAN.

Los componentes que forman un sistema de este tipo son. Un conjunto de ordenadores de altas prestaciones. Sistemas operativos basados en microkernel o estratificados. Redes de interconexion de altas prestaciones (myrinet, Gigabitt, Infiniband). Tarjetas de conexin a red de alta velocidad. Protocolos y servicios de comunicacin a alta velocidad Midleware que est compuesto por dos subniveles de software, el cual se explicar con ms detalle en el siguiente punto. Entornos y herramientas de programacin paralela, compiladores paralelos, Java, PVM, MPI, estos componentes se muestran en la figura 2.
35

Figura 2.- Arquitectura de un clster. *Fuente.- Sesin 1: Arquitectura Paralela Basada en Clsteres

36

MIDLEWARE

Est compuesto de dos subniveles de software. La imagen de sistema nica (SSI Single System Image) que ofrece a los usuarios un acceso unificando todos los recursos del sistema. Disponibilidad del sistema que permite servicios como puntos de chequeo, recuperacin de fallos, soporte para tolerancia a fallos.

Es importante sealar que la imagen de sistema nico proporciona al usuario una visin unificada del clster como un nico recurso o sistema de cmputo. Esta imagen est soportada precisamente por el nivel midleware que est entre el sistema operativo y las aplicaciones de usuario y tiene bsicamente dos subsistemas que son. Infraestructura de imagen del sistema nico.- Junto al sistema operativo est presente en todos los nodos y proporciona un acceso unificado a todos los recursos del sistema. Infraestructura de disponibilidad del sistema.- Posibilita servicios propios del clster como puntos de chequeo, recuperacin automtica de fallos y soporte para tolerancia a fallos.

Algunos objetivos de esta tecnologa son. Presentar una completa transparencia al usuario de forma que este no tenga que preocuparse de detalles de bajo nivel en la implementacin, ni de cmo gestionar el sistema para optimizar su rendimiento. Por otro lado, la escalabilidad del sistema, ya que los clsteres pueden ampliarse fcilmente aadiendo nuevos nodos, las aplicaciones deben ejecutarse de forma eficiente en un rango amplio de tamaos de maquinas.
37

Por ltimo, tambin es importante la disponibilidad del sistema para soportar las aplicaciones de los usuarios, esto, como se menciono anteriormente, por medio de tcnicas de tolerancia a fallos y recuperacin automtica sin afectar a las aplicaciones de los usuarios.

Existen diversos tipos de midleware, entre los que se encuentran. MOSIX.- Es una herramienta diseada para realizar balanceo de cargas en el clster de forma totalmente transparente de forma tal que los nodos del clster se comportan como una sola mquina, y de esta manera incrementar el aprovechamiento de cada uno de los nodos. De igual manera tambin se puede observar el comportamiento del clster, para esto se utiliza el monitor de carga de MOSIX llamado MON. Otra aplicacin que vale la pena mencionar es MPS la cual da un reporte del status de procesos multicomputadores. Por otro lado cabe sealara que es un parche para el kernel de Linux que le da la capacidad de ejecucin distribuida de procesos, lo que permite el desarrollo de una supercomputadora. OpenMOSIX.- Es un parche para el kernel Linux que permite a varias mquinas actuar como un sistema multiprocesador grande. Lo que hace OpenMosix es balancear la carga de trabajo entre todos los nodos que forman el clster: migra los procesos, independientemente de en qu nodo se han originado, al nodo con menos carga de trabajo. Su mayor ventaja es que las aplicaciones no tienen que estar programadas especficamente para OpenMosix ya que trabaja con aplicaciones normales (no

paralelizadas), siendo su funcionamiento transparente al usuario. Pero tiene una limitacin: slo migra procesos que no usen memoria compartida, por lo que no migra procesos multi-hilo (caracterstica que permite a una aplicacin realizar varias tareas a la vez).

38

OpenMosix est formado por los siguientes componentes: o un parche para el kernel Linux. o herramientas para la lnea de comandos y para el entorno grfico. o el script de inicio /etc/init.d/openmosix. Cndor.- El objetivo del Proyecto Cndor es desarrollar, implementar, desplegar y evaluar los mecanismos y polticas que apoyen a la Computacin de Alto Rendimiento (HTC) en grandes colecciones de recursos informticos de propiedad distributiva. Guiados por los retos tecnolgicos y sociolgicos de este entorno informtico, el Equipo Cndor ha sido la creacin de herramientas de software que permitir a los cientficos e ingenieros aumentar su rendimiento informtico. OpenSSI.- El proyecto de OpenSSI es una solucin que arracima comprensiva que ofrece un ambiente completo, altamente disponible de SSI para Linux. Las metas para los racimos de OpenSSI incluyen la disponibilidad, la escalabilidad y la flexibilidad, construidos de los servidores estndares.

El middleware recibe los trabajos entrantes al clster 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 definidas 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.

39

El middleware tambin debe poder migrar procesos entre servidores con distintas finalidades:

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.

Mantenimiento de servidores.- Si hay procesos corriendo en un servidor que necesita mantenimiento o una actualizacin, es posible migrar los procesos a otro servidor y proceder a desconectar del clster al primero.

Priorizacin de trabajos.- En caso de tener varios procesos corriendo en el clster, 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.

2.4.

Clasificacin de clsteres.

Como se mencion en el captulo anterior existen tres mtodos de clasificar a los clsteres, por su aplicacin, segn el propietario de los nodos, y la configuracin del clster, en este apartado se describir con mayor detalle cada una de estas clasificaciones. Segn su aplicacin

Los clsteres de Alto Rendimiento (HP), son utilizados para problemas que requieren considerable poder de procesamiento. Por mencionar algunos campos donde se aplican dichos sistemas existen.

Procesamiento de imgenes.- Rendering (Se refiere al proceso de generar una imagen desde un modelo. Generalmente se utiliza en el campo de los

40

animadores o productores audiovisuales y en programas de diseo en 3D), Reconocimiento de patrones. Investigacin.- Fsica, ciencia de Bio-informacin (por ejemplo, estudio de cadenas de ADN), Bioqumica y Biofsica. Industria.- Estudios Geolgicos (extraccin de minerales), Simulacin Matemtica.

Su objetivo principal es alcanzar el mayor rendimiento en la velocidad de procesamiento de datos, como ya se menciono anteriormente. Este tipo de tecnologa permite que un conjunto de computadoras trabajen en paralelo, dividiendo el trabajo en varias tareas ms pequeas las cuales se pueden realizar en forma paralela. Es independiente del hardware que se utilice en su desarrollo, pudiendo adaptarse a cualquier tipo de servidores, dispositivos de red, configuraciones, etc. Se puede incrementar el nmero de nodos arbitrariamente. Son utilizados de igual manera para el descifrado de cdigos.

Los motivos para utilizar un clster de alto rendimiento son dos, la complejidad del problema a resolver y el precio de la mquina necesaria para resolverlo.

Un tipo de software para realizar un clster de alto rendimiento es OSCAR (Open Source Clster Application Resources) distribuido bajo licencia GLP. Este software trabaja bajo licencia LINUX. En Windows podra ser desarrollado sobre WCC 2003 (Windows Computer Clster).

41

Por otro lado se encuentran los clsteres de Alta Fiabilidad o Alta Disponibilidad, este tipo de sistema es utilizado cuando el costo de la posible falta de servicio supera el costo de implementar un sistema en clster, por ejemplo. Sistemas de facturacin y/o transaccin Operaciones bancarias Comercio electrnico

Es un conjunto de dos o ms maquinas que se caracterizan por mantener una serie de servicios compartidos y por estar constantemente monitorendose entre s. Se puede dividir en dos subclases ms, estas son. Alta disponibilidad de infraestructura.- Si se produce un fallo de hardware en alguno de los componentes del clster, el software de alta disponibilidad ser capaz de arrancar automticamente los servicios en cualquiera de los otros componentes del clster, a esto se le conoce como failover, por otro lado cuando dicho componente se recupere, el software ser capaz de migrar nuevamente los servicios a la mquina original, esto es failback. . esta capacidad de recuperacin automtica de servicios garantiza la alta disponibilidad de los servicios ofrecidos por el clster, minimizando as la percepcin del fallo por parte de los usuarios. Alta disponibilidad de aplicacin.- Si se produce un fallo del hardware o de las aplicaciones de alguna de las mquinas del clster, el software de alta disponibilidad es capaz de arrancar automticamente los servicios que han fallado en cualquiera de las otras maquinas del clster. Y cuando la mquina original se recupera es migrada la informacin de nuevo a ella. Esto garantiza la integridad de informacin ya que no hay prdida de datos.

42

Segn el propietario de los nodos (nodos dedicados y no dedicados)

En informtica, de forma muy general, un nodo es un punto de interseccin o unin de varios elementos que confluyen en el mismo lugar, sin embargo dependiendo del rea de la informtica en la que vaya dirigida la palabra nodo, tiene varios significados. En redes de computadoras cada una de las maquinas es un nodo, y si la red es internet, cada servidor constituye tambin un nodo. En estructuras de datos dinmicas un nodo es un registro que contiene un dato de inters y al menos un puntero para referenciar a otro nodo. En este caso debemos enfocarnos a los nodos dentro del rea de las redes computacionales. De esta manera, un clster puede estar conformado por nodos dedicados y no dedicados. En un clster con nodos dedicados, los nodos no disponen de teclado, mouse ni monitor y su uso esta exclusivamente dedicado a realizar tareas relacionadas con el clster. Mientras que en un clster con nodos no dedicados, los nodos disponen de teclado, mouse y monitor, y su uso no est exclusivamente dedicado a realizar tareas relacionadas con el clster, en este caso el clster hace uso de los ciclos de reloj que el usuario del computador no est utilizando para realizar sus tareas. Es importante aclarar que a la hora de disear un clster, los nodos deben tener caractersticas similares, es decir, deben tener caractersticas similares, es decir, deben guardar cierta similaridad de arquitectura y sistemas operativos, ya que si se conforma un clster con nodos totalmente heterogneos (es decir que existe un gran diferencia entre capacidad de procesadores, memoria, entre otros) ser ineficiente debido a que el middleware delegara o asignar todos los procesos al nodo de mayor capacidad de cmputo y solo distribuir cuando este se encuentre saturado de procesos; por eso es recomendable construir un grupo de ordenadores lo mas similar posible.

43

Segn la configuracin del clster

En este caso cabe sealar que un clster puede ser homogneo o heterogneo. Esta clasificacin se desprende del punto anterior (segn el propietario de los nodos). Donde se debe entender por clster heterogneo al grupo de nodos con caractersticas similares y clster homogneo donde los nodos son diferentes tanto en su hardware y software.

Por otro lado se puede realizar una segunda clasificacin en base a sus caractersticas. Esta es. Alto rendimiento (High Performance)

Es un conjunto de ordenadores que est diseado para dar altas prestaciones en cuanto a capacidad de clculo. Los motivos de su implementacin son, por mencionar algunos, el tamao del problema a resolver y el precio de la mquina para resolver dicho problema.

Por medio de este tipo de clsteres se pueden conseguir capacidades de clculo superiores a las de un ordenador ms caro que el costo conjunto de los ordenadores del clster. Para garantizar esta capacidad de clculo, los problemas necesitan ser paralelizables, ya que el mtodo con el que los clsteres agilizan el procesamiento es dividir el problema en problemas ms pequeos y calcularlos en los nodos, por lo tanto, si el problema no cumple con esta caracterstica, no puede utilizarse el clster para su clculo. Para que un problema sea paralelizable se debe hacer uso de las librera especiales como la PVM (Parallel virtual machine) o MPI (Message passage interface), donde la primera es usada especialmente en clster con nodos heterogneos (arquitectura del procesador, sistemas operativo, entre otras), y

44

pertenecientes a diferentes dominios de red, la segunda librera usada para clster homogneos Un tipo de software para realizar clster high performace es OSCAR (Open Source Cluster Application Resources) distribuido bajo licencia GPL. Este software trabaja sobre el sistema operativo Linux. En Windows se podra utilizar "WCC 2003" (Windows Computer Cluster). Alta disponibilidad No vara en su definicin con la definicin anterior de un clster de alta disponibilidad clasificado as por su aplicacin. Alta eficiencia Son clsteres cuyo objetivo de diseo es el ejecutar la mayor cantidad de tareas en el menor tiempo posible. Existe independencia de datos entre las tareas individuales. El retardo entre los nodos del clster no es considerado un gran problema.

45

2.5.

Ventajas y desventajas.

Algunas ventajas de los clsteres son. La relacin que existe entre rendimiento y costo.- El rendimiento de un clster compite con el rendimiento de las mejores y ms costosas Workstations a un precio muy bajo ya que utiliza mquinas comunes y ms baratas. Flexibilidad.- Es posible implementar un clster no slo para tareas de un rea especfica o nica, sino que es capaz de implementarse en distintas reas del conocimiento. Disponibilidad. Escalabilidad. Crecimiento por incrementos.- Dependiendo de la capacidad necesaria del clster es posible incrementar los nodos arbitrariamente hasta alcanzar el rendimiento, la capacidad y la velocidad deseada. Implementacin de tecnologa de punta.- Se implementa la mejor tecnologa en cuanto a calidad y coste se refiere, y con esto no quiere decir que la tecnologa ms cara es la mejor. Aprovechamiento de ciclos perdidos.- Cuando el clster detecta un espacio de ocio en las maquinas componentes del sistema utiliza este espacio para implementar o llevar a cabo una nueva tarea. Heterogeneidad.- Se trata de que el sistema tenga la mayor similitud posible entre sus componentes, tanto de hardware como de software, esto con el objetivo de facilitar las tareas y no sufrir de poca velocidad en la resolucin de los mismos.

46

Por otro lado se encuentran las desventajas, estas son. Software. Problemas de administracin y gestin. Memoria fsicamente distribuida. Varias copias del sistema operativo. La red es el cuello de botella del sistema.

2.6.

Retos en la implementacin de un clster

Es importante conocer primeramente algunas consideraciones de diseo de un clster, como son el maximizar la relacin precio/prestaciones, aseguramiento de la disponibilidad, y sobre todo, la restriccin que se tiene a un presupuesto. Se debe recordar tambin que est conformado principalmente por nodos de cmputo y una red de comunicacin.

El requisito fundamental para realizar el diseo de un clster es el implementar un supercomputador con un coste reducido y altas prestaciones y rendimiento. La metodologa de diseo de un clster es de abajo-arriba (figura 3) y esta es. Requisitos de rendimiento. Hardware. Sistema operativo. Middleware. Aplicaciones (incluyendo la programacin).

47

Figura 3.- Diseo abajo-arriba de un clster.

Figura 3.- Diseo abajo-arriba de un cluster. *Fuente.- Sesin 1: Arquitecturas Paralelas Basadas en Clsteres

Los problemas para obtener el mximo rendimiento de un computador paralelo son. Hardware.- Procesadores inactivos debido a conflictos en acceso a memoria y comunicaciones. Sistema operativo.- Problemas de ineficiencia en planificadores, sistemas de ficheros, y asignacin de memoria. Middleware.- Distribucin y coordinacin de tareas ineficiente, latencias de comunicacin altas. Aplicaciones.- Algoritmos e implementaciones ineficientes que no explotan el paralelismo inherente de los problemas.

48

CAPTULO 3: Arquitecturas y herramientas para la implementacin de un clster

49

3. Arquitecturas y herramientas para Implementacin de un clster.


En este captulo se abordar la arquitectura de un cluster y las herramientas necesarias para su implementacin. Es importante recordar de manera breve y clara que un cluster es un sistema paralelo o distribuido que est conformado por un grupo de equipos computacionales independientes llamados nodos, los cuales se conectan entre s, ejecutan tareas de manera conjunta y por ultimo cumple adems con los requerimientos de un sistema tolerante a fallos.

De acuerdo con su objetivo de diseo los clsteres se clasifican como clsteres implementados para lograr un alto desempeo o alto rendimiento (que es el enfoque de esta tesina), mientras que otros se utilizan para lograr alta disponibilidad.

De esta manera cabe sealar que un cluster de alto rendimiento est diseado, como su nombre lo indica, para dar altas prestaciones en cuanto a capacidad de clculo y procesamiento, resolviendo problemas de aplicaciones que as lo necesiten, por ejemplo, problemas con necesidad de gran clculo. Esto se obtiene mediante el uso de un grupo de maquinas individuales las cuales estn conectadas entre s a travs de una red de alta velocidad, este tipo de conexin permite obtener un sistema de alto rendimiento o prestaciones que trabaja como si fuese uno solo a pesar de que lo complementen varios equipos de computadoras. Por otro lado los clsteres de alta disponibilidad tienen como objetivo garantizar el funcionamiento ininterrumpido de ciertas aplicaciones.

Los clsteres de altas prestaciones, como se menciono en captulos anteriores, se utilizan en campos como la simulacin de biotecnologas, simulaciones petroleras, modelacin de mercados financieros, grandes clculos matemticos, prediccin del clima y servidores de internet.
50

Cabe mencionar que en un cluster cuando uno de los nodos sufre de un colapso o falla los dems nodos componentes del cluster se encargan automticamente de activar los recursos perdidos, con la finalidad de mantener la disponibilidad de los servicios que se les brindan a los usuarios, de esta manera se cubre la falta del nodo daado.

El implementar un cluster indica el uso necesario de software de control especializado, este tipo de software puede ser utilizado a nivel de aplicacin o a nivel de sistema operativo.

A continuacin se muestran algunos ejemplos de herramientas que pueden usarse en la implementacin de clsteres en Linux. IP Virtual Linux Server (IPLVS).- Es una solucin que sirve para gestionar el balance de carga (es la tcnica para compartir el trabajo que se realiza en varios procesos, ordenadores o cualquier otro tipo de recurso) en sistemas Linux. Este proyecto es, al igual que Linux, un sistema de cdigo abierto. Su objetivo es desarrollar un servidor Linux de alto rendimiento que brinde una buena escalabilidad, confiabilidad y robustez usando tecnologas de tipo cluster. Piranha.- Este software viene incluido en la distribucin Linux RedHat. Se compone por un servido LVS (Linux Virtual Server), este software permite administrar los servicios de la web con un navegador a travs de interfaz grfica. LVS permite crear un cluster de balanceo de carga, donde un nodo maestro reparte y gestiona las conexiones entre los dems nodos esclavos, este tipo de servidor LVS es capaz de soportar hasta 200 nodos esclavos.

51

Kimberlite.- Solucin que brinda Linux para clsteres de dos nodos, permite la conexin a un disco compartido de qurum (tcnica complementaria que ocasiona que todos los nodos del cluster escriban su estado en un disco y de esta forma se pueda determinar que nodo est disponible para dar el servicio) va SCSI (Sistema de Interfaz para Pequeas Computadoras) o por fibra (SAN, Red de rea de

Almacenamiento, Storage Area Network). Heartbeat.- Est diseado para detectar cuando un servicio se ha cado o falla en una mquina y administrador de cluster. Puede usar red Ethernet para comunicarse con los dems nodos componentes del cluster.

Por mencionar un ejemplo de clster implementado del tipo de alta disponibilidad se puede mencionar el implementado por los administradores del Ministerio de Finanzas y Precios de Cuba y de la empresa CONAVANA. Este clster se implement debido a la necesidad de brindar servicios a ms de 350 usuarios de la red local y a las dependencias provinciales del pas (Bayona Gonzlez, 2009). En la implementacin de este clster se hace mencin del uso del software de control Heartbeat y Debian GNU/Linux como sistema operativo. Heartbeat es una aplicacin desarrollada por Linux-HA. Permite implementar clsteres

descentralizados, por otro lado se sabe que es una aplicacin estable, flexible y eficiente. En Debian ya esta precargado Heartbeat por lo que facilita el trabajo.

La implementacin de un cluster se lleva a cabo mediante los siguientes pasos. Configuracin de las interfaces de red.-

Se debe disponer de una interfaz de red virtual, esta sirve para almacenar varias direcciones IP usando una sola tarjeta de red, esta interfaz se puede configurar utilizando la tcnica llamada IP Aliasing. La interfaz de red virtual otorgar los servicios del nodo que se est utilizando.
52

Para realizar la configuracin de la interfaz por medio de la tcnica IP Aliasing se deben seguir los siguientes pasos.-

Si se compila IP Aliasing cmo mdulo se debe correr

# /sbin/modprobe 0069p_alias Despus determinar las otras direcciones IP que necesitas configurar. Para este ejemplo utilizaremos una red local. En ste caso, la IP maestra de mi mquina es 172.16.16.1, y las direcciones IP virtuales son 172.16.16.20, 172.16.16.55, y 172.16.16.201. (Todas estas direcciones IP son privadas.). Bsicamente, hay un pequeo truco para subir las nuevas direcciones IP -- usar un adaptador de red distinto. # /sbin/ifconfig eth0 172.16.16.1 # /sbin/ifconfig eth0:0 172.16.16.20 # /sbin/ifconfig eth0:1 172.16.16.55 # /sbin/ifconfig eth0:2 172.16.16.201 La mquina ahora estar recibiendo peticiones para las cuatro IPs. Esto se logra creando dispositivos de red virtuales para manejar las peticiones. Ahora, esta es la forma manual de hacer las cosas, y para que nada sea omitido, siempre es sensato agregar routers. # /sbin/route add -net 172.16.0.0 dev eth0 # /sbin/route add -host 172.16.16.1 dev eth0 # /sbin/route add -host 172.16.16.20 dev eth0:0 # /sbin/route add -host 172.16.16.55 dev eth0:1 # /sbin/route add -host 172.16.16.201 dev eth0:2

53

Tambin debes agregar tu gateway predeterminada de forma usual: # /sbin/route add default gw 172.16.16.39 Esto tambin puede hacerse en los archivos de configuracin. En Debian, por ejemplo, se hara agregando una nueva interfaz en /etc/network/interfaces por cada una de las IPs que quieres crear un alias: iface eth0:0 inet static address 172.16.16.20 netmask 255.255.248.0 network 172.16.0.0 broadcast 172.16.23.255 Alternativamente, en sistemas Red Hat, se hace editando el archivo

/etc/sysconfig/network-scripts/ifcfg-eth0:0 (o cualquiera de los dispositivos en el que quieras crear un alias): DEVICE=eth0:0 BOOTPROTO=static IPADDR=172.16.16.20 NETMASK=255.255.248.0 ONBOOT=yes

Instalacin y configuracin de Secure Shell (SSH).

El Secure Shell debe ser configurado para permitir conexiones con llaves de tipo RSA (Rivest, Shamir y Adleman), entre todos los nodos que integran el cluster, con esto se cubre la necesidad de poner la clave de root o de algn otro usuario en el script de sincronizacin de datos.

54

A continuacin se presentan los archivos disponibles para la configuracin de OpenSSH, sin olvidar que tiene dos conjuntos diferentes de archivos de configuracin, uno para los programas cliente (SSH, SCP y SFTP) y otro para el demonio servidor (SSHD). La informacin de configuracin de SSH para todo el sistema se encuentra en el directorio /etc/SSH/:

Moduli.- Contiene grupos Diffie-Hellman (un protocolo que permite el intercambio secreto de claves entre dos integrantes que no haban tenido contacto nunca antes) usados para el intercambio de la clave Diffie-Hellman que es imprescindible para la construccin de una capa de transporte seguro. Cuando se intercambian las claves al inicio de una sesin SSH, se crea un valor secreto y compartido que no puede ser determinado por ninguna de las partes individualmente. Este valor se usa para proporcionar la autentificacin del host.

SSH_config.- El archivo de configuracin del sistema cliente SSH por defecto que se sobre escribe si hay alguno ya presente en el directorio principal del usuario (~/.ssh/config).

sshd_config.- El archivo de configuracin para el demonio sshd. ssh_host_dsa_key.- La clave privada DSA usada por el demonio sshd. ssh_host_dsa_key.pub.- La clave pblica DSA usada por el demonio sshd.

ssh_host_key.- La clave privada RSA usada por el demonio sshd para la versin 1 del protocolo SSH.

ssh_host_key.pub.- La clave pblica RSA usada por el demonio sshd para la versin 1 del protocolo SSH.

ssh_host_rsa_key.- La clave privada RSA usada por el demonio sshd para la versin 2 del protocolo SSH.

55

ssh_host_rsa_key.pub.- La clave pblica RSA usada por el demonio sshd para la versin 2 del protocolo SSH.

La informacin para la configuracin SSH especfica para el usuario est almacenada en el directorio principal ~/.ssh/:

authorized_keys.- Este archivo que contiene una lista de claves pblicas "autorizadas". Cuando un cliente se conecta al servidor, el servidor valida al cliente chequeando su clave pblica firmada almacenada dentro de este archivo.

id_dsa.- Contiene la clave privada DSA del usuario. id_dsa.pub.- Contiene la clave pblica DSA del usuario. id_rsa.- La clave RSA privada usada por ssh para la versin 2 del protocolo SSH.

id_rsa.pub.- La clave pblica RSA usada por ssh para la versin 2 del protocolo SSH.

Identity.- La clave privada RSA usada por ssh para la versin 1 del protocolo SSH.

identity.pub.- La clave pblica RSA usada por ssh para la versin 1 del protocolo SSH.

known_hosts.- Este archivo contiene las claves de host DSA de los servidores SSH accesados por el usuario. Este archivo es muy importante para asegurarse de que el cliente SHH est conectado al servidor SSH correcto.

56

Instalacin

configuracin propuestas en

de

algunas uno

de de

las los

herramientas nodos que

anteriormente

cada

complementan el cluster (Heartbeat, Kimberlite, Piranha o IP Virtual Linux Server).-

Se mencionarn a continuacin como se configura cada una de las herramientas mencionadas.

o Heartbeat.

Solamente hay tres archivos que tenemos que configurar para poner en marcha nuestro cluster: authkeys, ha.conf y haresources (podemos copiarlos de /usr/share/doc/packages/heartbeat).

Configuracin de /etc/ha.d/authkeys.- En este archivo se configura las llaves de autenticacin para el cluster, que deben ser las mismas para los nodos. Se pueden usar tres tipos distintos: crc, md5, or sha1, dependiendo de la seguridad que necesites. El archivo de ejemplo podra ser:

# use md5 with key "mycluster" auth 3 3 md5 mycluster

Configurando /etc/ha.d/ha.cf.- En este archivo se definen los nodos del cluster y los interfaces que el heartbeat usa para verificar si un sistema esta 'levantado' o 'cado'. Por ejemplo:

# definicin de nodos del cluster node nodo1 node nodo2

57

# tiempo en segundos en el que se considera un sistema como 'muerto' si no responde deadtime 5 # Configuracin del puerto serie para el heartbeat serial /dev/ttyS0 baud 19200 # interfaz de red para el heartbeat udp eth1 # interfaz de red para el heartbeat udp eth1

Configurando /etc/ha.d/haresources.- En este archivo vamos a definir los Logical Host, como ejemplo, diremos que hay dos servidores en activo/activo y cada uno de estos servidores es mster de un servicio. Por tanto el archivo /etc/ha.d/haresources ser:

nodo1 192.168.0.11 httpd nodo2 192.168.0.12 httpd

Donde se indica en el primer campo el nodo que es master, la IP de cada servicio y el servicio asociado a esta IP.

Nota: Si solo definimos un Logical Host estaremos creando un nodo activo/pasivo.

58

o Kimberlite.-

La mejor manera de instalar el software Kimberlite es compilndolo desde el cdigo fuente original. Para ello nos descargamos el fichero kimberlite-2.0.0.tar.gz de la pgina web de Mission Critical Linux, y lo compilamos e instalamos (en ambas mquinas del cluster) utilizando el conocido procedimiento:

./configure make make install Este procedimiento nos instala el software bajo el directorio /opt/cluster, y los ficheros de configuracin bajo /etc/opt/cluster. Como es habitual, si queremos cambiar el directorio de destino del software, en lugar de la orden configure, deberemos utilizar: ./configure -prefix=/otro/directorio

Una vez compilado e instalado el software, tenemos que crear un nuevo grupo de usuarios llamado cluster, y hacer que todos los ficheros y subdirectorios que cuelgan de /opt/cluster pertenezcan a este nuevo grupo. Por ejemplo ejecutar:

chgrp -R cluster /opt/cluster

A continuacin tenemos que configurar correctamente en ambas mquinas el software recin instalado. La configuracin de Kimberlite reside en el fichero /etc/opt/cluster/cluster.conf, sin embargo, se desaconseja editar a mano este fichero. El problema reside en que ambos equipos han de estar configurados exactamente de la misma manera, y que una copia de dicha configuracin ha de ser almacenada en las particiones de qurum.
59

Para simplificar el proceso de configuracin, Kimberlite nos proporciona la utilidad member_config, residente en el directorio /opt/cluster/bin. Esta utilidad nos har algunas preguntas sobre cmo queremos configurar nuestro cluster, y realizar la configuracin por nosotros. Conviene tener preparada la informacin que se nos solicita antes de ejecutar la utilidad. La informacin solicitada es: hostname y direccin IP de ambos equipos del cluster, dispositivos raw asociados a las particiones de qurum, nmero de canales de latido utilizados y tipo (Ethernet o serie), y puerto serie asociado al power switch (en caso de existir). Cuando hayamos terminado de configurar el software, slo nos queda inicializar las particiones de qurum. Para ello utilizamos la orden diskutil -I. Y una vez inicializadas las particiones, podemos arrancar el software de cluster. El procedimiento de configuracin descrito en los prrafos anteriores puede resultar un poco confuso, sobre todo la primera vez que se realiza. Por ello, para simplificar la tarea del administrador de sistemas, se propone seguir el siguiente procedimiento paso a paso: En el servidor 1:

Ejecutar la utilidad member_config y responder a las preguntas que nos haga,

Inicializar la particin de qurum, diskutil -I Comprobar que la particin ha sido inicializada correctamente, diskutil t, diskutil -p

Arrancar los servicios de cluster, service cluster start

En el servidor 2:

Ejecutar el la utilidad member_config indicndole que lea la configuracin ya existente en la particin de qurum, member_config -init=/dev/raw/raw1

Arrancar los servicios de cluster, service cluster start

60

Para comprobar que los servicios de cluster estn funcionando correctamente, podemos ejecutar la orden clustat -i 2, que nos mostrar en pantalla, cada 2 segundos, el estado de nuestro cluster. o Piranha.INSTALACIN DEL PAQUETE PIRAHNA o Instalacin del paquete de dependencia ipvsadm.rpm o [root@localhost root]# rpm -ivh ipvsadm-1.21-4.i386.rpm o Preparing... ### [100%] o 1:ipvsadm #################### [100%]

o Instalacin del paquete piranha.rpm o [root@localhost root]# rpm -ivh piranha-0.7.6-1.i386.rpm o Preparing... ########################################### [100%] o 1:piranha [100%] ###########################################

o Para buscar donde est el servicio de piranha: rpm -ql piranha o [root@ localhost root]# rpm -ql piranha o /etc/rc.d/init.d/piranha-gui

o Levantar el servicio de piranha o [root@ localhost root ]# service piranha-gui start o Starting piranha-gui: [ OK ]

61

o Para buscar puertos. o El piranha por defecto se levanta en el puerto 3636. o [root@ localhost root ]# netstat -nat o Active Internet connections (servers and established) o Proto Recv-Q Send-Q Local Address Foreign Address State o tcp 0 0 0.0.0.0:3636 0.0.0.0:* LISTEN

o Levantar el servicio FTP o [root@ localhost root]# service vsftpd start o Iniciando vsftpd para vsftpd: [ OK ] o Guardar archivos en el servidor FTP o [root@localhost root]# cd /var/ftp/pub o [root@localhost pub]# ls o 01 Suelta mi mano.mp3 drivs.zip piranha-0.7.6-1.i386.rpm o avseq01.dat GAVirusParteII.mpg prueba o Configuracin Piranha mpegav o Documentacin nfs-utils-1.0.6-31EL.i386.rpm

Instalacin y configuracin de las aplicaciones que brindarn servicios en cada uno de los nodos componentes del cluster. Sincronizacin de los usuarios Unix, en todos los componentes del cluster. Implementar un script que se encargue de sincronizar todos los datos de las aplicaciones entre todos los nodos del cluster.

62

3.1.

Modelos y arquitecturas

En captulos anteriores se mencion que existe una clasificacin de arquitecturas de computadoras propuesta por Flynn, la cual divide a las computadoras segn el nmero de instrucciones y de la secuencia de datos que la computadora utiliza para procesar informacin. Esta clasificacin a manera de recapitulacin (sin ir a fondo) es. SISD.- Single Instruction Single Data SIMD.- Single Instruction Multiple Data MIMD.- Multiple Instruction Multiple Data MISD.- Multiple Instruction Single Data Por otro lado es importante mencionar los modelos de clsteres existentes y estos son. NUMA (Non-Uniform Memory Access). MPI (Message Passing Interface). PVM (Parallel Virtual Machine). Beowulf.

63

3.2.

Software de paralelizacin

Para hablar de un software de paralelizacin, primero hay que definir el significado de paralelizacin en el rea de la computacin, y esto es, hacer los problemas ms sencillos y distribuirlos entre varios procesadores, sin embargo esta solucin no es siempre conveniente y depender en gran medida de la misma naturaleza de los problemas que se quieran tratar de resolver.

Se tratar la programacin paralela en esta seccin y los posibles problemas que pueden surgir al utilizar la misma, es por esto que es importante considerar el sistema operativo sobre el cual se trabajar as como tambin el considerar si se trata de un multiprocesador o un multicomputador, como lo es en este trabajo. Al explicar los limites que establece la misma arquitectura de las maquinas sobre las cuales se trabajarn se debe hablar sobre la Ley de Ahmdal y de otros problemas relacionados con la ordenacin de instrucciones debido a las dependencias existentes.

Se darn ejemplos de programacin con OpenMosix y explicaciones con PVM o MPI y se explicar a detalle conceptos bsicos en paralelizacin como granularidad de paralelismo o el problema de la transparencia en lo referente a la programacin. Ley de Ahmdal. Jos Luis Bosques la define como: Si la fraccin serie de un programa es s el speedup mximo que se puede alcanzar es 1/s.

Speedup= s

+ p = 1 ____ = 1 s + p/N s

s + p/N

64

Limites en el hardware.

En lo referente a la aplicacin de programas paralelos en maquinas de tipo de Multiprocesamiento Simtrico (SMP), debemos tener en cuenta el modo de ejecucin de las instrucciones. En la actualidad la mayora de los ordenadores comerciales son los conocidos como ordenadores superescalares los cuales mandan varias instrucciones al mismo tiempo aprovechando de esta manera una divisin por fases., esta divisin se genera a partir del principio de que cada fase requiere de una parte especifica del hardware del procesador para completarse. De esta manera se logra el mayor aprovechamiento de los componentes del procesador pues se usan de manera cclica.

Para lograr la divisin por fases es necesario solucionar de la manera ms adecuada los retardos posibles por dependencias de datos entre instrucciones, esto quiere decir que existe una dependencia de datos cuando la ejecucin de dos o ms instrucciones dependen de los parmetros de entrada o salida de otras instrucciones. Generalmente la solucin es hacer un renombramiento de registros lanzamiento de instrucciones fuera de orden, unidades superescalares y supervectoriales, entre otros. Granularidad ensamblador).

del

hardware

(Instruccin

maquina

lenguaje

Existen gran variedad de mejoras de rendimiento a los lmites que se imponen por el programa, estas mejoras se van incorporando en los procesadores de ltima generacin. El problema es que esta solucin puede resultar en muchos casos demasiado cara, sobre todo por la dificultad o tiempos de implementacin. Adems siempre se necesita cierta ayuda de parte del software, principalmente el compilador.

65

Limites del Software. Kris Buytaert (2006), menciona que la ley de Ahmdal pone lmites en lo que se refiere al incremento del rendimiento de cualquier sistema en el que se utilicen fragmentos de cdigo no paralelizable, es decir, de todos los sistemas que actualmente se conocen. Una vez asumida dicha limitacin, no queda ms opcin que optimizar los programas para que el rendimiento de los mismos en el sistema sea el mejor posible. Esto a menudo implica aadir una fase ms en la vida de nuestros programas. As pues a las fases de anlisis, diseo e implementacin hay que aadir una fase de paralelizacin, en la que se deber tener en cuenta las necesidades del programa y del problema a resolver, as como de los medios de los que se disponen para poder hacer que el programa aumente el rendimiento a medida que aumenta la capacidad de procesamiento de sistema. As pues a las fases de anlisis, diseo e implementacin hay que aadir una fase de paralelizacin, en la que se deber tener en cuenta las necesidades del programa y del problema a resolver, as como de los medios de los que se disponen para poder hacer que el programa aumente el rendimiento a medida que aumenta la capacidad de procesamiento de sistema. Granularidad del paralelismo. La granularidad del paralelismo de un sistema se encuentra al paralelizar cdigos de procesos, rutinas, mdulos o bucles a nivel de instruccin. El trmino granularidad se usa como el mnimo componente del sistema que puede ser preparado para ejecutarse de manera paralela (Buytaert, 2006).

66

Existe una clasificacin de los sistemas paralelizados dependiendo el grado de granularidad de estos, de esta manera se pueden identificar.o Sistemas de granularidad fina. Aqu podemos encontrar los bucles y las sentencias. Generalmente se realiza a nivel de ensamblador y son explotados por sistemas y hardwares caros con nodos o procesadores con un fuerte acoplamiento. Este tipo de granularidad es la ms pequea y basa casi todo su funcionamiento en propiedades que brinda el hardware, es decir el hardware puede ser inteligente y puede permitir al programador ahorrar tiempo en el reordenamiento de instrucciones. o Sistemas de granularidad media. Se dirige sobre todo a mdulos, rutinas y tareas o procesos. Dentro de estos sistemas se incluyen el Remote Procedure Call (llamada a procedimiento

remoto, RPC), OpenMosix, entre otros. El paralelismo de granularidad media es explotado por el programador o el compilador. Dentro de este tipo de granularidad se encuentran tambin diversas libreras como el PVM o MPI. El hardware comnmente se prepara de igual manera para aprovechar este tipo de paralelismo, por mencionar un ejemplo, los procesadores pueden disponer de instrucciones especiales para ayudar en el cambio de una tarea a otra que realiza el sistema operativo. o Sistemas de granularidad gruesa. Va dirigido a trabajos o programas y a mdulos o procesos. Este es el tipo de paralelismo que explota el programador mediante programas que no tienen porque requerir el uso de ninguna librera externa, sino nicamente el uso de conocimientos de programacin para paralelizar un algoritmo. Se basa principalmente en cualquier tipo de medio que use el programador para la creacin de un programa, que solucione de manera paralela un problema, sin
67

tener que hacer uso de otras herramientas ms que nicamente su habilidad de programador y de un buen algoritmo. Estos sistemas son los ms limitados al carecer de mtodos especficos para la comunicacin entre nodos o procesadores y se da generalmente en sistemas de dbil acoplamiento. Problema de transparencia. Este es uno de los mayores problemas existentes en programas que utilizan la paralelizacin. Al tiempo de crear un programa que resuelva un problema mediante el uso de un algoritmo que explote de alguna manera la paralelizacin hay que conocer el sistema que se ejecutar. Dependiendo del sistema que se elija para su paralelizacin y teniendo en cuenta que por regla general se paralelizan las tareas, procesos, procedimientos, rutinas o componentes distribuidos que realizan este trabajo, existen dos modelos de implementacin.o Modelo de programacin explicita. Este es el tipo de modelo que utiliza RPC, MPI o PVM, para el cual se requiere una biblioteca de funciones especiales que se encargan tanto de realizar la comunicacin como los mtodos de migracin y dems factores que en un principio no debe afectar al programador.

En este modelo el programador debe contar con un conocimiento especial de las bibliotecas, esto limita la velocidad de desarrollo de un software. o Modelo de programacin implcita.

Este tipo de programacin basa su funcionamiento en que el programador conozca lo mnimo del sistema para paralelizar los procesos. Generalmente este sistema es utilizado por los compiladores especiales de un sistema particular.

68

Un caso especial de este tipo de programacin es el OpenMosix, donde la programacin y la migracin de procesos no requieren de conocimiento del usuario respecto al cluster de mquinas. Lo recomendable para lograr una

transparencia en la programacin ser programas de manera completamente implcita y que al mismo tiempo el sistema implantado sea lo menos intrusivo posible en lo referente al comportamiento son el usuario final.

As pues, para que un programa sea realmente transparente y al mismo tiempo eficiente, en lo referente a programacin paralela, el programador debe conocer a fondo la programacin del sistema. Por otro lado, el compilador o el sistema mismo se deben encargar de efectuar todas las tareas que de manera habitual se hacen en los sistemas que actualmente existen, es decir, la comunicacin entre los procesos del sistema, su localizacin, rutinas o tareas, la paralelizacin del cdigo del programa, entre otras tareas, de esta manera el programador no tendr que preocuparse de los detalles y se vera reflejado en desarrollos ms rpidos y econmicos.

De esta manera, el primer paso para el desarrollo de un programa paralelizado es, plantear el problema mediante tcnicas de divide y vencers, se debe localizar lo paralelizable en el problema de una manera abstracta antes de pensar en la paralelizacin del cdigo.

Existen dos formas conocidas y fciles para comprender el paralelismo.-

1. El paralelismo funcional divide las aplicaciones en funciones.

Es posible verlo como el paralelismo del cdigo. Es decir, se puede dividir en entrada, preparacin del problema, preparacin de la salida, salida y mostrar la solucin. Esto permite a los nodos componentes del cluster producir una cadena, se puede comparar con la segmentacin en funciones de un procesador.

69

En este tipo de paralelismo sigue la idea anterior pero a un nivel de software, se dividen los procesos formando una cadena y dependiendo uno del siguiente. Sin embrago, este tipo de paralelizacin no es muy comnmente utilizada ya que es muy difcil dividir el problema en funciones que tarden el mismo tiempo en ejecutarse.

2. El paralelismo de datos se basa en dividir los datos que se tienen que procesar.

Por lo general los procesos que utilizan estos datos son idnticos entre s y nicamente lo que hacen es dividir la cantidad de informacin entre los nodos y procesarla en forma paralela. Esta tcnica es la ms utilizada debido a su sencillez. Kris Buytaert (2006) menciona como ejemplo los films //Final Fantasy// o //El seor de los anillos// que fueron renderizadas en un cluster de renderizacin con el software Maya y Renderman. Esta forma de renderizar se basa en dividir los frames (cuadros) que se deban renderizar en una escena en concreto o todos los frames de la pelcula entre todos los ordenadores. Para ser ms exactos, primero se divide el nmero de frames por el nmero de nodos y se enva el nmero resultante de frames a cada nodo (suponiendo que es un cluster donde todos los nodos tienen la misma capacidad de proceso). Esta es la fase de preparacin y suele ser secuencial, puesto que es una pequea parte de la produccin. Una vez hecho esto, cada nodo renderiza los frames que le fueron asignados. Esta fase puede durar semanas. Una vez se tienen todos los frames se unen en un fichero nico que tiene toda la pelcula. En este caso en particular se usa paralelismo de datos, y aunque algunas imgenes tardan ms en renderizarse que otras y por lo tanto algn nodo tardar menos en acabar su trabajo que otro, lo que se hace es no elegir imgenes de forma secuencial (de la 1 a la ##n## al nodo 1) sino paralela (1 al nodo 1, 2 al nodo 2... n+1 al nodo n+1) esto suele compensar la carga entre los nodos por lo que ms o menos
70

todos los nodos se mantienen en el mximo rendimiento (si no se comprende esto, piense en lo poco que tardara el nodo que renderize unos ttulos de crdito simples). Una vez analizada la fuente de paralelismo de un programa se procede a realizar el estudio en pseudocdigo o cualquier otro sistema parecido. Se deben conocer los lmites y las caractersticas del sistema para el que va a programarse. Es importante sealar que un programa paralelizado no debe tener menos tasa de eficiencia que un programa secuencial, sin embargo, que esto suceda es casi imposible debido a transferencias de comunicacin entre los procesos, los mdulos, nodos o elementos del cluster. La paralelizacin del software se basa en principios relacionados son la manera de programar que se usa actualmente por arquitectura de los computadores, funcionamiento de compiladores y tambin por lenguajes de programacin. Uno de estos principios generales es el denominado principio de localidad, del cual existen dos tipos. Localizacin temporal.- Se basa en la manera en la que se puede encontrar el cdigo de los programas y como se ejecutan en el tiempo. Por lo general, los programas estn compuestos por una gran cantidad de estructuras en forma de bucle que ejecutan instrucciones, esto implica que con tener en memoria estos bucles, se tiene acceso a la mayor parte del programa. Por otro lado, usualmente, los procedimientos o funciones que estn relacionadas se localizan en zonas de memoria adyacentes, as como las instrucciones que se ejecutan secuencialmente.

71

Localizacin espacial.- Basada en la manera en la que los programadores organizan datos en estructuras, objetos, matrices, vectores. Esta manera de organizar los elementos de los programas que estn muy relacionados entre s hace que al momento de solicitar memoria para los mismos, stos sean alojados en segmentos contiguos de memoria. Cuando en un programa se pide memoria, se intenta obtener de una sola vez toda la memoria que vayan a usar la mayor parte de datos posible, para no tener que estar pidiendo memoria continuamente. Esto produce esta localidad.

Al paralelizar programas se obtiene como ventaja un incremento del rendimiento. Este incremento puede ser un decremento si se comunican continuamente los procesos a travs de una red, lo que generalmente suele ser el cuello de botella del sistema. Es por esto que los elementos de procesos a paralelizar deben ser lo ms independientes y ortogonales posibles (Buytaert, 2006).

En el caso de este trabajo, que es la programacin de un cluster se le llamar elementos de procesos a los mdulos, procesos, rutinas o procedimientos que se consolidan como unidades de proceso a ejecutar en los nodos.

Como ya se mencion los elementos de proceso deben ser ortogonales entre s. El problema que invalida generalmente la ortogonalidad de estos elementos, es la dependencia de datos. Cuando surgen dependencias, ya sea de datos o de control, el programa o sistema deja de ser paralelizable y pasa a ser secuencial, se necesita interconectar generalmente los elementos para obtener sus resultados o para obtener sus estados y poder continuar el programa, esto requiere comunicacin a travs de la red, lo que puede llegar a ser bastante costoso.

72

3.3.

Estructura de un clster.

A continuacin se presentar un ejemplo de cmo est estructurado un cluster sobre una plataforma Linux, para ser ms objetivos se dar un vistazo al cluster OpenMosix de Linux, este ejemplo fue tomado del Instituto de Ingeniera de la UNAM y fue desarrollado por Jos Castillo Castillo. Hardware Nodo maestro: Este nodo se eligi por tener el mejor procesador de las computadoras disponibles, tomando en cuenta que los dems fueran de la misma arquitectura. Las principales caractersticas son.

Procesador.-

Intel(R) Pentium (R) 4. Velocidad del procesador (Processor Speed) 2.8 GHz. Cache Nivel 2 (L2) de 512 KB.

Memoria (RAM).-

512 MB DDR 400 MHz.

Disco Duro (Hard Disk).-

Segate ST31200022A 120 GB, IDE de 7,200 rpm.

Tarjeta Madre (Motherboard).-

Intel Corporation D865GLC. Velocidad del Bus (System Bus Speed) 800 MHz. Velocidad de la memoria (System Memory Speed) 400 MHz.

73

Tarjeta de red.-

Intel (R) Pro/100 Network Conecction. Fast Ethernet. Nodos esclavos: Los tres nodos esclavos son casi idnticos al nodo principal, la nica diferencia radica en la velocidad del procesador que es menor a la del nodo maestro. Las principales caractersticas de estos nodos son:

Procesador.-

Intel(R) Pentium (R) 4. Velocidad del procesador (Processor Speed) 2.4 GHz. Cache Nivel 2 (L2) de 512 KB.

Memoria (RAM).-

512 MB DDR 400 MHz.

Disco Duro (Hard Disk).-

Segate ST38001A 80 GB, IDE de 7,200 rpm.

Tarjeta Madre (Motherboard).-

Intel Corporation D865GBF. Velocidad del Bus (System Bus Speed) 800 MHz. Velocidad de la memoria (System Memory Speed) 400 MHz.

Tarjeta de red.-

Intel (R) Pro/100 Network Conecction Fast Ethernet

74

Software Sistema Operativo: Suse 9.0 con kernel OpenMosix 2.4.24.- Distribucin de Linux que soporta versiones de kernels 2.4.x compatible con OpenMosix, adems de ser la distribucin que se utiliza para servidores y estaciones de trabajo de los usuarios en el Instituto de Ingeniera de la UNAM. Sistema de archivos: Reiserf.- Sistema de archivo utilizado para las particiones Linux, que al igual que el sistema de archivos ext3, incluye la caracterstica de journaling que previene el riesgo corrupciones del sistema de archivos y es de los ms utilizados por presentar mejor desempeo en el manejo de archivos. Mosix File System (MFS).- Necesario en OpenMosix para proveer de acceso al sistema de archivos remotos y que ayuda a mantener la consistencia de cache.

Herramientas de administracin

User Lan Tools.- Las herramientas de rea de usuario son lo mnimo que necesita cualquier administrador o usuario de OpenMosix para el manejo de los procesos.

OpenMosixView.- Aplicacin grfica de monitoreo de OpenMosix, con ella puede realizarse parte de las tareas comunes que se haran con los comandos de las User Lan Tools.

75

Topologa La topologa de red utilizada es la estrella, se caracteriza por tener todos sus nodos conectados a un controlador central, en este caso, un switch de 48 nodos de los cuales 4 nodos pertenecen al cluster. Todas las comunicaciones pasan a travs del switch, siendo ste el encargado de controlarlas. Por este motivo, el fallo de un nodo en particular es fcil de detectar y no daa el resto de la red, pero un fallo en el controlador central desactiva la red completa. Switch El switch es marca 3Com SuperStack 3, serie 4400. Una caracterstica importante es que soporta telefona sobre IP y tiene rendimiento de ancho de banda de 13.6 Gbps (forwarding bandwidth) y 10.1 millones de paquetes por segundo. El switch es de 48 nodos y tambin soporta trfico de telefona o tambin llamado VoIP, tecnologa con que cuenta el Instituto de Ingeniera, a la cual se le da mayor prioridad cuando es necesario. Los equipos conectados a este switch se conectan a una velocidad auto negociable de 10Base-T/100Base-TX, segn la tarjeta de red. Cuenta con un puerto Gigabit 1000 Base SX para salir a otro equipo: 3Com 7700, que es el que provee de red ethernet a la Torre de Ingeniera, donde se encuentra fsicamente el cluster, como lo muestra la figura 4.

76

Figura4.- Diagrama del cluster *Fuente.- *Fuente.- Estructuracin de un clster Beowulf.

Cable El cable con el que estn conectados los nodos del cluster al switch que los une, es estructurado de la marca Kron categora 6, para velocidades de transmisin de datos Ethernet 10/100/1000.

77

Tarjetas de red Las tarjetas de red con que cuenta cada nodo, son las especificadas anteriormente, todas estas marca Intel, e integradas a las tarjetas madre. El ejemplo anterior nos da una clara visin de cmo es la estructura de un cluster, sus componentes, tambin las caractersticas con las que cuentan los componentes de este cluster pueden considerarse como las caractersticas con las que deben contar los clsteres a implementarse. Da una idea del tipo de conexin que puede realizarse en un cluster (en el ejemplo anterior se utilizo el tipo estrella), y los tipos de cableados necesarios para realizar esta conexin as como las velocidades necesarias para la misma.

3.4.

Configuracin de un clster tipo Beowulf

La propuesta de implementacin del clster para computo de alto rendimiento que en este trabajo se promueve, es la realizacin de un cluster Beowulf, debemos especificar que un Beowulf es una clase de computador paralelo de altas prestaciones como ya se mencion anteriormente, est construido principalmente a base de una red de computadoras con un hardware estndar. Cabe sealar que ejecuta un sistema operativo de distribucin libre como lo es Linux o FreeBSD, as mismo esta interconectado por una red privada de alta velocidad. Por lo general su objetivo es la ejecucin de tareas que requieren de una gran capacidad de clculo. En este tipo de sistema, sus componentes o nodos no se encuentran en los puestos de trabajo de los usuarios al contrario de Google que est compuesto por todas las computadoras de escritorio o Laptops que utilizan los usuarios para realizar sus bsquedas y compartir informacin, sino que por el contrario, estn totalmente dedicados a las tareas asignadas al cluster, teniendo contacto con el exterior un nico nodo o componente.

78

La configuracin de este tipo de cluster principalmente se basa en una comunicacin mediante una red de interconexin, para ello existen dos tipos de red disponibles. El primero, es un Hub Ethernet que es un dispositivo de red que acta como un bus broadcast, donde una seal de entrada se amplifica y se distribuye a todos los puertos, sin embargo hay que mencionar sus desventajas. La principal es que solo se pueden comunicar un par de computadoras correctamente al mismo tiempo, es decir, si dos o ms computadoras envan paquetes de informacin al mismo tiempo se producir una colisin, lo que provoca que el objetivo del cluster no pueda cumplirse.

En segundo lugar est el Switch Ethernet (que es en el que nos enfocaremos para utilizarlo como conexin entre los nodos que componen el cluster), este tipo de Switch ofrece ms ancho de banda acumulado, lo que permite mltiples comunicaciones al mismo tiempo, si no existen problemas en los puertos de salida del switch Ethernet se podrn enviar varios paquetes de informacin

simultneamente, este tipo de conexin es la que se utilizar para la implementacin de este cluster ya que se pretende trabajar con un mnimo de 10 computadoras marca HP del centro de cmputo de la Facultad de Sistemas Computacionales Administrativos de la Universidad Veracruzana.

A continuacin se describirn los componentes de hardware y software de un cluster Beowulf. Hardware.Este tipo de cluster basa su arquitectura en multicomputadores que pueden ser usados para la computacin paralela. Este sistema consiste de un nodo maestro y uno o ms nodos esclavos conectados a travs de una red Ethernet como ya se mencion anteriormente. Se construye con componentes de hardware comunes en el mercado como las PC que se encuentran en el centro de cmputo de esta facultad, capaces de soportar y ejecutar sistema operativo Linux.

79

El nodo maestro o principal controla a todo el cluster y brinda los servicios de sistemas de archivos a los nodos esclavos, de igual manera es la consola del cluster y la conexin al exterior del mismo. Las mquinas grandes de Beowulf pueden tener ms de un nodo maestro, y dems nodos dedicados a diversas tareas especficas como consolas o estaciones de supervisin. Por lo general los nodos esclavos de un sistema de este tipo son estaciones simples, esto es, que son configurados y controlados por el nodo maestro y realizan nicamente las tareas que este nodo les indique. Inclusive, en una configuracin de nodos esclavos sin disco duro, estos nodos no saben su direccin IP sino hasta que el mismo nodo maestro se los indica.

La figura 5 muestra grficamente la arquitectura de un cluster Beowulf.

Figura 5.- Arquitectura de un Cluster Beowulf. *Fuente.- Estructuracin de un clster Beowulf.

80

Existen dos tipos de configuraciones de hardware utilizadas para la construccin de este tipo de cluster, estos son, los arreglos de discos o RAID (Arreglo

Redundante de Discos No Expandibles), esta ltima opcin indica que un arreglo es construido a partir de discos de mediana capacidad que son comunes en el mercado.

La mayora de las veces los dispositivos usados para construir un arreglo RAID son particiones elaboradas sobre la agrupacin de varios discos. Por lo general las particiones que forman parte del RAID se encuentran en diferentes discos.

Dependiendo de las caractersticas del RAID se pueden clasificar los arreglos por niveles o modos, los cuales son.o Modo Lineal.-

Se refiere a la combinacin de dos o ms discos, para conformar un disco fsico, es decir, los discos son concatenados para crear un disco con mayor capacidad, sin embargo, al escribir en el arreglo, primero se llena el primer disco, despus el segundo y as sucesivamente, en forma lineal. o Modo RAID-0.-

Tambin se le conoce como modo stripe. Este modo es muy similar al anterior, pero no es una concatenacin de discos, ms bien se trata de un balance de carga I/O entre los discos, esto proporciona un alto rendimiento. Es por esto que este modo es una buena opcin cuando lo deseado es una mayor velocidad de lectura y escritura.

81

o Modo RAID-1.-

Aqu, se presenta una redundancia de datos, es decir, toda la informacin es duplicada en todos los dispositivos que componen el RAID, por lo tanto la capacidad del arreglo es igual a la capacidad del disco con menor capacidad de memoria. o Modo RAID-4.-

En este nivel, un solo disco es el encargado de almacenar informacin de paridad y escribir los datos en otro disco. o Modo RAID-5.-

Este nivel es muy similar al anterior, sin embargo, aqu el almacenamiento de la paridad se realiza de forma distribuida, es decir que la informacin de la paridad es almacenada entre los dispositivos que forman parte del arreglo.

Por todo lo anterior, y como ya lo hemos visto a lo largo de este trabajo, se recomienda que los dispositivos que formarn parte del arreglo sean de la misma capacidad, es decir, que exista heterogeneidad. Software.-

Este tipo de cluster, como ya se mencion anteriormente, utiliza como sistema operativo cualquier distribucin Linux, asimismo, utiliza bibliotecas de pase de mensajes como la PVM o MPI. En un principio, Beowulf utilizaba la distribucin Linux Slackware, sin embargo, actualmente la mayora de los cluster han migrado a la distribucin RedHat por la facilidad de administracin del sistema.

82

Una de las alternativas para el manejo de los recursos de Beowulf es MOSIX, su uso en un cluster de PC provoca que los nodos funcionen como partes de un solo computador. El principal objetivo de esta herramienta es la distribucin de la carga generada por las aplicaciones secuenciales o paralelizadas.

Es importante de igual manera mencionar la clasificacin de este tipo de cluster. Clase I.-

Estos sistemas se componen por maquinas cuyos componentes cumplen con la prueba de certificacin Computer Sopper lo que significa que sus elementos son de uso comn y pueden ser adquiridos en cualquier tienda distribuidora. Es por esto que este tipo de clsteres son estn diseados para ningn uso ni requerimientos en especial. Clase II.-

Son sistemas compuestos por mquinas cuyos componentes no pasan la prueba de certificacin "Computer Shopper" lo que significa que sus componentes no son de uso comn y por tanto no pueden encontrarse con la misma facilidad que los componentes de sistemas de la clase anterior. De tal manera, pueden estar diseados para algn uso o requerimiento en particular. Las mquinas ubicadas en esta categora pueden presentar un nivel de prestaciones superior a las de la clase I. Elementos de un cluster Beowulf. Al instante de la construccin del cluster es necesario tomar en cuenta diversos factores que influyen en el diseo del mismo y para la toma de decisiones que contribuyan al mejor desempeo del mismo.

83

Se deben estudiar en este momento elementos como.o Disco.-

Existen mtodos muy diversos para la configuracin de los medios de almacenamiento de un cluster Beowulf, dichos medios difieren en precio, rendimiento y facilidades de administracin. Clientes sin disco (Disk-less).-

Es importante sealar que los nodos esclavos o componentes el sistema no poseen un disco duro interno, tomando los sistemas de archivos a travs de la red. Es el nodo maestro quien proporciona a travs de NFS (Network File System, es un protocolo de nivel de aplicacin, segn el modelo OSI. Es utilizado para sistemas de archivos distribuidos en un entorno de red de computadoras de rea local) los sistemas de archivos para los nodos esclavos.

La principal ventaja que tiene este tipo de configuracin es la facilidad en la administracin del cluster ya que al integrar un nuevo nodo solo se deben modificar ciertos archivos en el servidor y proporciona de igual manera un alto nivel de escalabilidad.

Sin embargo la principal desventaja de tener clientes o nodos esclavos sin disco duro es que el trfico NFS se incrementa y dependiendo de la red instalada en el cluster esta puede ser una configuracin poco adecuada para el cluster.

84

Instalacin local completa en los clientes.-

En este caso, todo el software, es decir, tanto el sistema operativo como las aplicaciones, son instaladas en los discos internos de cada nodo cliente o esclavo. Esta configuracin el trfico NFS desaparece por completo para obtener el sistema operativo o cualquier otra aplicacin por parte de los nodos esclavos. Instalacin NFS Estndar.-

Esta configuracin es el punto medio entre las dos configuraciones anteriores. El sistema operativo esta en los discos internos de los nodos esclavos y estos obtienen los directorios hogar de los usuarios y los sistemas de archivos que contienen las aplicaciones, a travs de NFS, desde el nodo maestro. Sistemas de archivos distribuidos.-

Estos sistemas son aquellos que son compartidos por todos los nodos, es decir, cada nodo posee una parte del sistema de archivos lo que incrementa la velocidad en los accesos a la informacin ya que existe la presencia de ms de un dispositivo fsico para el manejo de los datos. Sin embargo, este tipo de configuracin est a prueba aun y es por ello que no es muy recomendable su uso. o Memoria.-

Para elegir la cantidad de memoria necesaria para el cluster nos debemos basar en dos factores primordiales. El recurso econmico con el que contamos Los requerimientos de memoria de las aplicaciones que se ejecutarn en el cluster.

85

La principal razn para contar con una memoria de gran tamao es el evitar que las aplicaciones necesiten de reas de swap para continuar ejecutndose normalmente. El poder intercambiar localidades de memoria hacia el rea de swap reduce de manera considerable el rendimiento de los programas. Se debe tomar en cuenta que en la configuracin para un cluster disk-less no es posible contar con particiones destinadas para la memoria virtual debido a la ausencia de discos locales, esto, provoca que sea una razn importante por la cual instalar memoria RAM suficiente.

Por otro lado es importante mencionar que la velocidad de la memoria es de vital importancia ya que si se cuenta con una memoria de acceso lenta se pueden provocar cuellos de botella al momento de ejecutar aplicaciones con altas exigencias de memoria. o Procesador.-

Por lo general los clsteres son construidos con procesadores Alpha o Intel x86. El uso de otro tipo de procesador tambin est permitido, sin embargo, no se consideran de uso comn, ya que se elimina de esta manera una de las principales caractersticas de Beowulf, la cual es el uso de componentes comunes lo que permite reemplazar fcilmente y de manera econmica cualquier componente del sistema. o Simetric MultiProcessor (SMP).-

Las maquinas con ms de un procesador son usadas de manera comn en clsteres Beowulf ya que proporcionan una gran capacidad de prestaciones. Una de las principales ventajas en el uso de SMP, adems del incremento de poder, es la gran reduccin de tarjetas de red y del trfico en la red.

86

Ya que SMP comparte totalmente la memoria RAM, tiene nicamente un espacio de memoria, esto simplifica tanto el sistema fsico como la programacin de aplicaciones. Este espacio de memoria nico existente permite que un sistema operativo con multiconexin distribuya las tareas entre varios procesadores, o permite que una aplicacin obtenga la memoria necesaria para una simulacin compleja. Es importante tambin mencionar que la memoria globalmente compartida tambin vuelve fcil la sincronizacin de los datos.

En la figura 6 se muestra la estructura de SMP.

Figura 6.- Estructura de SMP *Fuente.- Estructuracin de un clster Beowulf.

87

o Massively Parallel Procesing (MPP).-

Este se considera otro diseo de procesamiento paralelo. Este diseo evita los cuellos de botella en el bus de la memoria, no usando memoria compartida, en cambio utiliza la distribucin de la memoria RAM entre todos los procesadores, de esta manera se asemeja a una red de procesamiento distribuido. La figura 7 muestra la estructura de un MPP.

Los procesadores utilizan un esquema de paso de mensajes anlogo a los paquetes de datos en redes, esto con la finalidad de tener accesos a la memoria fuera de su propia RAM. Este sistema reduce el trfico del bus, gracias a que cada seccin de la memoria observa exclusivamente aquellos accesos que le estn asignados, evitando observar todos los accesos de manera ineficiente, como ocurre en un sistema de tipo SMP. Solamente cuando un procesador no tiene la memoria RAM suficiente es cuando usa la memoria RAM sobrante de los dems procesadores. Se le considera a esta tecnologa, una tecnologa escalable.

88

Figura 7.- Estructura de MPP. *Fuente.- Estructuracin de un clster Beowulf. o Red.-

La topologa de red recomendada para la implementacin de un cluster Beowulf es de tipo Bus o barra, ya que facilita la escalabilidad al momento de requerir la incorporacin de nuevos elementos al cluster. Los protocolos como Ethernet, Fast Ethernet, 10/100 Mbps Switched Ethernet son los recomendados para ser usadas en un cluster Beowulf.

Es hora de hablar acerca de la implementacin y la construccin de un cluster Beowulf, con el objetivo de dar las bases para la implementacin de un cluster de este tipo en el centro de cmputo de la facultad.

89

En este momento se tratarn puntos como. Consideraciones necesarias para la creacin del cluster Beowulf.-

Como se ha mencionado ya anteriormente se requieren nodos esclavos y uno maestro, en este caso sern nueve esclavos y uno maestro, una red local de interconexin, un sistema operativo en los nodos, el cual ser Linux y un mtodo para que los programas aprovechen la naturaleza paralela del Beowulf. Abarca Castro Miguel (2008) menciona en su trabajo estructuracin de un cluster Beowulf que el proyecto Beowulf se enfoca a la distribucin Red Hat Linux, si bien sus componentes pueden instalarse en cualquier distribucin. Cualquier distribucin moderna incluye los componentes necesarios para la configuracin del equipo como una estacin de trabajo en red; esto incluye el kernel de Linux, el conjunto de utileras y software GNU, y una serie de programas y aplicaciones como compiladores y herramientas de cmputo cientfico.

Es importante mencionar que los paquetes o elementos que se requieren adicionar a la distribucin, estn disponibles como paquetes adicionales y bibliotecas de desarrollo, sin embargo debido al apoyo de Beowulf hacia Linux, las nuevas versiones del kernel de Linux ya traen incorporadas los controladores necesarios para la implementacin de este cluster.

90

o Hardware. Comunicacin entre los nodos.-

El uso de una red Ethernet tiene ventajas y algunas caractersticas relevantes, la principal es la facilidad de instalacin y su bajo costo. Cabe sealar que la popularidad de la red Ethernet ha provocado desarrollos que permiten incrementar el desempeo segn se necesite. Un cluster se puede beneficiar con el uso de switches, los cuales segmentan el trfico en el bus Ethernet reduciendo la saturacin y colisin del mismo. Consideraciones para equipos sin disco duro.-

La utilizacin de estaciones disk-less, est bastante difundida ya que permite un desempeo aceptable para las terminales que por lo normal tienen la funcin de desplegar el trabajo realizado en un servidor multiusuario. Las terminales de este tipo requieren un mnimo trabajo de mantenimiento y configuracin y por lo general estas funciones se hacen en un servidor central.

Por lo general el recurso de inters de las estaciones es su procesador y memoria, considerados como elementos de trabajo bsicos del cluster. Aunado a esto, no se pretende que los usuarios tengan directamente acceso a estas estaciones. Esta tcnica de arranque da ciertas ventajas como la centralizacin de todos los archivos de los nodos en un servidor central, as como cierta economa en los requerimientos de equipo, pues se ahorra el tener un disco duro en cada uno de los nodos esclavos del cluster.

Esta tcnica se considera como una extensin del uso del sistema de archivos por red (Network File System o NFS). El NFS por lo general se emplea para compartir los directorios de usuarios en redes de estaciones de trabajo, y en clsteres suele emplearse para facilitar la distribucin de los programas a ejecutar.
91

Sin embargo es importante mencionar las dos grandes desventajas del uso de esta tcnica. La primera es el incremento del uso del disco duro en el servidor central. La segunda es el bajo desempeo que se presenta al accesar a archivos por parte de los nodos. Esto se debe a que los nodos no cuentan con un almacenamiento secundario local, es por esto que todos los intentos realizados de acceso al disco se hacen por medio de la red lo que ocasiona que si no se tiene una red suficientemente rpida se creen cuellos de botella en la misma. o Software. Instalacin y arranque del sistema operativo en el servidor central.-

El sistema operativo en el servidor central sirve como base para la creacin de directorios o sistemas de archivos para los nodos. Este servidor debe tener el software para brindar los servicios necesarios para el arranque y operacin de los nodos.

92

Instalacin y configuracin de software de inicializacin en los nodos (disk-less).-

El arranque remoto de las estaciones sin disco duro, es una tcnica que tambin se puede emplear en los nodos esclavos del cluster, se puede emplear para diversos sistemas operativos de redes, como Novell y variantes de Unix. Miguel Abarca Castro menciona que el mtodo tradicional con redes de Unix engloba a 4 etapas.

Al arrancar la computadora, se carga un programa conocido como arrancador de red. Este es un programa que tradicionalmente reside en una ROM de arranque que se encuentra en la tarjeta de red.

El arrancador de red obtiene su direccin IP de un servidor, utilizando los protocolos BOOTP protocolo es utilizado por los clientes de red para obtener su direccin IP de manera automtica) o DHCP. Con los datos entregados por el servidor el arrancador de red realiza la configuracin bsica de la tarjeta de red para hacer transferencias por TCP/IP (protocolo base de Internet y sirve para enlazar computadoras que utilizan diferentes sistemas operativos sobre redes de rea local (LAN) o de rea extensa (WAN).

El arrancador de red utiliza el protocolo TFTP (Protocolo de Transferencia de Archivos Trivial. Se usa para la transferencia de pequeos archivos entre ordenadores en una red) para transferir un archivo desde el servidor, cuya ubicacin normalmente se especifica como parte de la configuracin recibida por BOOTP o DHCP. Este archivo comnmente es el kernel que debe cargar la estacin para realizar su arranque.

Una vez cargado el kernel, termina el trabajo del arrancador de red; el kernel se carga normalmente y realiza su procedimiento de inicio.

93

Asignacin automtica de direccin IP.-

Tanto el protocolo BOOTP como el DHCP, como ya se mencion permiten la asignacin de la informacin de configuracin para las estaciones de trabajo desde un servidor central. En los dos protocolos el usuario realiza una transmisin de tipo broadcast con su direccin hardware (direccin MAC, Media Access Control). Ya sea el servidor BOOTP o DHCP toman dicha peticin y retornan al cliente o usuario la informacin solicitada, que bsicamente consta de la direccin IP que el cliente debe usar. Abarca Castro Miguel (2008) menciona que El archivo de configuracin es relativamente sencillo, sin embargo es un tanto extenso ya que se requiere una seccin host para cada nodo del cluster. A continuacin se muestra el archivo presentado por Miguel Abarca.

EJEMPLO DE CONFIGURACION DEL DEMONIO DHCP

server-identifier tornado;

#Opciones comunes a todas las subredes soportadas option domain-name "unam.mx"; option domain-name-servers 132.248.10.2;

#asignacion dinamica.. notese que en este caso solo #especificamos las subredes en las que se encuentra el #servidor, puesto que no vamos a realizar asignacin #dinmica hay dos declaraciones de subred #correspondientes a cada una de las interfases que #tenemos.

94

shared-network DOMINIO{ subnet 192.168.10.0 netmask 255.255.255.0 { option broadcast-address 192.168.10.255;

} } subnet 192.168.1.0 netmask 255.255.255.0 { }

# A partir de aqu especificamos la configuracin por # host. cada bloque especifica un host, notar la # direccin IP fija, el hostname que se asignar a # cada nodo, y la direccion hardware ethernet que # especifica a que direccion MAC se asignarn # estos datos.

host nodo1 { fixed-address 192.168.10.68; hardware ethernet 00:60:08:0B:5A:9E; filename "/tftpboot/vmlinuz-nbi-2.2"; next-server 192.168.10.1; option host-name "nodo1"; } host nodo2 { fixed-address 192.168.10.69; hardware ethernet 00:80:AD:30:49:D4; filename "/tftpboot/vmlinuz-nbi-2.2"; next-server 192.168.10.1; option host-name "nodo2"; }

95

La explicacin que brinda Abarca Miguel (2008) acerca de este cdigo es. La direccin MAC (indicada por el parmetro hardware ethernet). La direccin IP de cada nodo (fixedaddress). stas se asignan de manera progresiva y cuidando que sean nicas para cada host. El nombre (hostname). El nombre del archivo a cargar para el arranque (filename), que en este caso especifica la ruta, dentro del servidor TFTP, de un kernel Linux adecuado para el arranque de los nodos. Y el servidor que entregar este archivo a los clientes (nextserver). La razn de este ltimo parmetro es que en ocasiones se puede tener un servidor TFTP que sea distinto del servidor DHCP. Servidor de archivos de arranque TFTP.-

El protocolo TFTP (Trivial File Transfer Protocol) es muy sencillo, se basa en UDP, lo cual permite que descargue archivos de un servidor. La principal funcin de este servidor es el proporcionar archivos de arranque a equipos que no cuentan con un almacenamiento local. Es importante mencionar que este protocolo no cuenta con ninguna clase de control de acceso al mismo como contrasea.

En el caso de utilizar RedHat Linux, el servidor TFTP ya est contenido en el paquete TFTP-SERVER, este paquete est ya instalado con la configuracin e paquetes que se mencion anteriormente, sin embargo por lo general esta deshabilitado. Para poder habilitarlo, menciona Miguel Abarca, se debe agregar la siguiente lnea en el archivo de configuracin /etc/inetd.conf. Ejemplifica de la siguiente manera.-

tftp dgram udp wait root /usr/sbin/tcpd in.tftpd /tftpboot

96

De igual forma Abarca Miguel (2008) explica esta lnea de cdigo como es una lnea de configuracin tradicional del servidor inetd. En este caso se hace notar que el ltimo parmetro (/tftpboot) indica el directorio que contiene los archivos a compartir por medio de TFTP. Cargador de arranque.-

Es importante hacer mencin del cargador de arranque. Dicho cargador es el programa responsable del inicio de la interfaz de red, la obtencin de los datos de la configuracin bsica y de cargar por medio de TFTP el archivo especificado en esta ltima configuracin. Para poder llevar a cabo este programa se cuenta son dos paquetes que son.

Netboot.- Utiliza los manejadores de paquetes que estn incluidos en la mayora de las tarjetas de red disponibles en el mercado comn, esto permite tener una gran compatibilidad con distintos tipos de tarjetas.

Etherboot.- Esta basado en Netboot, pero brinda un cdigo ms limpio y compacto que el Netboot. Utiliza manejadores internos y genera una imagen ROM para cada tipo de tarjeta de red soportada, el uso de estos manejadores internos permite que la imagen sea de un tamao reducido lo que permite evitar problemas con las tarjetas de red soportadas. Creacin del kernel para los nodos.-

El archivo proporcionado por el TFTP para los nodos es un kernel de Linux funcional, dicho kernel asume el control el sistema y lleva a cabo el arranque normal. Debido a que la configuracin en los componentes del cluster es bastante particular, el kernel debe tener internamente las funciones necesarias para inicializar el dispositivo de red, obtener su configuracin de un servidor remoto y montar su sistema de archivos raz a travs de NFS.
97

Debido a la naturaleza modular del kernel de Linux es posible contar con una gran eficacia y versatilidad en el manejo de los mdulos que controlan a los dispositivos e implementan algunas caractersticas a nivel kernel. En Linux, se dice que los mdulos necesarios deben compilarse monolticamente dentro del kernel. Abarca Miguel (2008) menciona las siguientes opciones en el kernel que se deben compilar. Kernel level autoconfiguration.- Permite al kernel obtener su informacin de configuracin a travs de algn protocolo como DHCP o BOOTP. DHCP support BOOTP support NFS Filesystem Support.- Ya que todos los sistemas de archivos montados por los nodos residirn en un servidor NFS, esta opcin es indispensable para la operacin de los nodos. Root File System on NFS.- Por medio de esta opcin, el kernel monta un sistema de archivos en un servidor NFS como su sistema raz. Soporte para las tarjetas de red que se vallan a utilizar. Organizacin de sistemas de archivos para NFS.-

Cada nodo integrante del cluster requiere de un sistema de archivos raz que usara para el arranque, dichos archivos se extraen por medio del NFS y deben ser los necesarios para el arranque.

Por lo general las distribuciones de Linux se adhieren a un estndar llamado Filesystem Hierarchy Estndar (FHS, estndar de jerarqua del sistema de archivos). El objetivo de este estndar es el poder homologar la organizacin de los sistemas de archivos entre las distribuciones Linux, mejorar la interoperabilidad de las aplicaciones, brindar herramientas de administracin de sistemas as como

98

herramientas de desarrollo y scripts, y por ltimo el poder contar con una mayor uniformidad de uso y documentacin para los sistemas adheridos al estndar.

Este estndar (FHS), intenta mantener la cantidad de archivos en el directorio raz al mnimo (excepto para los directorios /usr, /opt, /var y /home) obedeciendo a ciertos criterios bsicos, uno de estos criterios es realmente importante para las estaciones diskless y este segn Miguel Abarca es el sistema de archivos raz contiene muchos archivos de configuracin especficos a cada sistema, como puede ser configuracin de red o nombre del host. Esto implica que el sistema de archivos raz no siempre se puede compartir entre sistemas en red. El mantener el sistema de archivos raz lo ms compacto posible minimiza el espacio desperdiciado por archivos no compartibles. Tambin permite minimizar el tamao del sistema de archivos inicial, sea local o remoto.

Los directorios de nivel superior especificados por el estndar FHS son. Bin.- Binarios de comandos esenciales (uso pblico) Boot.- Archivos estticos de arranque del sistema Dev.- Archivos de dispositivos Etc.- Configuracin especfica del sistema Home.- Directorios de usuarios Lib.- Bibliotecas compartidas esenciales Mnt.- Punto de montaje para otros sistemas de archivos Opt.- Software de aplicacin adicional Root.- Directorio del superusuario Sbin.- Binarios esenciales del sistema Tmp.- Archivos temporales Usr.- Jerarqua secundaria Var.- Datos variables

99

Para sistemas de archivos de los nodos se deben omitir los directorios /usr y /home debido a que estos directorios se comparten entre todos los nodos y el servidor central. Miguel Abarca Castro menciona que a fin de generar el sistema de archivos para cada nodo, bajo el directorio /tftpboot se crean directorios con el hostname correspondiente a cada nodo, por ejemplo: /tftpboot/nodo1.

Bajo cada uno de estos se debe crear la jerarqua raz para cada nodo. Para esto simplemente se copian los subdirectorios necesarios del servidor. Los directorios a copiar son: bin dev etc lib proc root sbin tmp var

Inicialmente se realiza nicamente una copia del directorio. Posteriormente la configuracin por nodo se realiza en esta copia, y finalmente se crean tantas copias del primer directorio como nodos se tengan.

100

Servidor NFS.-

El sistema de archivos en red (NFS) nos permite acceder a archivos ubicados en sistemas remotos como si se encontraran localmente. En este caso el servidor es de vital importancia ya que proporciona los sistemas de archivos raz y un rea compartida para los nodos esclavos del cluster.

El software que permite a Linux est integrado en el paquete nfs-utils, se incorpora en la versin RedHat pero no se instala automticamente, por lo tanto hay que hacerlo manualmente, de igual manera se debe habilitar el servicio NFS para que as al iniciar el sistema arranque el demonio NFS, este demonio es importante sealar, que requiere un archivo de configuracin que le indique que sistemas de archivos y directorios debe exportar, as Abarca Miguel (2008) indica que el archivo queda de la siguiente manera.-

/tftpboot 192.168.10.0/255.255.255.0(rw,no_root_squash) /home 192.168.10.0/255.255.255.0(rw,no_root_squash) /usr 192.168.10.0/255.255.255.0(rw,no_root_squash) Por otro lado explica Cada lnea indica el directorio a exportar, seguido de opciones que controlan el acceso al recurso. En este caso estamos especificando que los directorios solo podrn ser exportados a hosts con direccin IP dentro de la subred 192.168.10.0 y mscara 255.255.255.0 (lo cual corresponde precisamente a la subred que estamos empleando para los nodos del cluster). Los parmetros entre parntesis indican los privilegios con que se exporta el recurso.

101

En este caso especificamos rw (read/write), lo cual indica que se permiten peticiones de lectura y escritura en el sistema exportado. Comnmente se especifica la opcin ro (read only), pero en este caso se requiere acceso total porque los nodos requerirn la capacidad de escribir en sus sistemas de archivos remotos. El parmetro no_root_squash desactiva el aplastamiento de root, que es el comportamiento por omisin al exportar por NFS. Normalmente, para evitar que un sistema remoto monte un sistema de archivos y el superusuario de ese sistema tenga acceso total a nuestro sistema, el NFS mapea las peticiones realizadas por el usuario con uid 0 a un usuario annimo con privilegios mnimos. En este caso se desea que los accesos con uid 0 no tengan un mapeo a un uid diferente, pues en los nodos s se requieren accesos privilegiados. Esto no representa un riesgo de seguridad porque en este caso los accesos privilegiados estn restringidos a los nodos, sobre los cuales se tiene bastante control administrativo. Configuracin por nodo. Montaje de los sistemas de archivos remotos.-

En relacin al montaje de los sistemas de archivos remotos Abarca Miguel (2008) menciona no es necesario tomar pasos adicionales para que cada nodo monte su sistema de archivos raz. Como parte del arranque, el kernel montar el directorio NFS 192.168.10.1:/tftpboot/hostname como su directorio raz.

El archivo que indica los sistemas de archivos a montar una vez iniciado el sistema es el /etc/fstab. Ya que la configuracin ser la misma para todos los nodos, es conveniente realizar el cambio primero en el directorio nodo1 que se cre para su posterior duplicacin.

102

Para que los nodos monten los sistemas de archivos compartidos (/home y /usr), el archivo /etc/fstab debe quedar como sigue:

none /proc proc defaults 0 0 none /dev/pts devpts gid=5,mode=620 0 0 192.168.10.1:/usr /usr nfs defaults 0 0 192.168.10.1:/home /home nfs defaults 0 0

Cada lnea debe tener 6 elementos separados por espacios. El primer elemento es el nombre o identificador del dispositivo a montar. El segundo elemento es el directorio sobre el cual se debe montar. El tercero indica el tipo de sistema de archivos que se encuentra en el dispositivo. El cuarto indica parmetros de montaje para el dispositivo. Los dos ltimos elementos indican el orden en que se debe respaldar el sistema de archivos utilizando el comando dump.

En este caso las dos primeras lneas estn configuradas de antemano. La primera indica el montaje del sistema de archivos proc, que contiene informacin de tiempo de ejecucin del sistema y se genera dinmicamente. La segunda indica el montaje del sistema de archivos devpts, que genera dinmicamente las terminales virtuales para acceso remoto al sistema.

Las dos lneas siguientes indican el montaje de los sistemas /usr y /home. stos se montan a travs de NFS (ntese el tercer parmetro especificando el tipo de sistema de archivos). La sintaxis para denotar el dispositivo a montar es servidor:directorio. Estas dos lneas montan los directorios /usr y /home del servidor en la misma ubicacin en cada nodo.

103

Configuracin cliente NIS (Network Information Service).Al respecto Abarca Miguel (2008) dice El cliente NIS requiere fijar el nombre de dominio NIS al que va a pertenecer, de manera similar a la del servidor NIS, por medio del programa domainname:

# domainname DOMINIO

De esta manera se indica al sistema que pertenece al dominio tornado. Para no tener que realizar este procedimiento cada vez que se inicia el sistema se puede aadir la siguiente lnea en el archivo /etc/sysconfig/network:

NISDOMAIN="DOMINIO"

Una vez que se ha fijado el valor de la variable NISDOMAIN, se requiere indicar el servidor que atender las peticiones NIS. Esto se configura en el archivo etc/yp.conf. Se agrega la siguiente lnea al archivo:

ypserver 192.168.10.1

Obsrvese que 192.168.10.1 es la direccin IP del servidor NIS.

Finalmente

el

cliente NIS debe ejecutar el programa que ejecuta las peticiones al servidor NIS, llamado ypbind. De nuevo se observa el prefijo yp, en este caso el nombre de la utilera indica que se amarra o une (bind) el cliente al dominio NIS previamente especificado.

104

Archivo /etc/hosts.-

Este archivo contiene una lista de mapeos de nombres a direcciones IP. Esta informacin genera la correcta operacin del sistema. Por otro lado es importante resaltar que este es uno de los archivos compartidos a travs de NIS, as pues, solo es necesario modificarlo en el servidor central para que la informacin en los nodos sea la misma.

Abarca Miguel (2008) brinda un ejemplo del posible contenido del archivo que contiene la lista de direcciones IP seguidas de nombres simblicos.-

127.0.0.1 localhost 192.168.10.1 DOMINIO #nodos 192.168.10.68 nodo1 192.168.10.69 nodo2 192.168.10.70 nodo3 192.168.10.71 nodo4

Una vez que ya se agrego la informacin al archivo, es relevante crear los mapas de NIS, ejecutando el comando make en el directorio /var/yp, as lo menciona Miguel Abarca. En caso de no ser as los nodos no podrn tener acceso a la informacin y el sistema no funcionar de manera correcta.

105

3.5. Propuesta de implementacin de un cluster tipo Beowulf


La propuesta que aqu se plantea es la aplicacin de un clster tipo Beowulf, su configuracin ya se mencion detalladamente en el punto anterior, sin embargo hay que mencionar que el clster plateado se aplicar en un grupo mnimo de diez computadoras marca HP con sistema operativo Windows pertenecientes al centro de cmputo de sistemas, en esta facultad.

Para que el clster funcione correctamente, como ya se especific en el apartado anterior, es conveniente implantar el sistema operativo Linux con su distribucin RedHat, ya que permite una administracin adecuada del mismo. Esta distribucin y sistema operativo es lo ms recomendado para este tipo de sistemas ya que uno de sus grandes objetivos es el reducir los costos y este sistema operativo como sabemos es de distribucin libre, otro de sus principales objetivos es el brindar una rpida resolucin de problemas que requieran de gran capacidad de memoria.

Un cluster de este tipo necesita de un nodo maestro como mnimo, dicho nodo (computadora), se recomienda que sea la que est ubicada dentro del cubculo del encargado del centro de cmputo, siendo los nodos esclavos las primeras diez computadoras de este centro. El objetivo de que el nodo maestro est ubicado dentro del cubculo es que los usuarios comunes de los equipos de cmputo no modifiquen la configuracin principal del clster, ya que es el nodo maestro el encargado de dar las instrucciones principales a los nodos esclavos para realizar las tareas indicadas.

Para evitar que los equipos de cmputo pierdan la funcin principal que es brindar a los usuarios el servicio de internet y prcticas escolares dentro de la facultad, se propone realizar un formateo de los mismos para poder realizar la particin conveniente y tener en el mismo equipo el sistema operativo Windows para

106

realizar tareas comunes de los usuarios y el sistema operativo Linux para realizar actividades y tareas acordes al clster.

Cabe sealar que la aplicacin de un clster tiene muchas ventajas y usos dentro del rea de la computacin administrativa ya que, como ya se ha mencionado anteriormente, tiene una gran capacidad de resolucin de tareas que necesitan de gran capacidad de almacenamiento como puede ser el empleo de un sistema integral de una gran empresa, donde las bases de datos se encuentren disponibles en lnea en cualquier momento y reflejar las actividades que se realicen en la misma de manera instantnea.

En nuestra facultad se propone el uso de este cluster para realizar tareas de simulacin, ya que esto ayudara bastante a las materias de algortmica, programacin y anlisis de algoritmos para estudiar el comportamiento de las instrucciones realizadas a la computadora, por otro lado se puede tambin estudiar un poco de inteligencia artificial ya que al realizar simulaciones, se puede conocer el proceso de programacin y la forma de responder de un robot o sistema complejo sin la necesidad de construirlo fsicamente, lo cual ahorrara bastante dinero al programador y a la empresa responsable del desarrollo, en este caso la Universidad Veracruzana, por otro lado tambin puede utilizarse para actividades cotidianas de la facultad como es el formateo de equipo de cmputo evitando respaldar la informacin en un disco dvd o una unidad USB, ya que al tener la capacidad de varios discos duros enlazados, se puede formatear una computadora respaldando toda su informacin en lnea en uno de los discos de los nodos del clster.

A continuacin se presenta la configuracin necesaria para que un clster realice las funciones de simulacin, en especfico se presenta la instalacin y configuracin de Network Simulation 2 (NS2). Como ya se mencion con anterioridad, se instalar bajo una plataforma Linux, estando compuesto por un grupo total de diez computadoras fungiendo slo una como nodo maestro, la cul
107

estar a cargo de la gestin de todas las instrucciones y actividades que se realizarn en el mismo. Gordon David (2002) menciona que es una herramienta de simulacin de cdigo abierto que funciona en Linux. Es un simulador de eventos discretos destinados a redes de investigacin y proporciona un apoyo sustancial para la simulacin de enrutamiento, protocolos de multidifusin IP y protocolos, como UDP, TCP, RTP y redes almbricas e inalmbricas (locales y por satlite). Gordon David (2002) en su artculo publicado en el Linuxjournal explica la manera en la cual se lleva a cabo la instalacin y la configuracin de este clster, recomienda la descarga del paquete todo en uno ya que incluye el cdigo fuente necesario para aplicar el parche en apoyo al Stream Control Transmission Protocol (SCTP). La descarga de este paquete se realiza desde la pgina de inicio de NS2 en la liga /usr/src y se extrae de la siguiente manera.-

cd /usr/src tar xzvf ns-allinone-2.1b8.tar.gz cd ns-allinone-2.1b8 La propuesta de implementacin en especfico de este trabajo es el Network Simulation como ya se menciono con anterioridad y debido a que se necesita aplicar un SCTP se necesita aplicar un parche desarrollado por la Universidad de Delaware, este parche est disponible para el paquete todo en uno que se aplicar, se debe descargar de la pagina del Laboratorio de Ingeniera en Protocolos. Gordon David (2002), menciona que con la utilidad de parches de Linux, usted puede actualizar el origen de NS2 cdigo para incluir soporte para SCTP mediante la aplicacin de la revisin.-

patch -p0 < ns-allinone-2.1b8.sctp-rel2.2_patch_orig

108

En el mismo directorio se encuentra un script llamado instalacin del cul debemos configurar, compilar e instalar los componentes NS2, tanto los obligatorios como los opcionales. Una vez completada la instalacin Gordon David (2002), menciona que aparecer el siguiente mensaje en el shell.-

Please put $CUR_PATH/bin:$CUR_PATH/tcl$TCLVER/unix:$CUR_PATH/ tk$TKVER/unix into your PATH environment; so that you'll be able to run itm/tclsh/wish/xgraph. IMPORTANT NOTICES: [...]

El conjunto de validacin NS2 se encarga de verificar que todos los protocolos sean funcionales. Para correr la validacin es necesario correr el siguiente cdigo.cd ./ns-2.1b8 ./validate

Despus de aplicar el parche SCTP al paquete NS2 se crea un archivo readme al finale de este archivo existe un ejemplo de script par una interaccion SCTP.

109

El script original es un cdigo existente para la versin 2.1b7a. para la versin 2.1b8 NS2 se deben actualizar las lineas de cdigo de dicho script. Gordon David (2002) muestra la actualizacin del cdigo.-

Trace set show_sctphdr_ 1

set ns [new Simulator] set nf [open sctp.nam w] $ns namtrace-all $nf

set allchan [open all.tr w] $ns trace-all $allchan

proc finish {} { global ns nf allchan trace_ch

$ns flush-trace close $nf close $allchan close $trace_ch

set PERL "/usr/bin/perl" set USERHOME [exec env | grep "^HOME" | sed /^HOME=/s/^HOME=//] set NSHOME "$USERHOME/ns-allinone-2.1b8" set XGRAPH "$NSHOME/bin/xgraph" set GETRC "$NSHOME/ns-2.1b8/bin/getrc" set SETFID "$NSHOME/ns-2.1b8/bin/set_flow_id" set RAW2XG "$NSHOME/ns-2.1b8/bin/raw2xg" set RAW2XG_SCTP "$NSHOME/ns-2.1b8/bin/raw2xg-sctp"

110

exec $PERL $GETRC -s 0 -d 1 all.tr > all.tr.sctp exec $PERL $GETRC -s 1 -d 0 all.tr >> all.tr.sctp exec $PERL $SETFID -m all.tr.sctp | \ $PERL $RAW2XG_SCTP -A -q -t SCTP | \ $XGRAPH -bb -tk -nl -m -x time -y packets &

exec nam sctp.nam &

exit 0 }

set false set true

0 1

set n0 [$ns node] set n1 [$ns node] $ns duplex-link $n0 $n1 .5Mb 300ms DropTail $ns duplex-link-op $n0 $n1 orient right $ns queue-limit $n0 $n1 93000

set err [new ErrorModel/List] $err droplist {15} $ns lossmodel $err $n0 $n1

set sctp0 [new Agent/SCTP] $ns attach-agent $n0 $sctp0 $sctp0 set fid_ 0 $sctp0 set debugMask_ 0x00303000 # u can use -1 to turn on everything $sctp0 set debugFileIndex_ 0 $sctp0 set mtu_ 1500 $sctp0 set dataChunkSize_ 1448
111

$sctp0 set numOutStreams_ 1 $sctp0 set initialCwndMultiplier_ 2 $sctp0 set useMaxBurst_ $true

set trace_ch [open trace.sctp w] $sctp0 set trace_all_oneline_ 0 # do not trace all variables $sctp0 trace cwnd_ $sctp0 attach $trace_ch

set sctp1 [new Agent/SCTP] $ns attach-agent $n1 $sctp1 $sctp1 set debugMask_ -1 $sctp1 set debugFileIndex_ 1 $sctp1 set mtu_ 1500 $sctp1 set initialRwnd_ 65536 $sctp1 set useDelayedSacks_ $false

$ns color 0 Red $ns color 1 Blue

$ns connect $sctp0 $sctp1

set ftp0 [new Application/FTP] $ftp0 attach-agent $sctp0

$ns at 0.5 "$ftp0 start" $ns at 4.5 "$ftp0 stop" $ns at 5.0 "finish"

$ns run

112

Gordon David (2002) menciona que este cdigo es bsicamente para establecer las rutas de acceso en funcin al entorno especfico.

Una vez realizados los cambios en las rutas de las herramientas utilizadas se puede iniciar el uso de NS2 para la simulacin de redes SCTP. Para comenzar con esta simulacin se deben seguir los siguientes pasos.-

cd /usr/src/ns-allinone-2.1b8 ns ./sctp.tcl

113

Acontinuacin se presentan tres ventanas derivadas de la ejecucin de la instalacin de este paquete.-

La figura 1 muestra un grfico con trfico de paquetes. El valo color amarillo representa, paquetes basura o perdidos, y horizontalmente a la derecha se encuentra la retransmicin. La prdida de este paquete se debe a la introduccin de un modelo de prdida de error en el cdigo. La funcin de ste codigo es el desechar los paquetes entre nodos previamente especificados. SCTP gestiona la distribucin de paquetes de manera similas que TCP, el apoyo de retransmicin rpida. (Gordon David, 2002)

Figura 8.- Perfil de datos de SCTP *Fuente.- Network Simulatior 2: a Simulation Tool of Linux
114

El cdigo de error es el siguiente.-

set err [new ErrorModel/List] $err droplist {15} $ns lossmodel $err $n0 $n1

La figura nmero 2 muestra una ventana de simulacin, donde al dar un click derecho en el link entre ambos nodos y el grfico seleccionado (grfico de ancho de banda y despus de dar un click en el link), se obtiene una barra grfica representando el ancho de banda corriendo desde el nodo cero hacia el nodo uno se puede repetir este proceso pero para conocer el ancho de banda que va desde el nodo uno al nodo cero.-

Figura 9.- Ventana de Simulacin *Fuente.- Network Simulatior: a Simulation Tool of Linux

115

Una vez inicializado el escenario de simulacin es importante mencionar algunas lneas que son importantes en el script y se explicar su funcin. (Gordon David, 2002).

[...]

// despus de inicializar el cdigo, archivos y ventana de simulacin.

set n0 [$ns node] set n1 [$ns node]

// dos nodos estn creados // (n0 y n1)

$ns duplex-link $n0 $n1 .5Mb 300ms DropTail // despus se ligan ambos $ns duplex-link-op $n0 $n1 orient right [...] set sctp0 [new Agent/SCTP] $ns attach-agent $n0 $sctp0 [...] set sctp1 [new Agent/SCTP] $ns attach-agent $n1 $sctp1

Posteriormente se define el protocolo SCTP que se usara para el destino y el retorno del trfico. Un agente que defin que protocolo utilizar es similar a una compaa para los paquetes. Cada agente debe estar asociado a un nodo especfico, asi pues el cdigo es segn Gordon David (2002).-

$ns connect $sctp0 $sctp1

// conecta de manera conjunta ambos agentes para crear un canal de comunicacin o de datos.

[...] set ftp0 [new Application/FTP] // define el tipo de aplicacin que usar la corriente de datos, FTP. $ftp0 attach-agent $sctp0

116

Para comenzar con la simulacin en tiempo real, se debe presionar el botn de inicio. La primera accin que se hace notar son los cuatro paquetes que inician la conexin FTP. El segundo evento es el control de la gestin. SCTP enva algunos paquetes a la vez e incrementa constantemente hasta alcanzar un rendimiento mximo. El principio y final de la conexin FTP se definen en las siguientes lneas (Gordon David, 2002).-

$ns at 0.5 "$ftp0 start" $ns at 4.5 "$ftp0 stop"

Se debe observar cmo los paquetes son enviados de manera creciente, o visualmente, en formatos ms largos. En realidad los paquetes son siempre de la misma longitud, sin embargo, el nmero de paquetes recibidos por el servidor se incrementa como se puede ver en el nmero de sacos recibidos por el cliente (figura 10) (Gordon David, 2002).-

Figura 10.- SACOS de cada paquete SCTP enviado *Fuente.- Network Simulator 2: a Simulation Tool of Linux
117

De esta manera se realiza la configuracin del Clster Bewuolf para realizar la simulacin, que es la propuesta de este trabajo, todo ello con el fin de reducir costos como se menciono anteriormente y de igual manera para reafirmar y practicar sobre ciertas acciones y tipos de programacin.

Es de gran utilidad para la facultad ya que se pretende que con la implementacin de este clster se logre una preparacin acadmica de alto nivel en cuanto a la programacin y al uso y diseo de redes de computadoras.

118

CONCLUSIN

119

La computacin paralela es el conjunto de computadores u ordenadores que trabajan en manera conjunta y de forma paralela para resolver tareas grandes. La ventaja de este tipo de computacin es el hecho de que no se desperdicia el tiempo de inactividad de los computadores, ya que como su nombre lo indica, el nodo principal, al detectar un tiempo de ocio en cualquier nodo, manda una tarea a ste, de manera que no se pierde esa capacidad de memoria. Esta es la base de la elaboracin de este trabajo.

El objetivo de este trabajo fue el estudio detenido de la computacin paralela, en especial los clsteres de alto rendimiento, se analizaron temas como los antecedentes de los clsteres, los tipos de clsteres existentes, su

funcionamiento, aplicacin, configuracin e implementacin, se identificaron los distintos elementos que integran a la computacin paralela, se conocieron las ventajas del uso de los clsteres, sus componentes y por ltimo se elabor una propuesta de implementacin de un cluster tipo Beowulf en el centro de cmputo de esta facultad.

Por otro lado se mencionaron los clsteres existentes hasta el da de hoy y el mbito en el cual se aplican.

Los temas principales de la computacin paralela, es principalmente, el middleware, los software de paralelizacin, as pues, se explico detenidamente como funcionan estos software (middleware y paralelizacin). Se conoce ahora que el principal sistema operativo en el cual se implementan los clsteres es Linux, ya que como se estudio a lo largo del trabajo, el principal objetivo de esta red de computadoras, es el reducir los costos y tiempos en la realizacin de tareas grandes que necesitan de una capacidad de memoria y resolucin grande, por tanto Linux cubre perfectamente este objetivo al ser un sistema operativo de distribucin libre y al contar con la mayora de paquetes requeridos para la correcta configuracin e implementacin de un cluster.

120

Especficamente se estudi el diseo, configuracin e implementacin del cluster tipo Beowulf, este tipo de cluster fue la propuesta de implementacin de este trabajo en el centro de cmputo de esta facultad.

121

FUENTES DE INFORMACIN Abarca Castro Miguel, 2008, Sistemas Distribuidos Estructuracin de Un Cluster Beowulf, 7 de mayo de 2010, http://xxito.files.wordpress.com/2008/11/trabajofinal-beowulf.pdf

Baeza R., s/a, Arquitectura ccNUMA, Servidores Origin de Silicon Graphics Inc., 4 de mayo de 2010,

http://www.dcc.uchile.cl/~rbaeza/cursos/proyarq/choviedo/numa_definicion.html

Baker Mark, s/a, Cluster Computing at a Glance, 2 de abril de 2010, http://www.digipede.net/downloads/Digipede_CCS_Whitepaper.pdf Baker Mark, 1999, Cluster Computing: A High-Performance Contender, 2 de abril de 2010, http://arxiv.org/ftp/cs/papers/0009/0009020.pdf Barak, 1999-2010, Cluster and Multi-Cluster Management, 1 de abril de 2010, http://www.mosix.org/ Bayona Valentn Maribel, 2009, Implementacin de un Cluster de Alta Disponibilidad Utilizando Herramientas Libres, 20 de abril de 2010,

http://aslcuba.wordpress.com/2009/07/16/implementacion-de-un-cluster-de-altadisponibilidad-utilizando-herramientas-libres/

Bono Rick, s/a, Pondermatic IV Home Supercomputing with Linux, 2 de abril de 2010, http://www.ic.uff.br/~vefr/research/clcomp/pondermatic.html Bosque Jos Luis, 2006, Sesin 4: Modelos de computacin paralela, 2 de

mayo de 2010, http://dac.escet.urjc.es/docencia/Doctorado/CPBC/sesion4.pdf

Buytaert Kris, 2006, El manual para el Clustering con Openmosix, 1 de mayo de 2010,http://www.wikilearning.com/tutorial/el_manual_para_el_clustering_con_open mosix/9756
122

Contento T. Marcia, s/a, Cluster de Balanceo de Carga y Alta Disponibilidad Para Servicios Web y Mail, 28 de abril de 2010, http://www.utpl.edu.ec/eccblog/wpcontent/uploads/2007/04/articulo-tecnico-cluster-de-balanceo-de-craga-y-altadisponibilidad-para-servicios-web-y-mail.pdf Clustering y Alta Disponibilidad en GNU/Linux, 16 de abril de 2010, http://www.augcyl.org/doc/2007-curso-salamanca/clustering-ha.pdf

De Bustos Prez Jos ngel, 2007, Utilizacin y Administracin avanzadas de sistemas GNU/Linux y aplicaciones Software Libre para Estudiantes Universitarios Sin Autor, s/a, Red Hat Enterprise Linux 4: Manual de Referencia, Captulo 20. Protocolo SSH, 20 de abril de 2010, http://web.mit.edu/rhel-doc/4/RH-DOCS/rhelrg-es-4/ch-ssh.html Departament dArquitectura de Computadoras, 2002, Cluster Beowulf, 5 de mayo de 2010, http://studies.ac.upc.edu/EPSC/TFC/Beowulf/beowulf.html

Dinda A. Peter, 2001, Host Load Prediction Using Linear Models, 6 de abril de 2010, http://www.cs.northwestern.edu/~pdinda/Papers/cluster00.pdf

Duran

Cristian,

s/a,

Trabajo

Clusters,

15

de

abril

de

2010,

http://www.slideshare.net/cduranmardones/trabajo-clusters

Foster Ian, s/a, Designing and Building Parallel Programs, 4 de abril de 2010, http://www.mcs.anl.gov/~itf/dbpp/

Gordon David, 2002, Network Simulator 2: a Simulation Tool of Linux, 25 de Julio de 2010, http://www.linuxjournal.com/article/5929

Guerrero Caongo Daniel, 2003, Instalacin de Kimberlite, 27 de abril de 2010, http://www.mmc.igeofcu.unam.mx/LuCAS/Manuales-LuCAS/doc-instalacioncluster-alta-disponibilidad/instalacion-cluster-alta-disponibilidad/node8.html


123

Iriarte Ciro, 2003, Clustering: Introduccin a la Informtica, 13 de abril de 2010, http://www.dei.uc.edu.py/tai2003-2/clustering/html/clasificacion.html

Jose Luis Bosque, 2006, Sesin 1: Arquitectura Paralela Basada en Cluster, 7 de abril de 2010, http://dac.escet.urjc.es/docencia/Doctorado/CPBC/sesion1.pdf

Jos CC & SuperBenja, 2006, Implementacin de un cluster OpenMosix para Cmputo Cientfico en el Instituto de Ingeniera de la UNAM, 9 de abril de 2010, http://www.josecc.net/archivos/tesis/tesis_html1/Tesis.html

Kaufmann Morgan, s/a, The Parallel Computing Environment, 6 de abril de 2010, http://oldweb.cecm.sfu.ca/PSG/book/intro.html

Lizrraga Celaya Carlos, 2003, Cluster de Linux, 31 de Marzo de 2010, http://clusters.fisica.uson.mx/clusters_de_Linux.htm M.A. Gmez Ziga Iliana, s/a, Clusters de Alto Rendimiento, 14 de abril de 2010, http://148.202.45.49/drupal/sites/default/files/Cluster%20alto%20rendimiento2.pdf

Microsoft Windows, 2003, Grid and Cluster Computing: Options for Improving Windows Application Performance, 2 de abril de 2010,

http://www.digipede.net/downloads/Digipede_CCS_Whitepaper.pdf Modi Anirudh, 1999, COCOA Beowulf Cluster FAQ, 2 de abril de 2010, http://www.ic.uff.br/~vefr/research/clcomp/cocoa.html New Divises, s/a, Bases tecnolgicas funcionales de un microprocesador, 1 de mayo de 2010, http://www.newdevices.com/tutoriales/cpu/2.html

Paz Carlos, s/a, Cmo configurar una interfaz de red virtual, 21 de abril de 2010, http://www.linuxdata.com.ar/index.php?idmanual=interfazdredvirtual.html&manuale =1
124

Plata Oscar, 2003, Clusters: Arquitecturas Distribuidas, 13 de abril de 2010, http://www.ac.uma.es/educacion/cursos/informatica/ArqDist/pdfs/04-Clusters.pdf

Radajewski

Jacek,

1998,

Beowulf

HOWTO,

de

abril

de

2010,

http://www.ic.uff.br/~vefr/research/clcomp/Beowulf-HOWTO.html Sin Autor, 2010, What is Linux Clustering, 3 de abril de 2010,

http://www.squidoo.com/linux-clustering#module82220481 Sin Autor, s/a, Taxonoma de las arquitecturas de computadoras, 7 de abril de 2010, http://agamenon.uniandes.edu.co/~c21437/ma-bedoy/taxonomi.htm

Sin

Autor,

s/a,

Conmutacin

de

Paquetes,

de

abril

de

2010,

http://es.wikitel.info/wiki/Conmutaci%C3%B3n_de_paquetes

Sin Autor, s/a, Alta Disponibilidad, 9 de abril de 2010, http://www.netlinux.cl/altadisponibilidad

Sin Autor, 2009, Super Computadora con GNU/Linux y Mosix, 10 de abril de 2010, http://www.lastdragon.net/?p=325

Sin Autor, s/a, Linux Virtual Server-LVS, Capitulo 3.Balanceo de Carga, 29 de abril de 2010, http://www.mmc.igeofcu.unam.mx/LuCAS/Manuales-LuCAS/doc-cursosalamanca-clustering/html/ch03s04.html

Sin Autor, s/a, Redes de Ordenadores- Network Computing- Cluster de Alto Rendimiento, 30 de abril de 2010,

http://www.netzweb.net/html/print/red/net_com/cl_a_r.pdf

125

Solsona Tehs Francesc, 2002, Coscheduling Techniques for Non-Dedicated Cluster Computing, 1 de abril de 2010,

http://www.tesisenxarxa.net/TESIS_UAB/AVAILABLE/TDX-0303103185705//fst1de3.pdf

Suarez M. Jose, 2002, Sistema HA bajo Linux, 26 de abril de 2010, http://www.goa.es/docs/linux_ha_apache.pdf

Turner Dave, s/a, Introduction to Parallel Computing and Cluster Computing, 1 de abril de 2010,

http://www.scl.ameslab.gov/Projects/parallel_computing/para_intro.html

126

NDICE DE FIGURAS Y TABLAS Pgina

Tabla 1. Comparacin de arquitecturas SIMD y MIMD..19 Figura 1. Esquema de la clasificacin de computadoras.20 Tabla 2. Clasificacin de los clsteres..22 Figura 2. Arquitectura de un clster..36 Figura 3. Diseo abajo-arriba de un cluster.....48 Figura 4. Diagrama del cluster.77 Figura 5. Arquitectura de un clster Beowulf..80 Figura 6. Estructura de SMP.87 Figura 7. Estructura de MPP.89 Figura 8. Perfil de datos de SCTP.114 Figura 9. Ventana de simulacin......115 Figura 10. SACOS de cada paquete SCTP enviado.117

127

128

S-ar putea să vă placă și