Gutiérrez Rendón

Anuncio
UNIVERSIDAD VERACRUZANA
Facultad de Contaduría y Administración
Propuesta de implementación de
un clúster de altas prestaciones
Tesina
Para obtener el Título de:
Licenciado en Sistemas
Computacionales Administrativos
Presenta:
Erick Samuel Gutiérrez Rendón
Asesor:
M.C. Rubén Álvaro González Benítez
Cuerpo Académico:
Tecnologías de la Información y las
Organizaciones Inteligentes en la Sociedad
del Conocimiento
Xalapa-Enríquez, Ver.
Agosto 2010
1
2
Dedicatorias
3
ÍNDICE
Página
Introducción…………………………….…………………………………6
Capítulo 1
1. Computación paralela y de altas prestaciones………...…………............11
1.1. Arquitectura de computadoras………………………………..………………..15
1.2. Computadoras paralelas…………………………………………..……………16
1.3. Modelos de cómputo en paralelo…………………………………..…………..22
Capítulo 2
2. Teoría de los clústeres.……………………………………………….……….24
2.1. Antecedentes……………………………………………………………….……25
2.2. Conceptos…………………………………………………………………….…..30
2.3. Generalidades de los clústeres………………………………………………..35
2.4. Clasificación de clústeres………………………………………………………40
2.5. Ventajas y desventajas………………………………………………………….46
2.6. Retos en la implementación de un clúster………………………………........47
Capítulo 3
3. Arquitecturas y herramientas para Implementación de un clúster……50
3.1. Modelos y arquitecturas………………………………………………………....63
3.2. Software de paralelización……………………………………………………...64
3.3. Estructura de un clúster………………………………………………………....73
4
3.4. Propuesta de implementación de un clúster..………………………………..78
3.5. Propuesta de implementación de un cluster tipo Beowulf…………………106
4. Conclusión……………………………………………………………………..119
5. Fuentes de información….…………………………………………………..122
6. Índice de tablas y figuras……………………………………………………127
V5
INTRODUCCION
6
Actualmente el proceso de globalización económica ha llegado a todos los países,
obligando a las empresas y en general a todas las organizaciones que integran el
sistema económico y por lo tanto al aparato productivo, a disminuir costos y a ser
más eficientes con la finalidad de elevar la competitividad y ampliar la cobertura de
sus servicios frente a sus competidores o atender eficazmente a la población en el
caso de que se trate de organizaciones públicas o gubernamentales.
La misma globalización económica trae consigo el avance y desarrollo de la
tecnología así como la transferencia de la misma entre países (aunque esto último
se caracteriza por un rezago temporal), lo cual favorece la integración política,
cultural y económica entre los países así como fortalece la competencia entre
empresas, quienes quieren innovar y ser líderes en su área obteniendo mayores
ganancia o asegurándose el mercado.
México no es la excepción y las empresas e instituciones buscan ser eficientes
adoptando nuevas tecnologías 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, más aún,
tratándose 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
planeación, producción, dirección 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
computación paralela en las grandes empresas.
El presente trabajo recepcional, en la modalidad de tesina, tiene como objetivo
general analizar el uso de la computación paralela en las grandes empresas como
una opción para elevar la competitividad de las organizaciones a través de la
7
implementación de un sistema tipo clúster que mejora la eficiencia y eficacia de los
procesos, favoreciendo la reducción de costos de tales organizaciones.
Como objetivos específicos se plantean: 1) Identificar los diferentes elementos que
integran un sistema de computación paralela; 2) Describir las ventajas del uso de
estos sistemas, 3) Detectar los elementos necesarios para la implementación de
los clústeres y 4) Elaborar una propuesta de configuración y puesta en marcha de
un sistema de un sistema de computación paralela, específicamente un clúster de
alto rendimiento en el centro de cómputo de la Facultad Contaduría y
Administración 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 revisión
de
literatura especializada en el tema publicada en libros y principalmente en páginas
electrónicas, 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
computación es el medio electrónico.
En el capítulo uno se presenta las generalidades y especificaciones de la
computación paralela y de altas prestaciones, precisando su arquitectura y
modelos.
En el capítulo dos, se enfoca al marco teórico, presentándose la teoría de los
clústeres, necesaria para desarrollar la implementación de los clústeres, tema que
se aborda en el capítulo tres, donde además se estudian temas como el software
de paralelización, su implementación, los tipos de software existentes y su
configuración, incluyendo la estructura de un clúster. También en el capítulo tres,
se presenta la propuesta de implementación de un clúster en el centro de cómputo
de la Facultad Contaduría y Administración 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 bibliografía y
páginas electrónicas consultadas, así como el índice de tablas del documento.
9
CAPÍTULO 1: Computación paralela y de altas
prestaciones
10
1. Computación paralela y de altas prestaciones
El Grupo de Investigación de Altas Prestaciones y Paralelismo de la Universidad
de Alicante menciona que “las aplicaciones de la computación de altas
prestaciones y en concreto el paralelismo se extiende prácticamente a todos los
ámbitos donde la programación se manifiesta como útil. En la actualidad, la
computación paralela está siendo utilizada en multitud de campos para el
desarrollo de aplicaciones y el estudio de problemas que requieren gran capacidad
de cómputo, bien por el gran tamaño de los problemas que abordan o por la
necesidad de trabajar con problemas en tiempo real. De esta forma, el paralelismo
en la actualidad, además de constituir diversas líneas abiertas de intensa labor
investigadora, puede encontrarse en infinidad de aplicaciones en campos muy
variados, entre los que destacamos:
 Modelado predictivo y simulación: Se realiza mediante extensos
experimentos de simulación por computador que con frecuencia acarrean
computaciones a gran escala para obtener la precisión y el tiempo de
respuesta deseado. Entre estos modelados destacamos la previsión
meteorológica numérica y la oceanografía.
 El desarrollo industrial también reclama el uso de computadores para
progresar en el diseño y automatización de proyectos de ingeniería, la
inteligencia artificial y la detección remota de los recursos terrestres. En
este campo destacamos: la inteligencia artificial y automatización
(procesamiento de imágenes, reconocimiento de patrones, visión por
computadora, comprensión del habla, deducción automática, robótica
inteligente,
sistemas
expertos
por
computadoras,
ingeniería
del
conocimiento, etc.).
11
 Investigación médica: En el área médica las computadoras rápidas son
necesarias en tomografía asistida, diseño de corazones artificiales,
diagnóstico hepático, estimación de daños cerebrales y estudios de
ingeniería genética.”
La computación paralela divide grandes problemas en partes más pequeñas, a
estas divisiones del problema se le conocen como tareas o procesos, y se
caracterizan por poder resolverse en forma paralela. Esta solución surge como
una respuesta de la arquitectura de computadoras a las crecientes demandas de
potencia de cómputo de los usuarios. Tienen una influencia clave el bajo costo de
los equipos y el gran desarrollo tecnológico (Ley de Moore, plantea que el número
de transistores de un chip se duplica cada dos años).
Por otro lado cabe mencionar que es una forma eficaz de procesar la información
y favorece la explotación de sucesos concurrentes en el proceso de cómputo. Su
objetivo principal es el aumentar el rendimiento de un equipo computacional. Las
dos principales características de la computación paralela son:
 Memoria compartida
 Paso de mensajes
Según los modelos de cómputo 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 métricas para analizar el rendimiento de la
implementación del paralelismo. Cabe señalar que el objetivo principal del
paralelismo es aumentar el rendimiento de los programas, por otro lado el
resultado de la aplicación de los distintos tipos de métricas depende de las
capacidades del sistema y del comportamiento del programa. Es importante
mencionar algunos conceptos básicos para la mejor comprensión de este tipo de
métricas.
 Tiempo de ejecución.- Es el tiempo que consume un programa desde su
inicio hasta su término.
 Tiempo de CPU.- Es el tiempo que realmente se está ejecutando, es decir
el tiempo que tiene asignado el CPU.
 Tiempo de comunicación.- Tiempo invertido por la aplicación en funciones
de comunicación entre procesos.
 Sobrecarga.- Tiempo total en que la aplicación paralela no hace trabajo útil.
Una vez entendidos estos conceptos se mencionarán los distintos tipos de
métricas existentes para la obtención del rendimiento de la aplicación del
paralelismo según Bosque José Luis (2006), así:
 Speedup.- Es la ganancia del sistema paralelo, frente al secuencial
S = T1_
TN
13
Este tipo de métrica se refiere a que tan rápido es un algoritmo paralelo en
comparación a un algoritmo secuencial. Se define a S como el número de
procesos, T1 es el tiempo de ejecución de un algoritmo secuencial y TN es el
tiempo de ejecución 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
 Fracción serie.- Es el porcentaje del programa que no se puede
paralelizar.
 Ley de Amdahl.- Si la fracción serie de un programa es “s” el speedup
máximo 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 clasificación más popular la realizó Flynn (Bosque José Luis, 2006), que
clasificó la arquitecturas de acuerdo a los flujos de datos (se les conoce también
como data streams) y a los flujos de instrucciones (instructions streams), esta
clasificación se muestra en la figura 1. El concepto de flujos de datos se refiere al
número de operandos que se pueden procesar al mismo tiempo y el de flujos de
instrucciones se refiere a cuántos programas se pueden ejecutar al mismo tiempo.
De acuerdo a esta clasificación 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 características 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 instrucción. 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 características son: todos
los elementos de procesamiento (EP) poseen su propia unidad de control,
todas las unidades de proceso ejecutan su propio programa. Algunas
máquinas 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 organización 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 demás solo a través del
paso de mensajes, a estas computadoras suelen denominarse multicomputadoras
(conjunto de máquinas Von Neumann (procesador + memoria local) conectadas a
un bus común, a través 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 están divididas
en MPPs (Massively Parallel Processors) y NOWs/COWs (Network/Clúster Of
Workstations). Los MPPs son supercomputadoras demasiado caras compuestas
por varios CPU’s “estrechamente acoplados” por una interconexión 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 también
como COWs, consisten en PC’s regulares o estaciones de trabajo (Workstation)
“finamente acoplados” por la tecnología de interconexión comercial.
Sus ventajas son.o La escalabilidad.- Las computadoras con sistemas de memoria
distribuida son fáciles de escalar, debido a la demanda de los
recursos se puede agregar más memoria y procesadores.
Sus desventajas son.o El acceso remoto a memoria es lento.
o La programación 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, además el acceso a memoria es por
medio de un solo canal. En esta configuración debe asegurarse que los
procesadores no tengan acceso simultáneamente a regiones de memoria
de una manera en la que pueda ocurrir algún error.
Sus ventajas son.o Facilidad de la programación. - Es mucho más fácil programar en
estos sistemas que en sistemas de memoria distribuida.
o Las computadoras MIMD con memoria compartida son sistemas
conocidos como de multiprocesamiento simétrico (SMP), donde
múltiples procesadores comparten un mismo sistema operativo y
memoria. Otro término con que se conoce es máquinas firmemente
juntas o de multiprocesadores.
Sus desventajas son.o El acceso simultáneo a memoria es un problema.
o Poca escalabilidad de procesadores, debido a que se puede generar
un cuello de botella en el número de CPU’s.
o En computadoras vectoriales como la Cray, todas las CPU tienen un
camino libre a la memoria. No hay diferencia entre las CPU’s.
o La razón principal por el alto precio de Cray es la memoria.
17
 Arquitectura Non Uniform Memory Arquitecture (NUMA).- Además 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 más 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 continuación se presenta un pequeño cuadro comparativo de las arquitecturas
SIMD y MIMD.
SIMD
Requiere menos hardware: 1 unidad de
MIMD
Requiere más hardware.
control.
Necesita menos memoria: 1 sola copia del
Necesita memoria para cada uno de los
programa.
programas.
Adecuada para programas de datos
Puede ejecutar varias tareas al mismo
paralelos: Se requiere el mismo programa
tiempo o emular un procesador SIMD
sobre un gran número de datos.
mediante mecanismos de sincronización.
Menos tiempo de arranque para
Para comunicarse es necesario usar
comunicarse con los vecinos: Debido a que
mecanismos de sincronización.
posee un reloj global.
Más costosa: Se requiere diseñar un
Más barata: Se pueden construir usando
microchip de arquitectura especial.
procesadores SISD de propósito general a
gran escala, los cuales son muy baratos
debido a la economía de escala.
Tabla 1.- Comparación de arquitecturas SIMD y MIMD
19
Figura 1.- Esquema de la clasificación de computadoras.
*Fuente.- Sesión 1: Arquitectura Paralela Basada en Cluster
1.2.
Computadoras paralelas.
Una computadora paralela es un conjunto de procesadores que son capaces de
trabajar en colaboración para resolver un problema computacional. Esta definición
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 cálculo.
20
El paralelismo a veces ha sido visto como una sub-área extraña de la informática,
interesante, pero de poca relevancia para el programador medio. La programación
paralela se está convirtiendo en parte fundamental para la empresa de
programación.
En la actualidad la computación paralela está siendo utilizada en multitud de
campos para el desarrollo de aplicaciones y el estudio de problemas que requieren
gran capacidad de cómputo, ya sea por el gran tamaño de los problemas que
abordan o por la necesidad de trabajar con problemas en tiempo real. De esta
forma, el paralelismo en la actualidad, además de constituir diversas líneas
abiertas de intensa labor investigadora, puede encontrarse en una infinidad de
aplicaciones en campos muy variados, entre los que se destacan. Modelo predictivo
y simulación.- Se realiza mediante extensos
experimentos de simulación por computador que con frecuencia acarrean
computaciones a gran escala para obtener la precisión y el tiempo de
respuesta deseado. Entre otros modelos se puede destacar la previsión
meteorológica, numérica y la oceanografía.
 El desarrollo industrial también reclama el uso de computadores para
progresar en el diseño
y automatización de proyectos de ingeniería, la
inteligencia artificial y la detección remota de los recursos terrestres. En
este campo se puede destacar la inteligencia artificial y automatización
(procesamiento de imágenes, reconocimiento de patrones, visión por
computador, comprensión del habla, ente otras.)
 Investigación médica.- En el área médica las computadoras rápidas son
necesarios en tomografía asistida, diseño de corazones artificiales,
diagnostico hepático, estimación de daños cerebrales y estudios de
ingeniería genética.
21
1.3.
Modelos de computo en paralelo
En primer lugar se debe conocer que un clúster 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 común, de igual manera puede ser un multiprocesador
“casero”, esto es que utiliza componentes comerciales, baratos y potentes
(COTS). Ahora bien, los clústeres se pueden clasificar atendiendo a diversos
factores como a continuación se menciona:
Aplicación
Alto rendimiento
Alta fiabilidad
Diseñado para la implementación de
Diseñado para aplicaciones criticas, en
alto coste computacional.
las que lo importante es la
disponibilidad más que el rendimiento.
Según el propietario de los nodos
Dedicado
No dedicado
La aplicación paralela se ejecuta en
Cada nodo tiene un propietario y las
todo el sistema si ningún tipo de
aplicaciones paralelas se ejecutan en el
restricción.
tiempo en que los nodos están ociosos
(ciclos libres).
Configuración del clúster
Homogéneo
Heterogéneo
La arquitectura (hardware y software)
Los nodos tiene diferentes
de todos los nodos es la misma.
características, en cuanto a hardware o
software.
Tabla 2.- Clasificación de los Clústeres.
22
CAPÍTULO 2: Teoría de los Clústeres
23
2. Teoría de los clústeres
En este capítulo se mencionarán algunos antecedentes de los clústeres, las
causas que originaron su desarrollo e implementación en las grandes empresas
que necesitan de la resolución de problemas grandes en tiempos cortos y a bajo
costo.
Se explicarán algunos conceptos básicos de los clústeres para su mayor
entendimiento, de la misma manera se darán a conocer las generalidades de los
clústeres con el objetivo de crear un conocimiento general de los componentes de
los mismos.
La clasificación de los clústeres es un tema importante, el cual de la misma
manera se mencionara y explicará en el presente capítulo, con el fin de poder
identificar los tipos de clústeres existentes, cuáles son sus objetivos, sus
componentes, rendimiento, entre otras características propias de cada uno de
ellos.
Otro punto importante en este capítulo son las ventajas y desventajas de los
clústeres en su implementación así como los retos que se tienen al llevarlos a
cabo.
24
2.1.
Antecedentes
La base formal de que la ingeniería informática puede ser utilizada como un medio
para la elaboración 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
cálculo no podrá continuar hasta que se haya completado la parte secuencial).
Esta ley define la base para la ingeniería de la computación tanto para
multiprocesador y computación clúster, en donde la principal diferencia es si las
comunicaciones interprocesador cuentan con el apoyo dentro de la computadora,
por ejemplo, en una configuración 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 motivación el desarrollo de una red para enlazar los recursos de
computación, de hecho el realizar la creación de un clúster de computadoras. Las
redes de conmutación de paquetes fueron conceptualmente inventados por la
corporación RAND en 1962.
Usando el concepto de una red de conmutación de paquetes, el proyecto
ARPANET ((Red de la Agencia de Proyectos de Investigación Avanzada) logró
crear en 1969 lo que fue posiblemente la primera red de computadoras básicas
basadas en el clúster de computadoras por cuatro tipos de centros informáticos.
25
Dicho proyecto creció y se convirtió en lo que actualmente se conoce como
internet, considerándose como “la madre de todos los clústeres”.
El primer producto comercial de tipo clúster fue ARCnet, desarrollada en 1977 por
Datapoint pero no tuvieron un éxito comercial y los clústeres no consiguieron tener
éxito hasta que en 1984 VAXclúster produjera el sistema operativo VAX/VMS.
Estos productos no solo apoyan a la computación paralela, sino que también
comparten los archivos y dispositivos periféricos.
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 carácter singular.
VAXclúster y VMSclúster están aún disponibles en los sistemas de HP OpenVMS
corriendo en sistemas Itanium y ALpha.
Otros dos principios comerciales de clústeres notables fueron el Thandem
Himalaya (alrededor de 1994 con productos de alta disponibilidad) y el IBM S/390
Parallel Sysplex también 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 creación
de un superordenador virtual (un clúster HPC) realizada desde cualquiera de los
sistemas conectados TCP/IP.
De forma libre los clústeres heterogéneos han constituido la cima de este modelo
logrando aumentar rápidamente 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 más caros superordenadores.
El empleo de PC, PVM y redes de bajo costo dio como resultado en 1993 la
creación de un clúster desarrollado por la NASA, Discover.
26
A continuación se mencionaran de manera rápida algunos otros clústeres
importantes. En 1995 se desarrollo el clúster “Beowulf” diseñado según un producto
básico de la red con el objetivo especifico de ser un superordenador capaz
de realizar firmemente y de manera paralela cálculos de tipo HPC. Este
clúster fue construido por Donald Becker y Thomas Sterling, implemento 16
computadoras personales con procesadores Intel DX4 de 200Mhz, los
cuales estaban conectados a través de un switch Ethernet. Su rendimiento
teórico era de 3.2 GFlops.
 Berkeley NOW fue conformado por 105 estaciones de trabajo Sun Ultra
170, conectadas a través de una red Myrinet (red de interconexión de
clústeres de altas prestaciones, físicamente consiste en dos cables de fibra
óptica, upstream y downstream, conectados con un único conector. La
conexión 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 estación de trabajo contenía 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 clúster logró un rendimiento de 10 GFlops.
 En el año 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.
 Clúster PS2 desarrollado en el año de 2004 en la Universidad de Illinois en
Estados Unidos, utilizando consolas Play Station 2 en cómputo científico y
visualización de alta resolución, se emplearon 70 PS2 y un kit de Sony
Linux (basado en Linux Kondora y Linux Red Hat).
27
 Clúster X en la lista “Top 500” de noviembre de 2004, fue considerado el
séptimo sistema clúster mas rápido, sin emabargo para julio de 2005 ocupa
el puesto catorce. Fue construido en el Tecnológico de Virginia en el 2003;
su instalación fue realizada por estudiantes del dicho tecnológico. 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 administración. Clúster X posee 4 Terabytes de memoria RAM y 176
Terabytes de disco duro, su rendimiento es de 12.25 TFlops. Se le conoce
también 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 tecnología Quadrics.
Su rendimiento es de 19.94 TFlops. Se ubicó en la segunda posición del
“TOP 500” durante junio de 2004, luego en la quinta posición en noviembre
de 2004 y en la lista de julio de 2005 se ubicó en la séptima posición.
 ASCI Q fue construido en el año 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 posición del “TOP 500” durante junio y noviembre de
2003, luego en la tercera posición en junio de 2004, en la sexta posición en
noviembre de 2004 y en la duodécima posición en julio de 2005.
 Red Española de Supercomputación, esta red fue creada en el año 2007,
está compuesta por 7 clústeres distribuidos en distintas instituciones
españolas, ente los que se encuentra el supercomputador Marenostrum.
 En el Instituto de Investigación en Ingeniería de Aragón, se emplea
HERMES (se estudiará a detalle posteriormente), este clúster de
28
computación es utilizado por los miembros de dicho instituto para realizar
simulaciones y cálculos numéricos de muy alto rendimiento. Por mencionar
algunos de los trabajos realizados dentro de HERMES están:
 Simulación de prótesis mejoradas.
 Tratamiento de imágenes biomédicas.
 Análisis de señales biológicas.
 Desarrollo de interfaces orales
 En nuestro país se encuentra THEOS, este clúster está basado en
tecnología Intel, se encuentra implementado en el Centro Nacional de
Procesado Sismológico de PEMEX Exploración y Producción (CNPS),
THEOS apoyo en la instalación 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 tecnología y arquitectura de los
microprocesadores han llevado a una gran evolución de sus prestaciones: ley de
Moore; es un antecedente más de la aparición de los clústeres.
29
2.2.
Conceptos.
Es importante mencionar algunas definiciones básicas para el mejor entendimiento
del funcionamiento de los clústeres:
 Rendimiento.- Es la efectividad del desempeño de una computadora, sobre
una aplicación o un benchmark (técnica utilizada para medir el rendimiento
de un sistema o componente de un sistema) en particular. En las
mediciones de rendimiento están involucrados velocidad, costo y eficiencia.
 Alto Rendimiento (HPC).- Gran demanda de procesamiento de datos en
procesadores, memoria y otros recursos de hardware, donde la
comunicación entre ellos es muy rápida.
 Recurso (resource).- Se trata de un componente hardware (disco físico,
red) o software (dirección IP, nombre de red, script...) que forma parte del
clúster. Entre los recursos se producen dependencias que se han de
reflejar en la configuración de los mismos.
 Grupo (group).- Es una agrupación de recursos, un grupo de recursos es
la única unidad del clúster donde se puede realizar failover (modo de
operación 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 más 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 razón que los diferentes recursos componentes de
un servicio o instancia de aplicación se agrupen en un mismo grupo, un
recurso determinado no puede pertenecer a más 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,
información respecto a la configuración del clúster.
 Shared Quorum.- Se
trata
de
la
configuración
más habitual y
recomendada, todos los clústeres comparten el acceso a este recurso de
disco físico.
 Local Quorum.- Aquí el quorum se localizaría en uno de los discos locales
de uno de los nodos del clúster, este tipo de configuración solo tienen
sentido para recuperación de desastres o durante mantenimientos o fallos
del disco compartido de quorum.
 Nodo.- Se refiere a una computadora sola que contiene recursos
específicos, tales como memoria, interfaces de red, uno o más CPU, etc.
 Escalabilidad.- Generalmente se mide la eficiencia de un problema,
utilizando un tamaño y un número de procesadores fijo, pero esto es
insuficiente, pues los resultados serán diferentes cuando se aumente o
disminuya el tamaño del problema y el número de procesadores. Esto es,
existe un problema de escalabilidad. Cuando se aumenta el número de
procesadores para el mismo tamaño del problema, la sobrecarga debido al
paralelismo
(comunicaciones,
desbalanceo
de
carga),
aumenta
y
similarmente podemos tener casos en donde el tamaño del problema es
muy pequeño para tener una evaluación real del problema sobre cierta
máquina.
31
 Balanceo de carga.- Lo ideal en el procesamiento paralelo es que cada
procesador realice la misma cantidad de trabajo, donde además 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 sincronización.
 Alta disponibilidad.- Es la capacidad de mantener operativas los servicios
y operaciones del corazón del Negocio continuamente, eliminando los
problemas comunes de los sistemas de información de su organización,
además, la información se encuentra consolidada y en el caso de una
pérdida de datos o problemas de servicios, otra máquina 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 máquinas del clúster
(falla fuente de poder, punto de red, cable o tarjeta de red, falla de
controladora de discos, switch, etc.), si nuestra configuración 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 máquinas del clúster, el software de
alta disponibilidad es capaz de re arrancar automáticamente los
servicios que han fallado en cualquiera de las otras máquinas del
clúster. Y cuando la máquina que ha fallado se recupera, los
servicios son nuevamente migrados a la máquina original. Esta
capacidad de recuperación automática de servicios nos garantiza la
integridad de la información, ya que no hay pérdida de datos. Y
32
además evita molestias a los usuarios, que no tienen por qué notar
que se ha producido un problema.
 Sistemas operativos.- Es el software básico de una computadora que
provee una interfaz entre el resto de programas del ordenador, los
dispositivos hardware y el usuario. Las funciones básicas del Sistema
Operativo son administrar los recursos de la máquina, coordinar el
hardware
y
organizar
archivos
y
directorios
en
dispositivos
de
almacenamiento. Los Sistemas Operativos más 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 actúa entre el sistema operativo y
las aplicaciones con la finalidad de brindar a un clúster.o Interfaz única de acceso al sistema.
o Herramientas para la optimización y rendimiento del sistema.
o Escalabilidad.
 Compilador.- Un compilador es un programa que traduce otro programa
escrito en un lenguaje de programación llamado código 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.- Máquina con dos o más procesadores que
pueden trabajar simultánea y/o coordinadamente. Estas pueden ser de dos
tipos (como se mencionó en el capitulo anterior) MIMD y SIMD.
33
 Eficiencia.- Es la relación entre el costo computacional y el funcionamiento
del clúster; 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
(expresión de un número 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 numérico del procesador. Se utilizan en unidades de
millones de flops (MegaFlops), Miles de Millones de flops (GigaFlops), etc.
 Kernel.- También conocido como núcleo; 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 máquina 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 múltiples 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 tecnología de cómputo 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 serán
distribuidas entre los nodos del clúster.
34
 Proceso.- Un proceso es básicamente un programa en ejecución. Cada
proceso tiene asociado un espacio de direcciones, es decir una lista de
posiciones de memoria desde algún mínimo hasta algún máximo 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
2.3.
procesadores.
Generalidades de los clústeres.
 ARQUITECTURA
Un clúster está formado por nodos de cómputo y una red de comunicación, 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 también "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 conexión a red de alta velocidad.
 Protocolos y servicios de comunicación a alta velocidad
 Midleware que está compuesto por dos subniveles de software, el cual se
explicará con más detalle en el siguiente punto.
 Entornos y herramientas de programación paralela, compiladores paralelos,
Java, PVM, MPI, estos componentes se muestran en la figura 2.
35
Figura 2.- Arquitectura de un clúster.
*Fuente.- Sesión 1: Arquitectura Paralela Basada en Clústeres
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,
recuperación de fallos, soporte para tolerancia a fallos.
Es importante señalar que la imagen de sistema único proporciona al usuario una
visión unificada del clúster como un único recurso o sistema de cómputo. Esta
imagen está soportada precisamente por el nivel midleware que está entre el
sistema operativo y las aplicaciones de usuario y tiene básicamente 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 clúster como puntos de chequeo, recuperación automática de
fallos y soporte para tolerancia a fallos.
Algunos objetivos de esta tecnología son. Presentar una completa transparencia al usuario de forma que este no
tenga que preocuparse de detalles de bajo nivel en la implementación, ni
de cómo gestionar el sistema para optimizar su rendimiento.
 Por otro lado, la escalabilidad del sistema, ya que los clústeres pueden
ampliarse fácilmente añadiendo nuevos nodos, las aplicaciones deben
ejecutarse de forma eficiente en un rango amplio de tamaños de maquinas.
37
 Por último, también es importante la disponibilidad del sistema para
soportar las aplicaciones de los usuarios, esto, como se menciono
anteriormente, por medio de técnicas de tolerancia a fallos y recuperación
automática sin afectar a las aplicaciones de los usuarios.
Existen diversos tipos de midleware, entre los que se encuentran. MOSIX.- Es una herramienta diseñada para realizar balanceo de cargas en
el clúster de forma totalmente transparente de forma tal que los nodos del
clúster se comportan como una sola máquina, y de esta manera
incrementar el aprovechamiento de cada uno de los nodos. De igual
manera también se puede observar el comportamiento del clúster, para
esto se utiliza el monitor de carga de MOSIX llamado MON. Otra aplicación
que vale la pena mencionar es MPS la cual da un reporte del status de
procesos multicomputadores. Por otro lado cabe señalara que es un parche
para el kernel de Linux que le da la capacidad de ejecución distribuida de
procesos, lo que permite el desarrollo de una supercomputadora.
 OpenMOSIX.- Es un parche para el kernel Linux que permite a varias
máquinas actuar como un sistema multiprocesador grande. Lo que hace
OpenMosix es balancear la carga de trabajo entre todos los nodos que
forman el clúster: 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 específicamente
para
OpenMosix
ya
que
trabaja
con
aplicaciones
normales
(no
paralelizadas), siendo su funcionamiento transparente al usuario. Pero tiene
una limitación: sólo migra procesos que no usen memoria compartida, por
lo que no migra procesos multi-hilo (característica que permite a una
aplicación 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 línea de comandos y para el entorno gráfico.
o el script de inicio /etc/init.d/openmosix.
 Cóndor.- El objetivo del Proyecto Cóndor ® es desarrollar, implementar,
desplegar y evaluar los mecanismos y políticas que apoyen a la
Computación de Alto Rendimiento (HTC) en grandes colecciones de
recursos informáticos de propiedad distributiva. Guiados por los retos
tecnológicos y sociológicos de este entorno informático, el Equipo Cóndor
ha sido la creación de herramientas de software que permitirá a los
científicos e ingenieros aumentar su rendimiento informático.
 OpenSSI.- El proyecto de OpenSSI es una solución 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
estándares.
El middleware recibe los trabajos entrantes al clúster y los redistribuye de manera
que el proceso se ejecute más rápido y el sistema no sufra sobrecargas en un
servidor.
Esto
se
realiza
mediante
políticas
definidas
en
el
sistema
(automáticamente o por un administrador) que le indican dónde y cómo debe
distribuir los procesos, por un sistema de monitorización, el cual controla la carga
de cada CPU y la cantidad de procesos en él.
39
El middleware también 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 actualización, es posible migrar los
procesos a otro servidor y proceder a desconectar del clúster al primero.

Priorización de trabajos.- En caso de tener varios procesos corriendo en
el clúster, pero uno de ellos de mayor importancia que los demás, puede
migrarse este proceso a los servidores que posean más o mejores recursos
para acelerar su procesamiento.
2.4.
Clasificación de clústeres.
Como se mencionó en el capítulo anterior existen tres métodos de clasificar a los
clústeres, por su aplicación, según el propietario de los nodos, y la configuración
del clúster, en este apartado se describirá con mayor detalle cada una de estas
clasificaciones.
 Según su aplicación
Los clústeres 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 imágenes.- 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 diseño en 3D),
Reconocimiento de patrones.
 Investigación.- Física, ciencia de Bio-información (por ejemplo, estudio de
cadenas de ADN), Bioquímica y Biofísica.
 Industria.- Estudios Geológicos (extracción de minerales), Simulación
Matemática.
Su objetivo principal es alcanzar el mayor rendimiento en la velocidad de
procesamiento de datos, como ya se menciono anteriormente. Este tipo de
tecnología permite que un conjunto de computadoras trabajen en paralelo,
dividiendo el trabajo en varias tareas más pequeñas 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 número de nodos arbitrariamente.
Son utilizados de igual manera para el descifrado de códigos.
Los motivos para utilizar un clúster de alto rendimiento son dos, la complejidad del
problema a resolver y el precio de la máquina necesaria para resolverlo.
Un tipo de software para realizar un clúster de alto rendimiento es OSCAR (Open
Source Clúster Application Resources) distribuido bajo licencia GLP. Este software
trabaja bajo licencia LINUX. En Windows podría ser desarrollado sobre “WCC
2003” (Windows Computer Clúster).
41
Por otro lado se encuentran los clústeres 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 clúster, por
ejemplo. Sistemas de facturación y/o transacción
 Operaciones bancarias
 Comercio electrónico
Es un conjunto de dos o más maquinas que se caracterizan por mantener una
serie de servicios compartidos y por estar constantemente monitoreándose entre
sí. Se puede dividir en dos subclases más, estas son. Alta disponibilidad de infraestructura.- Si se produce un fallo de
hardware en alguno de los componentes del clúster, el software de alta
disponibilidad será capaz de arrancar automáticamente los servicios en
cualquiera de los otros componentes del clúster, 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 máquina original, esto
es failback. . esta capacidad de recuperación automática de servicios
garantiza la alta disponibilidad de los servicios ofrecidos por el clúster,
minimizando así la percepción del fallo por parte de los usuarios.
 Alta disponibilidad de aplicación.- Si se produce un fallo del hardware o
de las aplicaciones de alguna de las máquinas del clúster, el software de
alta disponibilidad es capaz de arrancar automáticamente los servicios que
han fallado en cualquiera de las otras maquinas del clúster. Y cuando la
máquina original se recupera es migrada la información de nuevo a ella.
Esto garantiza la integridad de información ya que no hay pérdida de datos.
42
 Según el propietario de los nodos (nodos dedicados y no dedicados)
En informática, de forma muy general, un nodo es un punto de intersección o
unión de varios elementos que confluyen en el mismo lugar, sin embargo
dependiendo del área de la informática 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 también un nodo. En
estructuras de datos dinámicas un nodo es un registro que contiene un dato de
interés 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 clúster puede estar conformado por nodos dedicados y no dedicados.
En un clúster con nodos dedicados, los nodos no disponen de teclado, mouse ni
monitor y su uso esta exclusivamente dedicado a realizar tareas relacionadas con
el clúster. Mientras que en un clúster 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 clúster, en este caso el clúster 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 diseñar un clúster, los nodos deben tener
características similares, es decir, deben tener características similares, es decir,
deben guardar cierta similaridad de arquitectura y sistemas operativos, ya que si
se conforma un clúster con nodos totalmente heterogéneos (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 cómputo y solo distribuirá cuando este se encuentre
saturado de procesos; por eso es recomendable construir un grupo de
ordenadores lo mas similar posible.
43
 Según la configuración del clúster
En este caso cabe señalar que un clúster puede ser homogéneo o heterogéneo.
Esta clasificación se desprende del punto anterior (según el propietario de los
nodos). Donde se debe entender por clúster heterogéneo al grupo de nodos con
características similares y clúster homogéneo donde los nodos son diferentes
tanto en su hardware y software.
Por otro lado se puede realizar una segunda clasificación en base a sus
características. Esta es. Alto rendimiento (High Performance)
Es un conjunto de ordenadores que está diseñado para dar altas prestaciones en
cuanto a capacidad de cálculo. Los motivos de su implementación son, por
mencionar algunos, el tamaño del problema a resolver y el precio de la máquina
para resolver dicho problema.
Por medio de este tipo de clústeres se pueden conseguir capacidades de cálculo
superiores a las de un ordenador más caro que el costo conjunto de los
ordenadores del clúster. Para garantizar esta capacidad de cálculo, los problemas
necesitan ser paralelizables, ya que el método con el que los clústeres agilizan el
procesamiento es dividir el problema en problemas más pequeños y calcularlos en
los nodos, por lo tanto, si el problema no cumple con esta característica, no puede
utilizarse el clúster para su cálculo.
Para que un problema sea paralelizable se debe hacer uso de las librería
especiales como la PVM (Parallel virtual machine) o MPI (Message passage
interface), donde la primera es usada especialmente en clúster con nodos
heterogéneos (arquitectura del procesador, sistemas operativo, entre otras), y
44
pertenecientes a diferentes dominios de red, la segunda librería usada para clúster
homogéneos
Un tipo de software para realizar clúster high performace es OSCAR (Open
Source Cluster Application Resources) distribuido bajo licencia GPL. Este software
trabaja sobre el sistema operativo Linux. En Windows se podría utilizar "WCC
2003" (Windows Computer Cluster).
 Alta disponibilidad
No varía en su definición con la definición anterior de un clúster de alta
disponibilidad clasificado así por su aplicación.
 Alta eficiencia
Son clústeres cuyo objetivo de diseño 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 clúster no es considerado un gran
problema.
45
2.5.
Ventajas y desventajas.
Algunas ventajas de los clústeres son. La relación que existe entre rendimiento y costo.- El rendimiento de un
clúster compite con el rendimiento de las mejores y más costosas
Workstations a un precio muy bajo ya que utiliza máquinas comunes y más
baratas.
 Flexibilidad.- Es posible implementar un clúster no sólo para tareas de un
área específica o única, sino que es capaz de implementarse en distintas
áreas del conocimiento.
 Disponibilidad.
 Escalabilidad.
 Crecimiento por incrementos.- Dependiendo de la capacidad necesaria del
clúster es posible incrementar los nodos arbitrariamente hasta alcanzar el
rendimiento, la capacidad y la velocidad deseada.
 Implementación de tecnología de punta.- Se implementa la mejor tecnología
en cuanto a calidad y coste se refiere, y con esto no quiere decir que la
tecnología más cara es la mejor.
 Aprovechamiento de ciclos perdidos.- Cuando el clúster 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 resolución
de los mismos.
46
Por otro lado se encuentran las desventajas, estas son. Software.
 Problemas de administración y gestión.
 Memoria físicamente distribuida.
 Varias copias del sistema operativo.
 La red es el cuello de botella del sistema.
2.6.
Retos en la implementación de un clúster
Es importante conocer primeramente algunas consideraciones de diseño de un
clúster, como son el maximizar la relación precio/prestaciones, aseguramiento de
la disponibilidad, y sobre todo, la restricción que se tiene a un presupuesto. Se
debe recordar también que está conformado principalmente por nodos de cómputo
y una red de comunicación.
El requisito fundamental para realizar el diseño de un clúster es el implementar un
supercomputador con un coste reducido y altas prestaciones y rendimiento. La
metodología de diseño de un clúster es de abajo-arriba (figura 3) y esta es. Requisitos de rendimiento.
 Hardware.
 Sistema operativo.
 Middleware.
 Aplicaciones (incluyendo la programación).
47
Figura 3.- Diseño abajo-arriba de un clúster.
Figura 3.- Diseño abajo-arriba de un cluster.
*Fuente.- Sesión 1: Arquitecturas Paralelas Basadas en Clústeres
Los problemas para obtener el máximo 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 asignación de memoria.
 Middleware.- Distribución y coordinación de tareas ineficiente, latencias de
comunicación altas.
 Aplicaciones.- Algoritmos e implementaciones ineficientes que no explotan
el paralelismo inherente de los problemas.
48
CAPÍTULO 3: Arquitecturas y herramientas para la
implementación de un clúster
49
3. Arquitecturas y herramientas para Implementación
de un clúster.
En este capítulo se abordará la arquitectura de un cluster y las herramientas
necesarias para su implementación. 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
además con los requerimientos de un sistema tolerante a fallos.
De acuerdo con su objetivo de diseño los clústeres se clasifican como clústeres
implementados para lograr un alto desempeño o alto rendimiento (que es el
enfoque de esta tesina), mientras que otros se utilizan para lograr alta
disponibilidad.
De esta manera cabe señalar que un cluster de alto rendimiento está diseñado,
como su nombre lo indica, para dar altas prestaciones en cuanto a capacidad de
cálculo y procesamiento, resolviendo problemas de aplicaciones que así lo
necesiten, por ejemplo, problemas con necesidad de gran cálculo. Esto se obtiene
mediante el uso de un grupo de maquinas individuales las cuales están
conectadas entre sí a través de una red de alta velocidad, este tipo de conexión
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 clústeres de alta disponibilidad tienen como objetivo garantizar el
funcionamiento ininterrumpido de ciertas aplicaciones.
Los clústeres de altas prestaciones, como se menciono en capítulos anteriores, se
utilizan en campos como la simulación de biotecnologías, simulaciones petroleras,
modelación de mercados financieros, grandes cálculos matemáticos, predicción
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 demás nodos componentes del cluster se encargan automáticamente 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 dañado.
El implementar un cluster indica el uso necesario de software de control
especializado, este tipo de software puede ser utilizado a nivel de aplicación o a
nivel de sistema operativo.
A continuación se muestran algunos ejemplos de herramientas que pueden usarse
en la implementación de clústeres en Linux. IP Virtual Linux Server (IPLVS).- Es una solución que sirve para gestionar
el balance de carga (es la técnica 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 código
abierto. Su objetivo es desarrollar un servidor Linux de alto rendimiento que
brinde una buena escalabilidad, confiabilidad y robustez usando tecnologías
de tipo cluster.
 Piranha.- Este software viene incluido en la distribución Linux RedHat. Se
compone por un servido LVS (Linux Virtual Server), este software permite
administrar los servicios de la web con un navegador a través de interfaz
gráfica. LVS permite crear un cluster de balanceo de carga, donde un nodo
maestro reparte y gestiona las conexiones entre los demás nodos esclavos,
este tipo de servidor LVS es capaz de soportar hasta 200 nodos esclavos.
51
 Kimberlite.- Solución que brinda Linux para clústeres de dos nodos,
permite la conexión a un disco compartido de quórum (técnica
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) vía SCSI (Sistema de Interfaz para
Pequeñas
Computadoras)
o
por
fibra
(SAN,
Red
de
Área
de
Almacenamiento, Storage Area Network).
 Heartbeat.- Está diseñado para detectar cuando un servicio se ha caído o
falla en una máquina y administrador de cluster. Puede usar red Ethernet
para comunicarse con los demás nodos componentes del cluster.
Por mencionar un ejemplo de clúster 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 clúster se
implementó debido a la necesidad de brindar servicios a más de 350 usuarios de
la red local y a las dependencias provinciales del país (Bayona González, 2009).
En la implementación de este clúster se hace mención del uso del software de
control Heartbeat y Debian GNU/Linux como sistema operativo. Heartbeat es una
aplicación
desarrollada
por
Linux-HA.
Permite
implementar
clústeres
descentralizados, por otro lado se sabe que es una aplicación estable, flexible y
eficiente. En Debian ya esta precargado Heartbeat por lo que facilita el trabajo.
La implementación de un cluster se lleva a cabo mediante los siguientes pasos. Configuración 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 técnica llamada “IP Aliasing”. La interfaz de red virtual otorgará los
servicios del nodo que se esté utilizando.
52
Para realizar la configuración de la interfaz por medio de la técnica “IP Aliasing” se
deben seguir los siguientes pasos.-
Si se compila IP Aliasing cómo módulo se debe correr
# /sbin/modprobe 0069p_alias
Después determinar las otras direcciones IP que necesitas configurar. Para este
ejemplo utilizaremos una red local. En éste caso, la IP maestra de mi máquina 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.). Básicamente, hay un
pequeño 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 máquina 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
También debes agregar tu gateway predeterminada de forma usual:
# /sbin/route add default gw 172.16.16.39
Esto también puede hacerse en los archivos de configuración. En Debian, por
ejemplo, se haría 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
 Instalación y configuración 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 algún otro usuario
en el script de sincronización de datos.
54
A continuación se presentan los archivos disponibles para la configuración de
OpenSSH, sin olvidar que tiene dos conjuntos diferentes de archivos de
configuración, uno para los programas cliente (SSH, SCP y SFTP) y otro para el
demonio servidor (SSHD). La información de configuración 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 habían
tenido contacto nunca antes) usados para el intercambio de la clave
Diffie-Hellman que es imprescindible para la construcción de una capa
de transporte seguro. Cuando se intercambian las claves al inicio de una
sesión 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 autentificación del host.

SSH_config.- El archivo de configuración 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 configuración para el demonio sshd.

ssh_host_dsa_key.- La clave privada DSA usada por el demonio sshd.

ssh_host_dsa_key.pub.- La clave pública DSA usada por el demonio
sshd.

ssh_host_key.- La clave privada RSA usada por el demonio sshd para
la versión 1 del protocolo SSH.

ssh_host_key.pub.- La clave pública RSA usada por el demonio sshd
para la versión 1 del protocolo SSH.

ssh_host_rsa_key.- La clave privada RSA usada por el demonio sshd
para la versión 2 del protocolo SSH.
55

ssh_host_rsa_key.pub.- La clave pública RSA usada por el demonio
sshd para la versión 2 del protocolo SSH.
La información para la configuración SSH específica para el usuario está
almacenada en el directorio principal ~/.ssh/:

authorized_keys.- Este archivo que contiene una lista de claves
públicas "autorizadas". Cuando un cliente se conecta al servidor, el
servidor valida al cliente chequeando su clave pública firmada
almacenada dentro de este archivo.

id_dsa.- Contiene la clave privada DSA del usuario.

id_dsa.pub.- Contiene la clave pública DSA del usuario.

id_rsa.- La clave RSA privada usada por ssh para la versión 2 del
protocolo SSH.

id_rsa.pub.- La clave pública RSA usada por ssh para la versión 2 del
protocolo SSH.

Identity.- La clave privada RSA usada por ssh para la versión 1 del
protocolo SSH.

identity.pub.- La clave pública RSA usada por ssh para la versión 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
 Instalación
y
anteriormente
configuración
propuestas
en
de
algunas
cada
uno
de
las
de
los
herramientas
nodos
que
complementan el cluster (Heartbeat, Kimberlite, Piranha o IP Virtual
Linux Server).-
Se mencionarán a continuación 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).
Configuración de /etc/ha.d/authkeys.- En este archivo se configura las llaves de
autenticación 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 podría 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
'caído'. Por ejemplo:
# definición 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
# Configuración 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 máster 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 compilándolo desde el
código fuente original. Para ello nos descargamos el fichero kimberlite-2.0.0.tar.gz
de la página web de Mission Critical Linux, y lo compilamos e instalamos (en
ambas máquinas 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 configuración 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 continuación tenemos que configurar correctamente en ambas máquinas el
software recién instalado. La configuración 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 configuración ha de
ser almacenada en las particiones de quórum.
59
Para simplificar el proceso de configuración, Kimberlite nos proporciona la utilidad
member_config, residente en el directorio /opt/cluster/bin. Esta utilidad nos hará
algunas preguntas sobre cómo queremos configurar nuestro cluster, y realizará la
configuración por nosotros. Conviene tener preparada la información que se nos
solicita antes de ejecutar la utilidad. La información solicitada es: hostname y
dirección IP de ambos equipos del cluster, dispositivos raw asociados a las
particiones de quórum, número 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, sólo nos queda inicializar
las particiones de quórum. Para ello utilizamos la orden diskutil -I. Y una vez
inicializadas las particiones, podemos arrancar el software de cluster.
El procedimiento de configuración descrito en los párrafos 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 partición de quórum, diskutil -I

Comprobar que la partición 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 indicándole que lea la configuración
ya existente en la partición de quórum, member_config -init=/dev/raw/raw1

Arrancar los servicios de cluster, service cluster start
60
Para comprobar que los servicios de cluster están funcionando correctamente,
podemos ejecutar la orden clustat -i 2, que nos mostrará en pantalla, cada 2
segundos, el estado de nuestro cluster.
o Piranha.INSTALACIÓN DEL PAQUETE PIRAHNA
o Instalación 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 Instalación 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 Configuración Piranha mpegav
o Documentación nfs-utils-1.0.6-31EL.i386.rpm
 Instalación y configuración de las aplicaciones que brindarán
servicios en cada uno de los nodos componentes del cluster.
 Sincronización 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 capítulos anteriores se mencionó que existe una clasificación de arquitecturas
de computadoras propuesta por Flynn, la cual divide a las computadoras según el
número de instrucciones y de la secuencia de datos que la computadora utiliza
para procesar información. Esta clasificación a manera de recapitulación (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 clústeres existentes y estos
son. NUMA (Non-Uniform Memory Access).
 MPI (Message Passing Interface).
 PVM (Parallel Virtual Machine).
 Beowulf.
63
3.2.
Software de paralelización
Para hablar de un software de paralelización, primero hay que definir el significado
de paralelización en el área de la computación, y esto es, hacer los problemas
más sencillos y distribuirlos entre varios procesadores, sin embargo esta solución
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 programación paralela en esta sección 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 también 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 trabajarán se debe hablar sobre la Ley de Ahmdal y de otros problemas
relacionados con la ordenación de instrucciones debido a las dependencias
existentes.
Se darán ejemplos de programación con OpenMosix y explicaciones con PVM o
MPI y se explicará a detalle conceptos básicos en paralelización como
granularidad de paralelismo o el problema de la transparencia en lo referente a la
programación.
 Ley de Ahmdal.
José Luis Bosques la define como: “Si la fracción serie de un programa es “s”
el speedup máximo que se puede alcanzar es 1/s.”
Speedup= s
+ p = 1 ____ = 1
s + p/N
s + p/N
s
64
 Limites en el hardware.
En lo referente a la aplicación de programas paralelos en maquinas de tipo de
Multiprocesamiento Simétrico (SMP), debemos tener en cuenta el modo de
ejecución de las instrucciones. En la actualidad la mayoría de los ordenadores
comerciales son los conocidos como ordenadores superescalares los cuales
mandan varias instrucciones al mismo tiempo aprovechando de esta manera una
división por fases., esta división 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 cíclica.
Para lograr la división por fases es necesario solucionar de la manera más
adecuada los retardos posibles por dependencias de datos entre instrucciones,
esto quiere decir que existe una dependencia de datos cuando la ejecución de dos
o más instrucciones dependen de los parámetros de entrada o salida de otras
instrucciones. Generalmente la solución es hacer un renombramiento de registros
lanzamiento de instrucciones fuera de orden, unidades superescalares y
supervectoriales, entre otros.
 Granularidad
del
hardware
(Instrucción
maquina
o
lenguaje
ensamblador).
Existen gran variedad de mejoras de rendimiento a los límites que se imponen por
el programa, estas mejoras se van incorporando en los procesadores de última
generación. El problema es que esta solución puede resultar en muchos casos
demasiado cara, sobre todo por la dificultad o tiempos de implementación.
Además 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 límites en lo que se
refiere al incremento del rendimiento de cualquier sistema en el que se utilicen
fragmentos de código no paralelizable, es decir, de todos los sistemas que
actualmente se conocen. Una vez asumida dicha limitación, no queda más
opción que optimizar los programas para que el rendimiento de los mismos en
el sistema sea el mejor posible. Esto a menudo implica añadir una fase más en
la vida de nuestros programas. Así pues a las fases de análisis, diseño e
implementación hay que añadir una fase de paralelización, 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 análisis, diseño e implementación hay que añadir una
fase de paralelización, 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
códigos de procesos, rutinas, módulos o bucles a nivel de instrucción. “El
término granularidad se usa como el mínimo componente del sistema que
puede ser preparado para ejecutarse de manera paralela” (Buytaert, 2006).
66
Existe una clasificación 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 más pequeña 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 módulos, 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 también diversas librerías como el PVM o MPI. El
hardware comúnmente 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 módulos o procesos. Este es el tipo de
paralelismo que explota el programador mediante programas que no tienen
porque requerir el uso de ninguna librería externa, sino únicamente el uso de
conocimientos de programación para paralelizar un algoritmo. Se basa
principalmente en cualquier tipo de medio que use el programador para la
creación de un programa, que solucione de manera paralela un problema, sin
67
tener que hacer uso de otras herramientas más que únicamente su habilidad de
programador y de un buen algoritmo. Estos sistemas son los más limitados al
carecer de métodos específicos para la comunicación entre nodos o
procesadores y se da generalmente en sistemas de débil acoplamiento.
 Problema de transparencia.
Este es uno de los mayores problemas existentes en programas que utilizan la
paralelización. Al tiempo de crear un programa que resuelva un problema
mediante el uso de un algoritmo que explote de alguna manera la paralelización
hay que conocer el sistema que se ejecutará. Dependiendo del sistema que se
elija para su paralelización 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 implementación.o Modelo de programación 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
comunicación como los métodos de migración y demás 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 programación implícita.
Este tipo de programación basa su funcionamiento en que el programador
conozca lo mínimo 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 programación es el OpenMosix, donde la
programación y la migración de procesos no requieren de conocimiento del
usuario respecto al cluster de máquinas.
Lo recomendable para lograr una
transparencia en la programación será programas de manera completamente
implícita 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 programación paralela, el programador debe conocer a
fondo la programación 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 comunicación entre
los procesos del sistema, su localización, rutinas o tareas, la paralelización del
código del programa, entre otras tareas, de esta manera el programador no tendrá
que preocuparse de los detalles y se vería reflejado en desarrollos más rápidos y
económicos.
De esta manera, el primer paso para el desarrollo de un programa paralelizado es,
plantear el problema mediante técnicas de “divide y vencerás”, se debe
localizar lo paralelizable en el problema de una manera abstracta antes de pensar
en la paralelización del código.
Existen dos formas conocidas y fáciles para comprender el paralelismo.-
1. El paralelismo funcional divide las aplicaciones en funciones.
Es posible verlo como el paralelismo del código. Es decir, se puede dividir en
entrada, preparación del problema, preparación de la salida, salida y mostrar la
solución. Esto permite a los nodos componentes del cluster producir una cadena,
se puede comparar con la segmentación 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 paralelización no es muy comúnmente utilizada ya que es
muy difícil 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 idénticos entre sí y
únicamente lo que hacen es dividir la cantidad de información entre los nodos y
procesarla en forma paralela. Esta técnica es la más utilizada debido a su
sencillez.
Kris Buytaert (2006) menciona como ejemplo “los films //Final Fantasy// o //El
señor de los anillos// que fueron renderizadas en un cluster de renderización
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 película entre todos los ordenadores. Para ser más
exactos, primero se divide el número de frames por el número de nodos y se
envía el número 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 preparación y suele ser secuencial, puesto que es una pequeña parte
de la producción. 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 película. En este caso en
particular se usa paralelismo de datos, y aunque algunas imágenes tardan más
en renderizarse que otras y por lo tanto algún nodo tardará menos en acabar su
trabajo que otro, lo que se hace es no elegir imágenes 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 más o menos
70
todos los nodos se mantienen en el máximo rendimiento (si no se comprende
esto, piense en lo poco que tardaría el nodo que renderize unos títulos de
crédito simples)”.
Una vez analizada la fuente de paralelismo de un programa se procede a
realizar el estudio en pseudocódigo o cualquier otro sistema parecido. Se
deben conocer los límites y las características del sistema para el que va a
programarse.
Es importante señalar 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 comunicación entre los procesos, los
módulos, nodos o elementos del cluster.
La paralelización 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 también por lenguajes de programación. Uno
de estos principios generales es el denominado principio de localidad, del cual
existen dos tipos. Localización temporal.- Se basa en la manera en la que se puede
encontrar el código de los programas y como se ejecutan en el tiempo. Por
lo general, los programas están 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
están relacionadas se localizan en zonas de memoria adyacentes, así como
las instrucciones que se ejecutan secuencialmente.
71
 Localización 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 están 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 través 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
más independientes y ortogonales posibles (Buytaert, 2006).
En el caso de este trabajo, que es la programación de un cluster se le llamará
elementos de procesos a los módulos, 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
comunicación a través de la red, lo que puede llegar a ser bastante costoso.
72
3.3.
Estructura de un clúster.
A continuación se presentará un ejemplo de cómo está estructurado un cluster
sobre una plataforma Linux, para ser más objetivos se dará un vistazo al cluster
OpenMosix de Linux, este ejemplo fue tomado del Instituto de Ingeniería 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 demás fueran de la misma
arquitectura.
Las principales características 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 idénticos al nodo principal, la
única diferencia radica en la velocidad del procesador que es menor a la del nodo
maestro.
Las principales características 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.- Distribución de Linux que soporta
versiones de kernels 2.4.x compatible con OpenMosix, además de ser la
distribución que se utiliza para servidores y estaciones de trabajo de los usuarios
en el Instituto de Ingeniería 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 característica de journaling
que previene el riesgo corrupciones del sistema de archivos y es de los más
utilizados por presentar mejor desempeño 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 administración

User Lan Tools.- Las herramientas de área de usuario son lo mínimo que
necesita cualquier administrador o usuario de OpenMosix para el manejo de
los procesos.

OpenMosixView.- Aplicación gráfica de monitoreo de OpenMosix, con ella
puede realizarse parte de las tareas comunes que se harían con los
comandos de las User Lan Tools.
75
Topología
La topología 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
través del switch, siendo éste el encargado de controlarlas. Por este motivo, el
fallo de un nodo en particular es fácil de detectar y no daña 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 característica importante
es que soporta telefonía 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 también soporta tráfico de telefonía o también llamado VoIP,
tecnología con que cuenta el Instituto de Ingeniería, 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, según 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 Ingeniería, donde se
encuentra físicamente el cluster, como lo muestra la figura 4.
76
Figura4.- Diagrama del cluster
*Fuente.- *Fuente.- Estructuración de un clúster Beowulf.
Cable
El cable con el que están conectados los nodos del cluster al switch que los une,
es estructurado de la marca Kron categoría 6, para velocidades de transmisión 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 visión de cómo es la estructura de un cluster,
sus componentes, también las características con las que cuentan los
componentes de este cluster pueden considerarse como las características con
las que deben contar los clústeres a implementarse. Da una idea del tipo de
conexión que puede realizarse en un cluster (en el ejemplo anterior se utilizo el
tipo estrella), y los tipos de cableados necesarios para realizar esta conexión así
como las velocidades necesarias para la misma.
3.4.
Configuración de un clúster tipo Beowulf
La propuesta de implementación del clúster para computo de alto rendimiento que
en este trabajo se promueve, es la realización 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 estándar. Cabe señalar que
ejecuta un sistema operativo de distribución 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 ejecución de tareas que requieren de una gran capacidad de cálculo.
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 búsquedas y compartir información, sino que por el contrario, están
totalmente dedicados a las tareas asignadas al cluster, teniendo contacto con el
exterior un único nodo o componente.
78
La configuración de este tipo de cluster principalmente se basa en una
comunicación mediante una red de interconexión, para ello existen dos tipos de
red disponibles. El primero, es un Hub Ethernet que es un dispositivo de red que
actúa como un bus broadcast, donde una señal 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 más computadoras envían
paquetes de información al mismo tiempo se producirá una colisión, 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 conexión entre los nodos que componen el cluster), este tipo de
Switch ofrece más ancho de banda acumulado, lo que permite múltiples
comunicaciones al mismo tiempo, si no existen problemas en los puertos de salida
del switch
Ethernet se
podrán
enviar
varios paquetes de
información
simultáneamente, este tipo de conexión es la que se utilizará para la
implementación de este cluster ya que se pretende trabajar con un mínimo de 10
computadoras marca HP del centro de cómputo de la Facultad de Sistemas
Computacionales Administrativos de la Universidad Veracruzana.
A continuación se describirán 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 computación paralela. Este sistema consiste de un nodo maestro y
uno o más nodos esclavos conectados a través 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 cómputo 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 conexión al exterior del mismo. Las máquinas grandes de Beowulf
pueden tener más de un nodo maestro, y demás nodos dedicados a diversas
tareas específicas como consolas o estaciones de supervisión. 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 configuración de nodos
esclavos sin disco duro, estos nodos no saben su dirección IP sino hasta que el
mismo nodo maestro se los indica.
La figura 5 muestra gráficamente la arquitectura de un cluster Beowulf.
Figura 5.- Arquitectura de un Cluster Beowulf.
*Fuente.- Estructuración de un clúster Beowulf.
80
Existen dos tipos de configuraciones de hardware utilizadas para la construcción
de este tipo de cluster, estos son, los arreglos de discos o RAID
(Arreglo
Redundante de Discos No Expandibles), esta última opción indica que un arreglo
es construido a partir de discos de mediana capacidad que son comunes en el
mercado.
La mayoría de las veces los dispositivos usados para construir un arreglo RAID
son particiones elaboradas sobre la agrupación de varios discos. Por lo general las
particiones que forman parte del RAID se encuentran en diferentes discos.
Dependiendo de las características del RAID se pueden clasificar los arreglos por
niveles o modos, los cuales son.o Modo Lineal.-
Se refiere a la combinación de dos o más discos, para conformar un disco físico,
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, después el
segundo y así sucesivamente, en forma lineal.
o Modo RAID-0.-
También se le conoce como modo stripe. Este modo es muy similar al anterior,
pero no es una concatenación de discos, más 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 opción 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 información 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 información 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 información 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 formarán 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 distribución Linux, asimismo, utiliza bibliotecas de pase de
mensajes como la PVM o MPI. En un principio, Beowulf utilizaba la distribución
Linux Slackware, sin embargo, actualmente la mayoría de los cluster han migrado
a la distribución RedHat por la facilidad de administración 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 distribución de la carga
generada por las aplicaciones secuenciales o paralelizadas.
Es importante de igual manera mencionar la clasificación de este tipo de cluster. Clase I.-
Estos sistemas se componen por maquinas cuyos componentes cumplen con la
prueba de certificación “Computer Sopper” lo que significa que sus elementos son
de uso común y pueden ser adquiridos en cualquier tienda distribuidora. Es por
esto que este tipo de clústeres son están diseñados para ningún uso ni
requerimientos en especial.
 Clase II.-
Son sistemas compuestos por máquinas cuyos componentes no pasan la prueba
de certificación "Computer Shopper" lo que significa que sus componentes no son
de uso común y por tanto no pueden encontrarse con la misma facilidad que los
componentes de sistemas de la clase anterior. De tal manera, pueden estar
diseñados para algún uso o requerimiento en particular. Las máquinas ubicadas
en esta categoría pueden presentar un nivel de prestaciones superior a las de la
clase I.
 Elementos de un cluster Beowulf.
Al instante de la construcción del cluster es necesario tomar en cuenta diversos
factores que influyen en el diseño del mismo y para la toma de decisiones que
contribuyan al mejor desempeño del mismo.
83
Se deben estudiar en este momento elementos como.o Disco.-
Existen métodos muy diversos para la configuración de los medios de
almacenamiento de un cluster Beowulf, dichos medios difieren en precio,
rendimiento y facilidades de administración.
 Clientes sin disco (Disk-less).-
Es importante señalar que los nodos esclavos o componentes el sistema no
poseen un disco duro interno, tomando los sistemas de archivos a través de la red.
Es el nodo maestro quien proporciona a través de NFS (Network File System, es
un protocolo de nivel de aplicación, según 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 configuración es la facilidad en la
administración 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 tráfico NFS se incrementa y dependiendo de la red instalada en el
cluster esta puede ser una configuración poco adecuada para el cluster.
84
 Instalación 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 configuración el tráfico NFS desaparece por completo para obtener el
sistema operativo o cualquier otra aplicación por parte de los nodos esclavos.
 Instalación NFS Estándar.-
Esta configuración 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 través 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 información ya que existe la presencia de más de un
dispositivo físico para el manejo de los datos. Sin embargo, este tipo de
configuración 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 económico con el que contamos
 Los requerimientos de memoria de las aplicaciones que se ejecutarán en el
cluster.
85
La principal razón para contar con una memoria de gran tamaño es el evitar que
las aplicaciones necesiten de áreas de swap para continuar ejecutándose
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 configuración 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 razón 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 clústeres son construidos con procesadores Alpha o Intel x86. El
uso de otro tipo de procesador también está permitido, sin embargo, no se
consideran de uso común, ya que se elimina de esta manera una de las
principales características de Beowulf, la cual es el uso de componentes comunes
lo que permite reemplazar fácilmente y de manera económica cualquier
componente del sistema.
o Simetric MultiProcessor (SMP).-
Las maquinas con más de un procesador son usadas de manera común en
clústeres Beowulf ya que proporcionan una gran capacidad de prestaciones. Una
de las principales ventajas en el uso de SMP, además del incremento de poder, es
la gran reducción de tarjetas de red y del tráfico en la red.
86
Ya que SMP comparte totalmente la memoria RAM, tiene únicamente un espacio
de memoria, esto simplifica tanto el sistema físico como la programación de
aplicaciones. Este espacio de memoria único existente permite que un sistema
operativo con multiconexión distribuya las tareas entre varios procesadores, o
permite que una aplicación obtenga la memoria necesaria para una simulación
compleja. Es importante también mencionar que la memoria globalmente
compartida también vuelve fácil la sincronización de los datos.
En la figura 6 se muestra la estructura de SMP.
Figura 6.- Estructura de SMP
*Fuente.- Estructuración de un clúster Beowulf.
87
o Massively Parallel Procesing (MPP).-
Este se considera otro diseño de procesamiento paralelo. Este diseño evita los
cuellos de botella en el bus de la memoria, no usando memoria compartida, en
cambio utiliza la distribución 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 análogo 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 tráfico del bus, gracias a que cada
sección de la memoria observa exclusivamente aquellos accesos que le estén
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 demás
procesadores. Se le considera a esta tecnología, una tecnología escalable.
88
Figura 7.- Estructura de MPP.
*Fuente.- Estructuración de un clúster Beowulf.
o Red.-
La topología de red recomendada para la implementación de un cluster Beowulf es
de tipo Bus o barra, ya que facilita la escalabilidad al momento de requerir la
incorporación 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 implementación y la construcción de un cluster
Beowulf, con el objetivo de dar las bases para la implementación de un cluster de
este tipo en el centro de cómputo de la facultad.
89
En este momento se tratarán puntos como. Consideraciones necesarias para la creación del cluster Beowulf.-
Como se ha mencionado ya anteriormente se requieren nodos esclavos y uno
maestro, en este caso serán nueve esclavos y uno maestro, una red local de
interconexión, un sistema operativo en los nodos, el cual será Linux y un método
para que los programas aprovechen la naturaleza paralela del Beowulf.
Abarca Castro Miguel (2008) menciona en su trabajo “estructuración de un cluster
Beowulf” que “el proyecto Beowulf se enfoca a la distribución Red Hat Linux, si
bien sus componentes pueden instalarse en cualquier distribución. Cualquier
distribución moderna incluye los componentes necesarios para la configuración del
equipo como una estación de trabajo en red; esto incluye el kernel de Linux, el
conjunto de utilerías y software GNU, y una serie de programas y aplicaciones
como compiladores y herramientas de cómputo científico”.
Es importante mencionar que los paquetes o elementos que se requieren
adicionar a la distribución, están 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 implementación de este cluster.
90
o Hardware.
 Comunicación entre los nodos.-
El uso de una red Ethernet tiene ventajas y algunas características relevantes, la
principal es la facilidad de instalación y su bajo costo. Cabe señalar que la
popularidad de la red Ethernet ha provocado desarrollos que permiten incrementar
el desempeño según se necesite. Un cluster se puede beneficiar con el uso de
switches, los cuales segmentan el tráfico en el bus Ethernet reduciendo la
saturación y colisión del mismo.
 Consideraciones para equipos sin disco duro.-
La utilización de estaciones disk-less, está bastante difundida ya que permite un
desempeño aceptable para las terminales que por lo normal tienen la función de
desplegar el trabajo realizado en un servidor multiusuario. Las terminales de este
tipo requieren un mínimo trabajo de mantenimiento y configuración y por lo general
estas funciones se hacen en un servidor central.
Por lo general el recurso de interés de las estaciones es su procesador y memoria,
considerados como elementos de trabajo básicos del cluster. Aunado a esto, no se
pretende que los usuarios tengan directamente acceso a estas estaciones. Esta
técnica de arranque da ciertas ventajas como la centralización de todos los
archivos de los nodos en un servidor central, así como cierta economía en los
requerimientos de equipo, pues se ahorra el tener un disco duro en cada uno de
los nodos esclavos del cluster.
Esta técnica se considera como una extensión 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 clústeres suele
emplearse para facilitar la distribución de los programas a ejecutar.
91
Sin embargo es importante mencionar las dos grandes desventajas del uso de
esta técnica. La primera es el incremento del uso del disco duro en el servidor central.
 La segunda es el bajo desempeño 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 rápida se creen cuellos de
botella en la misma.
o Software.
 Instalación y arranque del sistema operativo en el servidor
central.-
El sistema operativo en el servidor central sirve como base para la creación de
directorios o sistemas de archivos para los nodos. Este servidor debe tener el
software para brindar los servicios necesarios para el arranque y operación de los
nodos.
92
 Instalación y configuración de software de inicialización
en los nodos (disk-less).-
El arranque remoto de las estaciones sin disco duro, es una técnica que también
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 método 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 dirección IP de un servidor, utilizando los
protocolos BOOTP protocolo es utilizado por los clientes de red para
obtener su dirección IP de manera automática) o DHCP. Con los datos
entregados por el servidor el arrancador de red realiza la configuración
básica 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 pequeños archivos
entre ordenadores en una red) para transferir un archivo desde el servidor,
cuya ubicación normalmente se especifica como parte de la configuración
recibida por BOOTP o DHCP. Este archivo comúnmente es el kernel que
debe cargar la estación 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
 Asignación automática de dirección IP.-
Tanto el protocolo BOOTP como el DHCP, como ya se mencionó permiten la
asignación de la información de configuración para las estaciones de trabajo
desde un servidor central. En los dos protocolos el usuario realiza una transmisión
de tipo broadcast con su dirección hardware (dirección MAC, Media Access
Control). Ya sea el servidor BOOTP o DHCP toman dicha petición y retornan al
cliente o usuario la información solicitada, que básicamente consta de la dirección
IP que el cliente debe usar.
Abarca Castro Miguel (2008) menciona que “El archivo de configuración es
relativamente sencillo, sin embargo es un tanto extenso ya que se requiere una
sección host para cada nodo del cluster”. A continuación 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 asignación
#dinámica 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 configuración por
# host. cada bloque especifica un host, notar la
# dirección IP fija, el hostname que se asignará a
# cada nodo, y la direccion hardware ethernet que
# especifica a que direccion MAC se asignarán
# 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 explicación que brinda Abarca Miguel (2008) acerca de este código es. La dirección MAC (indicada por el parámetro hardware ethernet).

La dirección 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 razón
de este último parámetro 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 función 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 contraseña.
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 configuración e
paquetes que se mencionó anteriormente, sin embargo por lo general esta
deshabilitado. Para poder habilitarlo, menciona Miguel Abarca, “se debe agregar la
siguiente línea en el archivo de configuración /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 línea de código como “es una
línea de configuración tradicional del servidor inetd. En este caso se hace notar
que el último parámetro (/tftpboot) indica el directorio que contiene los archivos a
compartir por medio de TFTP.”
 Cargador de arranque.-
Es importante hacer mención del cargador de arranque. Dicho cargador es el
programa responsable del inicio de la interfaz de red, la obtención de los datos de
la configuración básica y de cargar por medio de TFTP el archivo especificado en
esta última configuración. Para poder llevar a cabo este programa se cuenta son
dos paquetes que son.
Netboot.- Utiliza los manejadores de paquetes que están incluidos en la
mayoría de las tarjetas de red disponibles en el mercado común, esto
permite tener una gran compatibilidad con distintos tipos de tarjetas.

Etherboot.- Esta basado en Netboot, pero brinda un código más 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 tamaño reducido lo
que permite evitar problemas con las tarjetas de red soportadas.
 Creación 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 configuración en los componentes del cluster es bastante
particular, el kernel debe tener internamente las funciones necesarias para
inicializar el dispositivo de red, obtener su configuración de un servidor remoto y
montar su sistema de archivos raíz a través 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 módulos que controlan a los dispositivos
e implementan algunas características a nivel kernel. En Linux, se dice que los
módulos necesarios deben compilarse monolíticamente 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 información
de configuración a través de algún protocolo como DHCP o BOOTP.
 DHCP support
 BOOTP support
 NFS Filesystem Support.- Ya que todos los sistemas de archivos
montados por los nodos residirán en un servidor NFS, esta opción es
indispensable para la operación de los nodos.
 Root File System on NFS.- Por medio de esta opción, el kernel monta un
sistema de archivos en un servidor NFS como su sistema raíz.
 Soporte para las tarjetas de red que se vallan a utilizar.
 Organización de sistemas de archivos para NFS.-
Cada nodo integrante del cluster requiere de un sistema de archivos raíz 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 estándar llamado
Filesystem Hierarchy Estándar (FHS, estándar de jerarquía del sistema de
archivos). El objetivo de este estándar es el poder homologar la organización de
los sistemas de archivos entre las distribuciones Linux, mejorar la interoperabilidad
de las aplicaciones, brindar herramientas de administración de sistemas así como
98
herramientas de desarrollo y scripts, y por último el poder contar con una mayor
uniformidad de uso y documentación para los sistemas adheridos al estándar.
Este estándar (FHS), intenta mantener la cantidad de archivos en el directorio raíz
al mínimo (excepto para los directorios /usr, /opt, /var y /home) obedeciendo a
ciertos criterios básicos, uno de estos criterios es realmente importante para las
estaciones diskless y este según Miguel Abarca es “el sistema de archivos raíz
contiene muchos archivos de configuración específicos a cada sistema, como
puede ser configuración de red o nombre del host. Esto implica que el sistema de
archivos raíz no siempre se puede compartir entre sistemas en red. El mantener el
sistema de archivos raíz lo más compacto posible minimiza el espacio
desperdiciado por archivos no compartibles. También permite minimizar el tamaño
del sistema de archivos inicial, sea local o remoto”.
Los directorios de nivel superior especificados por el estándar FHS son. Bin.- Binarios de comandos esenciales (uso público)
 Boot.- Archivos estáticos de arranque del sistema
 Dev.- Archivos de dispositivos
 Etc.- Configuración específica del sistema
 Home.- Directorios de usuarios
 Lib.- Bibliotecas compartidas esenciales
 Mnt.- Punto de montaje para otros sistemas de archivos
 Opt.- Software de aplicación adicional
 Root.- Directorio del superusuario
 Sbin.- Binarios esenciales del sistema
 Tmp.- Archivos temporales
 Usr.- Jerarquía 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 jerarquía raíz 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
configuración 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 raíz 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 versión RedHat pero no se instala automáticamente, 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
señalar, que requiere un archivo de configuración 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 línea indica el directorio a exportar, seguido de
opciones que controlan el acceso al recurso. En este caso estamos especificando
que los directorios solo podrán ser exportados a hosts con dirección IP dentro de
la subred 192.168.10.0 y máscara 255.255.255.0 (lo cual corresponde
precisamente a la subred que estamos empleando para los nodos del cluster).
Los parámetros entre paréntesis 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. Comúnmente se
especifica la opción ro (read only), pero en este caso se requiere acceso total
porque los nodos requerirán la capacidad de escribir en sus sistemas de archivos
remotos.
El parámetro no_root_squash desactiva el “aplastamiento de root”, que es el
comportamiento por omisión 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 anónimo con privilegios mínimos. 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 están restringidos a
los nodos, sobre los cuales se tiene bastante control administrativo”.
 Configuración por nodo.
 Montaje de los sistemas de archivos remotos.-
En relación 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 raíz. Como parte del arranque, el kernel montará el directorio
NFS 192.168.10.1:/tftpboot/hostname como su directorio raíz.
El archivo que indica los sistemas de archivos a montar una vez iniciado el
sistema es el /etc/fstab. Ya que la configuración será la misma para todos los
nodos, es conveniente realizar el cambio primero en el directorio nodo1 que se
creó para su posterior duplicación.
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 línea 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 parámetros 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 líneas están configuradas de antemano. La primera
indica el montaje del sistema de archivos proc, que contiene información de
tiempo de ejecución del sistema y se genera dinámicamente. La segunda indica el
montaje del sistema de archivos devpts, que genera dinámicamente las terminales
virtuales para acceso remoto al sistema.
Las dos líneas siguientes indican el montaje de los sistemas /usr y /home. Éstos
se montan a través de NFS (nótese el tercer parámetro especificando el tipo de
sistema de archivos). La sintaxis para denotar el dispositivo a montar es
servidor:directorio. Estas dos líneas montan los directorios /usr y /home del
servidor en la misma ubicación en cada nodo”.
103
 Configuración 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
añadir la siguiente línea 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 línea al archivo:
ypserver 192.168.10.1
Obsérvese que 192.168.10.1 es la dirección 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
utilería 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
información genera la correcta operación del sistema. Por otro lado es importante
resaltar que este es uno de los archivos compartidos a través de NIS, así pues,
solo es necesario modificarlo en el servidor central para que la información 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 simbólicos.-
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 información 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 podrán tener acceso a la
información y el sistema no funcionará de manera correcta.
105
3.5. Propuesta de implementación de un cluster tipo Beowulf
La propuesta que aquí se plantea es la aplicación de un clúster tipo Beowulf, su
configuración ya se mencionó detalladamente en el punto anterior, sin embargo
hay que mencionar que el clúster plateado se aplicará en un grupo mínimo de diez
computadoras marca HP con sistema operativo Windows pertenecientes al centro
de cómputo de sistemas, en esta facultad.
Para que el clúster funcione correctamente, como ya se especificó en el apartado
anterior, es conveniente implantar el sistema operativo Linux con su distribución
RedHat, ya que permite una administración adecuada del mismo. Esta distribución
y sistema operativo es lo más 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 distribución libre, otro de sus principales objetivos es el brindar una
rápida resolución de problemas que requieran de gran capacidad de memoria.
Un cluster de este tipo necesita de un nodo maestro como mínimo, dicho nodo
(computadora), se recomienda que sea la que está ubicada dentro del cubículo del
encargado del centro de cómputo, siendo los nodos esclavos las primeras diez
computadoras de este centro. El objetivo de que el nodo maestro esté ubicado
dentro del cubículo es que los usuarios comunes de los equipos de cómputo no
modifiquen la configuración principal del clúster, 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 cómputo pierdan la función principal que es brindar
a los usuarios el servicio de internet y prácticas escolares dentro de la facultad, se
propone realizar un formateo de los mismos para poder realizar la partición
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 clúster.
Cabe señalar que la aplicación de un clúster tiene muchas ventajas y usos dentro
del área de la computación administrativa ya que, como ya se ha mencionado
anteriormente, tiene una gran capacidad de resolución 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 línea en cualquier momento y reflejar las actividades que se
realicen en la misma de manera instantánea.
En nuestra facultad se propone el uso de este cluster para realizar tareas de
simulación, ya que esto ayudaría bastante a las materias de algorítmica,
programación y análisis de algoritmos para estudiar el comportamiento de las
instrucciones realizadas a la computadora, por otro lado se puede también
estudiar un poco de inteligencia artificial ya que al realizar simulaciones, se puede
conocer el proceso de programación y la forma de responder de un robot o
sistema complejo sin la necesidad de construirlo físicamente, lo cual ahorraría
bastante dinero al programador y a la empresa responsable del desarrollo, en este
caso la Universidad Veracruzana, por otro lado también puede utilizarse para
actividades cotidianas de la facultad como es el formateo de equipo de cómputo
evitando respaldar la información 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 información en línea en uno de los discos de los
nodos del clúster.
A continuación se presenta la configuración necesaria para que un clúster realice
las funciones de simulación, en específico se presenta la instalación y
configuración 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 sólo una como nodo maestro, la cuál
107
estará a cargo de la gestión de todas las instrucciones y actividades que se
realizarán en el mismo.
Gordon David (2002) menciona que “es una herramienta de simulación de código
abierto que funciona en Linux. Es un simulador de eventos discretos destinados a
redes de investigación y proporciona un apoyo sustancial para la simulación de
enrutamiento, protocolos de multidifusión IP y protocolos, como UDP, TCP, RTP y
redes alámbricas e inalámbricas (locales y por satélite).”
Gordon David (2002) en su artículo publicado en el “Linuxjournal” explica la
manera en la cual se lleva a cabo la instalación y la configuración de este clúster,
recomienda la descarga del paquete “todo en uno” ya que incluye el código fuente
necesario para aplicar el parche en apoyo al Stream Control Transmission
Protocol (SCTP). La descarga de este paquete se realiza desde la página 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 implementación en específico 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 Ingeniería en
Protocolos. Gordon David (2002), menciona que “con la utilidad de parches de
Linux, usted puede actualizar el origen de NS2 código para incluir soporte para
SCTP mediante la aplicación de la revisión.-
patch -p0 < ns-allinone-2.1b8.sctp-rel2.2_patch_orig”
108
En el mismo directorio se encuentra un script llamado “instalación” del cuál
debemos configurar, compilar e instalar los componentes NS2, tanto los
obligatorios como los opcionales. Una vez completada la instalación 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 validación NS2 se encarga de verificar que todos los protocolos
sean funcionales. Para correr la validación es necesario correr el siguiente
código.cd ./ns-2.1b8
./validate
Después 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 código existente para la versión 2.1b7a. para la versión
2.1b8 NS2 se deben actualizar las lineas de código de dicho script. Gordon David
(2002) muestra la actualización del código.-
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
0
set true
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 código es básicamente para establecer
las rutas de acceso en función al entorno específico.
Una vez realizados los cambios en las rutas de las herramientas utilizadas se
puede iniciar el uso de NS2 para la simulación de redes SCTP. Para comenzar
con esta simulación se deben seguir los siguientes pasos.-
cd /usr/src/ns-allinone-2.1b8
ns ./sctp.tcl
113
Acontinuación se presentan tres ventanas derivadas de la ejecución de la
instalación de este paquete.-
La figura 1 muestra un gráfico con tráfico de paquetes. El óvalo color amarillo
representa, paquetes basura o perdidos, y horizontalmente a la derecha se
encuentra la retransmición. La pérdida de este paquete se debe a la introducción
de un modelo de pérdida de error en el código. La función de éste codigo es el
desechar los paquetes entre nodos previamente especificados. SCTP gestiona la
distribución de paquetes de manera similas que TCP, el apoyo de retransmición
rápida. (Gordon David, 2002)
Figura 8.- Perfil de datos de SCTP
*Fuente.- Network Simulatior 2: a Simulation Tool of Linux
114
El código de error es el siguiente.-
set err [new ErrorModel/List]
$err droplist {15}
$ns lossmodel $err $n0 $n1
La figura número 2 muestra una ventana de simulación, donde al dar un click
derecho en el link entre ambos nodos y el gráfico seleccionado (gráfico de ancho
de banda y después de dar un click en el link), se obtiene una barra gráfica
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 Simulación
*Fuente.- Network Simulatior: a Simulation Tool of Linux
115
Una vez inicializado el escenario de simulación es importante mencionar algunas
líneas que son importantes en el script y se explicará su función. (Gordon David,
2002).
[...]
// después de inicializar el código, archivos y
ventana de simulación.
set n0 [$ns node]
// dos nodos están creados
set n1 [$ns node]
// (n0 y n1)
$ns duplex-link $n0 $n1 .5Mb 300ms DropTail
// después 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 tráfico. Un agente que defin que protocolo utilizar es similar a una
compañía para los paquetes. Cada agente debe estar asociado a un nodo
específico, asi pues el código es según Gordon David (2002).-
$ns connect $sctp0 $sctp1
// conecta de manera conjunta ambos agentes
para crear un canal de comunicación o de datos.
[...]
set ftp0 [new Application/FTP]
// define el tipo de aplicación que usará la
corriente de datos, FTP.
$ftp0 attach-agent $sctp0
116
Para comenzar con la simulación en tiempo real, se debe presionar el botón de
inicio. La primera acción que se hace notar son los cuatro paquetes que inician la
conexión FTP. El segundo evento es el control de la gestión. SCTP envía algunos
paquetes a la vez e incrementa constantemente hasta alcanzar un rendimiento
máximo. El principio y final de la conexión FTP se definen en las siguientes líneas
(Gordon David, 2002).-
$ns at 0.5 "$ftp0 start"
$ns at 4.5 "$ftp0 stop"
Se debe observar cómo los paquetes son enviados de manera creciente, o
visualmente, en formatos más largos. En realidad los paquetes son siempre de la
misma longitud, sin embargo, el número de paquetes recibidos por el servidor se
incrementa como se puede ver en el número 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 configuración del Clúster Bewuolf para realizar la
simulación, 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 programación.
Es de gran utilidad para la facultad ya que se pretende que con la implementación
de este clúster se logre una preparación académica de alto nivel en cuanto a la
programación y al uso y diseño de redes de computadoras.
118
CONCLUSIÓN
119
La computación 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 computación 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 elaboración de este trabajo.
El objetivo de este trabajo fue el estudio detenido de la computación paralela, en
especial los clústeres de alto rendimiento, se analizaron temas como los
antecedentes
de
los
clústeres,
los
tipos
de
clústeres
existentes,
su
funcionamiento, aplicación, configuración e implementación, se identificaron los
distintos elementos que integran a la computación paralela, se conocieron las
ventajas del uso de los clústeres, sus componentes y por último se elaboró una
propuesta de implementación de un cluster tipo Beowulf en el centro de cómputo
de esta facultad.
Por otro lado se mencionaron los clústeres existentes hasta el día de hoy y el
ámbito en el cual se aplican.
Los temas principales de la computación paralela, es principalmente, el
middleware, los software de paralelización, así pues, se explico detenidamente
como funcionan estos software (middleware y paralelización). Se conoce ahora
que el principal sistema operativo en el cual se implementan los clústeres 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 realización de tareas
grandes que necesitan de una capacidad de memoria y resolución grande, por
tanto Linux cubre perfectamente este objetivo al ser un sistema operativo de
distribución libre y al contar con la mayoría de paquetes requeridos para la
correcta configuración e implementación de un cluster.
120
Específicamente se estudió el diseño, configuración e implementación del cluster
tipo Beowulf, este tipo de cluster fue la propuesta de implementación de este
trabajo en el centro de cómputo de esta facultad.
121
FUENTES DE INFORMACIÓN
Abarca Castro Miguel, 2008, Sistemas Distribuidos “Estructuración 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 Valentín Maribel, 2009, Implementación 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, Sesión 4: Modelos de computación 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 Pérez Josá Ángel, 2007, Utilización y Administración avanzadas de
sistemas GNU/Linux y aplicaciones Software Libre para Estudiantes Universitarios
Sin Autor, s/a, Red Hat Enterprise Linux 4: Manual de Referencia, Capítulo 20.
Protocolo SSH, 20 de abril de 2010, http://web.mit.edu/rhel-doc/4/RH-DOCS/rhelrg-es-4/ch-ssh.html
Departament d’Arquitectura 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 Cañongo Daniel, 2003, Instalación 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: Introducción a la Informática, 13 de abril de 2010,
http://www.dei.uc.edu.py/tai2003-2/clustering/html/clasificacion.html
Jose Luis Bosque, 2006, Sesión 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, Implementación de un cluster OpenMosix para
Cómputo Científico en el Instituto de Ingeniería 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
Lizárraga Celaya Carlos, 2003, Cluster de Linux, 31 de Marzo de 2010,
http://clusters.fisica.uson.mx/clusters_de_Linux.htm
M.A. Gómez Zúñiga 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 tecnológicas funcionales de un microprocesador, 1 de
mayo de 2010, http://www.newdevices.com/tutoriales/cpu/2.html
Paz Carlos, s/a, Cómo 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,
2
de
abril
de
2010,
abril
de
2010,
http://www.ic.uff.br/~vefr/research/clcomp/Beowulf-HOWTO.html
Sin
Autor,
2010,
What
is
Linux
Clustering,
3
de
http://www.squidoo.com/linux-clustering#module82220481
Sin Autor, s/a, Taxonomía de las arquitecturas de computadoras, 7 de abril de
2010, http://agamenon.uniandes.edu.co/~c21437/ma-bedoy/taxonomi.htm
Sin
Autor,
s/a,
Conmutación
de
Paquetes,
8
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 Tehás 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
Página
Tabla 1. Comparación de arquitecturas SIMD y MIMD……………..……………19
Figura 1. Esquema de la clasificación de computadoras……………………….20
Tabla 2. Clasificación de los clústeres………….………………………………….22
Figura 2. Arquitectura de un clúster………………………………………………..36
Figura 3. Diseño abajo-arriba de un cluster…...…………………………………..48
Figura 4. Diagrama del cluster……………………………………………………….77
Figura 5. Arquitectura de un clúster 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 simulación………………………………………………......115
Figura 10. SACOS de cada paquete SCTP enviado…………………………….117
127
128
Descargar