UNIVERSIDAD VERACRUZANA. Tesina. Licenciado en Sistemas Computacionales Administrativos

Tamaño: px
Comenzar la demostración a partir de la página:

Download "UNIVERSIDAD VERACRUZANA. Tesina. Licenciado en Sistemas Computacionales Administrativos"

Transcripción

1 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

2 2

3 Dedicatorias 3

4 ÍNDICE Página Introducción. 6 Capítulo 1 1. Computación paralela y de altas prestaciones Arquitectura de computadoras Computadoras paralelas Modelos de cómputo en paralelo Capítulo 2 2. Teoría de los clústeres Antecedentes Conceptos Generalidades de los clústeres Clasificación de clústeres Ventajas y desventajas Retos en la implementación de un clúster...47 Capítulo 3 3. Arquitecturas y herramientas para Implementación de un clúster Modelos y arquitecturas Software de paralelización Estructura de un clúster

5 3.4. Propuesta de implementación de un clúster Propuesta de implementación de un cluster tipo Beowulf Conclusión Fuentes de información Índice de tablas y figuras 127 V 5

6 INTRODUCCION 6

7 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

8 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

9 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

10 CAPÍTULO 1: Computación paralela y de altas prestaciones 10

11 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

12 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

13 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 = T 1 _ T N 13

14 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, T 1 es el tiempo de ejecución de un algoritmo secuencial y T N 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 = T 1 _ N T N *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

15 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

16 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

17 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

18 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

19 A continuación se presenta un pequeño cuadro comparativo de las arquitecturas SIMD y MIMD. SIMD Requiere menos hardware: 1 unidad de control. Necesita menos memoria: 1 sola copia del programa. Adecuada para programas de datos paralelos: Se requiere el mismo programa sobre un gran número de datos. Menos tiempo de arranque para comunicarse con los vecinos: Debido a que posee un reloj global. Más costosa: Se requiere diseñar un microchip de arquitectura especial. MIMD Requiere más hardware. Necesita memoria para cada uno de los programas. Puede ejecutar varias tareas al mismo tiempo o emular un procesador SIMD mediante mecanismos de sincronización. Para comunicarse es necesario usar mecanismos de sincronización. Más barata: Se pueden construir usando 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

20 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

21 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

22 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

23 CAPÍTULO 2: Teoría de los Clústeres 23

24 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

25 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 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

26 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

27 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 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

28 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 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 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 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 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

29 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

30 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

31 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

32 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

33 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

34 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, queda expresado como, [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

35 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 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

36 Figura 2.- Arquitectura de un clúster. *Fuente.- Sesión 1: Arquitectura Paralela Basada en Clústeres 36

37 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

38 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

39 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

40 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 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

41 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

42 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

43 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

44 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

45 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

46 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

47 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 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

48 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

49 CAPÍTULO 3: Arquitecturas y herramientas para la implementación de un clúster 49

50 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

51 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

52 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

53 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 , y las direcciones IP virtuales son , , y (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 eth # /sbin/ifconfig eth0: # /sbin/ifconfig eth0: # /sbin/ifconfig eth0: 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 dev eth0 # /sbin/route add -host dev eth0 # /sbin/route add -host dev eth0:0 # /sbin/route add -host dev eth0:1 # /sbin/route add -host dev eth0:2 53

54 También debes agregar tu gateway predeterminada de forma usual: # /sbin/route add default gw 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 netmask network broadcast 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= NETMASK= 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

55 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

56 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

57 Instalación y configuración de algunas de las herramientas anteriormente propuestas en cada uno de los 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

58 # 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 # 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á: nodo httpd nodo 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

59 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 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

60 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

61 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]# rpm -ivh ipvsadm i386.rpm o Preparing... ### [100%] o 1:ipvsadm #################### [100%] o Instalación del paquete piranha.rpm o root]# rpm -ivh piranha i386.rpm o Preparing... ########################################### [100%] o 1:piranha ########################################### [100%] o Para buscar donde está el servicio de piranha: rpm -ql piranha o localhost root]# rpm -ql piranha o /etc/rc.d/init.d/piranha-gui o Levantar el servicio de piranha o localhost root ]# service piranha-gui start o Starting piranha-gui: [ OK ] 61

62 o Para buscar puertos. o El piranha por defecto se levanta en el puerto o localhost root ]# netstat -nat o Active Internet connections (servers and established) o Proto Recv-Q Send-Q Local Address Foreign Address State o tcp : :* LISTEN o Levantar el servicio FTP o localhost root]# service vsftpd start o Iniciando vsftpd para vsftpd: [ OK ] o Guardar archivos en el servidor FTP o root]# cd /var/ftp/pub o pub]# ls o 01 Suelta mi mano.mp3 drivs.zip piranha i386.rpm o avseq01.dat GAVirusParteII.mpg prueba o Configuración Piranha mpegav o Documentación nfs-utils el.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

63 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

64 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

65 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

66 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

67 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

68 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

69 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

70 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

71 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

72 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

73 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) MB DDR 400 MHz. Disco Duro (Hard Disk).- Segate ST A 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

74 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) 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

75 Software Sistema Operativo: Suse 9.0 con kernel OpenMosix 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

76 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 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

77 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/

78 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 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

79 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

80 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

81 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

82 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

83 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

84 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

85 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

86 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

87 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

88 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

89 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

90 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

91 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

92 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

93 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

94 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 ; #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

95 shared-network DOMINIO{ subnet netmask { option broadcast-address ; } } subnet netmask { } # 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 ; hardware ethernet 00:60:08:0B:5A:9E; filename "/tftpboot/vmlinuz-nbi-2.2"; next-server ; option host-name "nodo1"; } host nodo2 { fixed-address ; hardware ethernet 00:80:AD:30:49:D4; filename "/tftpboot/vmlinuz-nbi-2.2"; next-server ; option host-name "nodo2"; } 95

96 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

97 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

98 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

99 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

100 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

101 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 / (rw,no_root_squash) /home / (rw,no_root_squash) /usr / (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 y máscara (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

102 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 :/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

103 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= :/usr /usr nfs defaults :/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

104 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 Obsérvese que 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

105 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 localhost DOMINIO #nodos nodo nodo nodo 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

106 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

107 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

108 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

109 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

110 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

111 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 $n 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_ 0x # u can use -1 to turn on everything $sctp0 set debugfileindex_ 0 $sctp0 set mtu_ 1500 $sctp0 set datachunksize_

112 $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_ $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

113 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

114 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

115 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

116 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 [...] set ftp0 [new Application/FTP] $ftp0 attach-agent $sctp0 // conecta de manera conjunta ambos agentes para crear un canal de comunicación o de datos. // define el tipo de aplicación que usará la corriente de datos, FTP. 116

117 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

:Arquitecturas Paralela basada en clusters.

:Arquitecturas Paralela basada en clusters. Computación de altas prestaciones: Arquitecturas basadas en clusters Sesión n 1 :Arquitecturas Paralela basada en clusters. Jose Luis Bosque 1 Introducción Computación de altas prestaciones: resolver problemas

Más detalles

Nicolás Zarco Arquitectura Avanzada 2 Cuatrimestre 2011

Nicolás Zarco Arquitectura Avanzada 2 Cuatrimestre 2011 Clusters Nicolás Zarco Arquitectura Avanzada 2 Cuatrimestre 2011 Introducción Aplicaciones que requieren: Grandes capacidades de cómputo: Física de partículas, aerodinámica, genómica, etc. Tradicionalmente

Más detalles

Introducción. TEMA 3: Clusters de Computadores Personales

Introducción. TEMA 3: Clusters de Computadores Personales Introducción TEMA 3: Clusters de Computadores Personales Laboratorio de Arquitecturas Avanzadas de Computadores 5º de Ingeniería Superior de Informática 2008/09 Alberto Sánchez alberto.sanchez@urjc.es

Más detalles

Unidad I Fundamentos de Sistemas Distribuidos. M.C. Juan Carlos Olivares Rojas

Unidad I Fundamentos de Sistemas Distribuidos. M.C. Juan Carlos Olivares Rojas Unidad I Fundamentos de Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas Temario 1.1. Características de un sistema distribuido 1.2. Objetivos de los sistemas distribuidos 1.3. Ventajas y desventajas

Más detalles

CLUSTERS. Antonio Antiñolo Navas ESI-UCLM. Antonio.Antinolo@uclm.es. Profesor: Serafín Benito Santos. Arquitectura e Ingeniería de Computadores

CLUSTERS. Antonio Antiñolo Navas ESI-UCLM. Antonio.Antinolo@uclm.es. Profesor: Serafín Benito Santos. Arquitectura e Ingeniería de Computadores CLUSTERS Antonio Antiñolo Navas Antonio.Antinolo@uclm.es 1 Arquitectura e Ingeniería de Computadores Profesor: Serafín Benito Santos ESI-UCLM Índice 1. Introducción. 2. Clasificación. 3. Ventajas y Desventajas.

Más detalles

Introducción al Cluster

Introducción al Cluster Centro de Teleinformática y Producción Industrial - Regional Cauca Pág. 1 de 11 Nombre del Introducción al Cluster Historial Fecha Razón de cambio (s) Autor(es) 26 / 10 /2011 Documento Inicial, Primer

Más detalles

SISTEMAS OPERATIVOS II

SISTEMAS OPERATIVOS II SISTEMAS OPERATIVOS II INSTITUTO TECNOLÓGICO DE MORELIA Unidad I: Sistemas Operativos en ambientes Distribuidos Departamento de Sistemas y Computación M.C. Benito Sánchez Raya sanchezraya@hotmail.com Disponible

Más detalles

Linux Week PUCP. Computación de Alto Rendimiento en Linux. rmiguel@senamhi.gob.pe

Linux Week PUCP. Computación de Alto Rendimiento en Linux. rmiguel@senamhi.gob.pe Linux Week PUCP 2006 Computación de Alto Rendimiento en Linux Richard Miguel San Martín rmiguel@senamhi.gob.pe Agenda Computación Científica Computación Paralela High Performance Computing Grid Computing

Más detalles

EXPEDIENTE: 2/2015 ADQUISICIÓN E INSTALACIÓN DE INFRAESTRUCTURA CIENTÍFICA Y TECNOLÓGICA PARA CÉNITS PLIEGO DE PRESCRIPCIONES TÉCNICAS

EXPEDIENTE: 2/2015 ADQUISICIÓN E INSTALACIÓN DE INFRAESTRUCTURA CIENTÍFICA Y TECNOLÓGICA PARA CÉNITS PLIEGO DE PRESCRIPCIONES TÉCNICAS EXPEDIENTE: 2/2015 ADQUISICIÓN E INSTALACIÓN DE INFRAESTRUCTURA CIENTÍFICA Y TECNOLÓGICA PARA CÉNITS PLIEGO DE PRESCRIPCIONES TÉCNICAS PLIEGO DE PRESCRIPCIONES TÉCNICAS. EXPTE 2/2015 Adquisición e instalación

Más detalles

Clusters en Linux. * Jorge Castellanos - jorcas@cantv.net ** Julio Ortega - roliverio@cantv.net. * FACYT-UC Computación ** IUPSM Sistemas

Clusters en Linux. * Jorge Castellanos - jorcas@cantv.net ** Julio Ortega - roliverio@cantv.net. * FACYT-UC Computación ** IUPSM Sistemas Clusters en Linux * Jorge Castellanos - jorcas@cantv.net ** Julio Ortega - roliverio@cantv.net * FACYT-UC Computación ** IUPSM Sistemas www.vaslibre.org.ve Agenda Motivación Definiciones Cluster Beowulf

Más detalles

Computación de Alta Performance Curso 2008 CLUSTERS

Computación de Alta Performance Curso 2008 CLUSTERS Computación de Alta Performance Curso 2008 Basado en el artículo Cluster computing at a glance. M. Baker, R. Buyya, Software Practice and Experience 29 (6), pp. 551-576, 1999. CÓMO MEJORAR LA PERFORMANCE?

Más detalles

Ingeniero en Informática

Ingeniero en Informática UNIVERSIDAD DE ALMERÍA Ingeniero en Informática CLÚSTER DE ALTO RENDIMIENTO EN UN CLOUD: EJEMPLO DE APLICACIÓN EN CRIPTOANÁLISIS DE FUNCIONES HASH Autor Directores ÍNDICE 1. Introducción 2. Elastic Cluster

Más detalles

SISTEMAS DE MULTIPROCESAMIENTO

SISTEMAS DE MULTIPROCESAMIENTO SISTEMAS DE MULTIPROCESAMIENTO Tema 1 Introducción 5º Curso de Automática y Electrónica Industrial. 1 Contenido Tema 1 Aplicaciones Incremento de las prestaciones Clasificación de los ordenadores en función

Más detalles

Tendencias en sistemas de comunicación de altas prestaciones:

Tendencias en sistemas de comunicación de altas prestaciones: Conectan nodos en diferentes niveles del sistema (chip, tarjeta, chásis, armario,...). Desarrollado por diseñadores de arquitecturas de altas prestaciones. Comunicar computadores, clasificación redes computación:

Más detalles

Global File System (GFS)...

Global File System (GFS)... Global File System (GFS)... Diferente a los sistemas de ficheros en red que hemos visto, ya que permite que todos los nodos tengan acceso concurrente a los bloques de almacenamiento compartido (a través

Más detalles

Desarrollo de un cluster computacional para la compilación de. algoritmos en paralelo en el Observatorio Astronómico.

Desarrollo de un cluster computacional para la compilación de. algoritmos en paralelo en el Observatorio Astronómico. Desarrollo de un cluster computacional para la compilación de algoritmos en paralelo en el Observatorio Astronómico. John Jairo Parra Pérez Resumen Este artículo muestra cómo funciona la supercomputación

Más detalles

Unidad 1: Conceptos generales de Sistemas Operativos.

Unidad 1: Conceptos generales de Sistemas Operativos. Unidad 1: Conceptos generales de Sistemas Operativos. Tema 1: Introducción: 1.1 Introducción: Qué es un sistema operativo?. 1.2 Conceptos clave de un sistema operativo. 1.3 El sistema operativo como administrador

Más detalles

OpenText Exceed ondemand

OpenText Exceed ondemand OpenText Exceed ondemand Acceso a aplicaciones empresariales confiable y seguro O pentext Exceed ondemand es la solución para el acceso seguro a las aplicaciones gestionadas. Ella permite que las empresas

Más detalles

Computación Cluster y Grid. Computación Cluster y Grid. Cluster Computing

Computación Cluster y Grid. Computación Cluster y Grid. Cluster Computing Cluster Computing 1 Concepto de Cluster Cluster: Sistema de computación basado en hardware estándar conectado por una red dedicada (de altas prestaciones) dedicado a un propósito específico. [Baker00]

Más detalles

Redes de Almacenamiento

Redes de Almacenamiento Redes de Almacenamiento Las redes de respaldo o backend se utilizan para interconectar grandes sistemas tales como computadores centrales y dispositivos de almacenamiento masivo, el requisito principal

Más detalles

Arquitecturas de Hardware en Sistemas Distribuidos.

Arquitecturas de Hardware en Sistemas Distribuidos. Universidad Simón Bolívar Departamento de Computación y T. I Sistemas de Operación II CI-4821 Arquitecturas de Hardware en Sistemas Distribuidos. Prof. Yudith Cardinale Abril Julio 2012 Definición de Sistemas

Más detalles

Alta Disponibilidad. SISTEMAS DISTRIBUIDOS Departamento de Sistemas e Informática Escuela de Ingeniería Electrónica FCEIA

Alta Disponibilidad. SISTEMAS DISTRIBUIDOS Departamento de Sistemas e Informática Escuela de Ingeniería Electrónica FCEIA Alta Disponibilidad SISTEMAS DISTRIBUIDOS Departamento de Sistemas e Informática Escuela de Ingeniería Electrónica FCEIA Temario Disponibilidad y performance Tolerancia a Fallas y Alta Disponibilidad Soluciones

Más detalles

Daniel Adolfo Diaz Giraldo Anderson Alberto Ochoa Estupiñán

Daniel Adolfo Diaz Giraldo Anderson Alberto Ochoa Estupiñán Implementación de un prototipo de plataforma tecnológica tipo cluster, para la computación de algoritmos realizados en mpi presentados en el campus universitario. Daniel Adolfo Diaz Giraldo Anderson Alberto

Más detalles

Extractos de la conferencia: Supercomputación y Software Libre realizada por Linalco en la Universidad de Granada

Extractos de la conferencia: Supercomputación y Software Libre realizada por Linalco en la Universidad de Granada Extractos de la conferencia: Supercomputación y Software Libre realizada por Linalco en la Universidad de Granada Copyright 2006 Linalco Consulting, S.L. Linalco Consulting, S.L., autor de este documento,

Más detalles

IDS-Virtualiza. IDS-Virtualiza. es la solución que ofrece IDSénia para la optimización de sus servidores y estaciones.

IDS-Virtualiza. IDS-Virtualiza. es la solución que ofrece IDSénia para la optimización de sus servidores y estaciones. IDS-Virtualiza es la solución que ofrece IDSénia para la optimización de sus servidores y estaciones. Qué es la virtualización? La virtualización es una tecnología probada de software que está cambiando

Más detalles

Memoria Compartida Distribuida (DSM) Sistema de Archivos

Memoria Compartida Distribuida (DSM) Sistema de Archivos Memoria Compartida Distribuida (DSM) La memoria compartida distribuida es una abstracción que se propone como alternativa a la comunicación por mensajes. Memoria compartida basada en páginas: este esquema

Más detalles

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos.

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos. RAIDS MODO LINEAL Es un tipo de raid que muestra lógicamente un disco pero se compone de 2 o más discos. Solamente llena el disco 0 y cuando este está lleno sigue con el disco 1 y así sucesivamente. Este

Más detalles

COMPUTADORES MULTINUCLEO. Stallings W. Computer Organization and Architecture 8ed

COMPUTADORES MULTINUCLEO. Stallings W. Computer Organization and Architecture 8ed COMPUTADORES MULTINUCLEO Stallings W. Computer Organization and Architecture 8ed Computador multinucleo Un computador multinúcleocombina dos o mas procesadores (llamados núcleos) en una única pieza de

Más detalles

TABLA DE CONTENIDO: 1 DIMENSIONAMIENTO DE SERVIDORES GALEÓN 2

TABLA DE CONTENIDO: 1 DIMENSIONAMIENTO DE SERVIDORES GALEÓN 2 TABLA DE CONTENIDO: TABLA DE CONTENIDO: 1 DIMENSIONAMIENTO DE SERVIDORES GALEÓN 2 Introducción: 2 infraestructura Galeón: 3 Alta disponibilidad y balanceo de cargas 3 Servidores Galeón 5 Esquema de funcionamiento

Más detalles

Beneficios estratégicos para su organización. Beneficios

Beneficios estratégicos para su organización. Beneficios La solución ideal para controlar la totalidad de su infraestructura IT mediante un inventario automatizado, control remoto y Gestión de activos informáticos. Beneficios Características Inventario actualizado

Más detalles

UNIVERSIDAD INDUSTRIAL DE SANTANDER VICERRECTORIA DE INVESTIGACIÓN Y EXTENSIÓN PLIEGOS DE CONDICIONES PRELIMINARES

UNIVERSIDAD INDUSTRIAL DE SANTANDER VICERRECTORIA DE INVESTIGACIÓN Y EXTENSIÓN PLIEGOS DE CONDICIONES PRELIMINARES UNIVERSIDAD INDUSTRIAL DE SANTANDER VICERRECTORIA DE INVESTIGACIÓN Y EXTENSIÓN PLIEGOS DE CONDICIONES PRELIMINARES VOLUMEN II: ESPECIFICACIONES TÉCNICAS ADQUISICIÓN DE UNA INFRAESTRUCTURA DE COMPUTACIÓN

Más detalles

Informática y Programación Escuela de Ingenierías Industriales y Civiles Grado en Ingeniería en Ingeniería Química Curso 2010/2011

Informática y Programación Escuela de Ingenierías Industriales y Civiles Grado en Ingeniería en Ingeniería Química Curso 2010/2011 Módulo 1. Fundamentos de Computadores Informática y Programación Escuela de Ingenierías Industriales y Civiles Grado en Ingeniería en Ingeniería Química Curso 2010/2011 1 CONTENIDO Tema 1. Introducción

Más detalles

Supercómputo. Oscar Rafael García Regis Enrique Cruz Martínez

Supercómputo. Oscar Rafael García Regis Enrique Cruz Martínez Supercómputo Oscar Rafael García Regis Enrique Cruz Martínez 2003-I Oscar Rafael García Regis Laboratorio de Dinámica No Lineal Facultad de Ciencias, UNAM Enrique Cruz Martínez Dirección General de Servicios

Más detalles

Introducción a Windows 2000 Server

Introducción a Windows 2000 Server Introducción a Windows 2000 Server Contenido Descripción general 1 Administración de los recursos utilizando el servicio de Directorio Activo 2 Administración de una red 3 Mejora del soporte de red y comunicaciones

Más detalles

Marco Teórico MARCO TEÓRICO. AGNI GERMÁN ANDRACA GUTIERREZ

Marco Teórico MARCO TEÓRICO. AGNI GERMÁN ANDRACA GUTIERREZ MARCO TEÓRICO. 13 14 Virtualización Hablar de virtualización es hablar de un concepto que describe la posibilidad de tener varios sistemas operativos funcionando al mismo tiempo en un mismo equipo físico.

Más detalles

Cuál es el secreto de esta Tecnología, como logra que varios usuarios trabajen sobre un ordenador (PC)?

Cuál es el secreto de esta Tecnología, como logra que varios usuarios trabajen sobre un ordenador (PC)? De qué se compone el Terminal? El dispositivo NComputing tiene un chip propietario, una placa de red, una memoria caché para el vídeo y una memoria flash para el firmware (El setup inicial, se conoce como

Más detalles

La Arquitectura de las Máquinas Virtuales.

La Arquitectura de las Máquinas Virtuales. La Arquitectura de las Máquinas Virtuales. La virtualización se ha convertido en una importante herramienta en el diseño de sistemas de computación, las máquinas virtuales (VMs) son usadas en varias subdiciplinas,

Más detalles

CAPITULO 1. Introducción a los Conceptos Generales de Bases de Datos Distribuidas

CAPITULO 1. Introducción a los Conceptos Generales de Bases de Datos Distribuidas CAPITULO 1 Introducción a los Conceptos Generales de 1.1 Preliminares Las empresas necesitan almacenar información. La información puede ser de todo tipo. Cada elemento informativo es lo que se conoce

Más detalles

TIPOS DE PROCESAMIENTOS

TIPOS DE PROCESAMIENTOS TIPOS DE PROCESAMIENTOS El desempeño de un computador puede tener diferentes medidas de elección para diferentes usuarios. Para un usuario individual que está ejecutando un único programa, la computadora

Más detalles

Laboratorio Nacional de Cómputo de Alto Desempeño: Fortalecimiento de la Infraestructura 2015

Laboratorio Nacional de Cómputo de Alto Desempeño: Fortalecimiento de la Infraestructura 2015 Anexo A. Partida 3 Laboratorio Nacional de Cómputo de Alto Desempeño: Fortalecimiento de la Infraestructura 2015 CLUSTER LANCAD3 El bien a adquirir se describe a continuación y consiste en cúmulo de supercómputo

Más detalles

CURSOS DE VERANO 2014

CURSOS DE VERANO 2014 CURSOS DE VERANO 2014 CLOUD COMPUTING: LA INFORMÁTICA COMO SERVICIO EN INTERNET LA PLATAFORMA GOOGLE CLOUD PLATFORM. GOOGLE APP ENGINE Pedro A. Castillo Valdivieso Universidad de Granada http://bit.ly/unia2014

Más detalles

Unidad V. Infraestructura del comercio electrónico. M.C. Juan Carlos Olivares Rojas

Unidad V. Infraestructura del comercio electrónico. M.C. Juan Carlos Olivares Rojas Unidad V. Infraestructura del comercio electrónico M.C. Juan Carlos Olivares Rojas Agenda 5.1 Sistemas de comunicación 5.2 Sistemas de pago 5.3 Distribución y entrega 5.4 Interconexión de redes 5.5 El

Más detalles

Mosix2: La versión grid de Mosix para Linux-2.6

Mosix2: La versión grid de Mosix para Linux-2.6 Mosix2: La versión grid de Mosix para Linux-2.6 Juan P. Caballero Lionel Gutierrez Javier Echaiz Jorge R. Ardenghi Laboratorio de Investigación de Sistemas Distribuidos (LISiDi) Departamento de Ciencias

Más detalles

Unidad 1: Conceptos generales de Sistemas Operativos.

Unidad 1: Conceptos generales de Sistemas Operativos. Unidad 1: Conceptos generales de Sistemas Operativos. Tema 3: Estructura del sistema operativo. 3.1 Componentes del sistema. 3.2 Servicios del sistema operativo. 3.3 Llamadas al sistema. 3.4 Programas

Más detalles

CENTRO DE DATOS Y POP

CENTRO DE DATOS Y POP Virtual y física. Pública y privada. Por horas o por meses. Nuestra plataforma unificada proporciona infraestructuras en la nube a nivel de Internet. Todo lo que quiera, desplegado bajo demanda y en tiempo

Más detalles

Apéndice A: Características de las Redes Locales

Apéndice A: Características de las Redes Locales Apéndice A: Características de las Redes Locales En este apéndice se muestran las principales características de hardware y software de las redes locales y de las computadoras que las componen y que se

Más detalles

Cómputo de Alto Desempeño en Intel: OSCAR, Solución en Software para Cómputo en Clusters

Cómputo de Alto Desempeño en Intel: OSCAR, Solución en Software para Cómputo en Clusters Cómputo de Alto Desempeño en Intel: OSCAR, Solución en Software para Cómputo en Clusters Jorge Figueroa Canales. jfigueroac@uxmcc2.iimas.unam.mx Maestría en Ciencia e Ingeniería de la Computación. Universidad

Más detalles

2. OBJETIVOS Y CARACTERÍSTICAS GENERALES DE LA INFRAESTRUCTURA

2. OBJETIVOS Y CARACTERÍSTICAS GENERALES DE LA INFRAESTRUCTURA Contratación de infraestructura para la instalación del Centro de Procesamiento y Almacenamiento de Datos del Centro Internacional de Tecnologías Avanzadas en Peñaranda de Bracamonte (Salamanca) Condiciones

Más detalles

Creación de un Cluster de Linux utilizando Knoppix

Creación de un Cluster de Linux utilizando Knoppix Creación de un Cluster de Linux utilizando Knoppix Autores: Alicia Guadalupe Valdez Menchaca Maestra en Tecnologías de Información Facultad de Ingeniería Mecánica y Eléctrica Universidad Autónoma de Coahuila

Más detalles

Redes de Altas Prestaciones

Redes de Altas Prestaciones Redes de Altas Prestaciones TEMA 3 Redes SAN -Alta disponibilidad -Sistemas Redundantes -Curso 2010 Redes de Altas Prestaciones - Indice Conceptos Componentes de un SAN Términos más utilizados Topología

Más detalles

Servicios avanzados de supercomputación para la ciència y la ingeniería

Servicios avanzados de supercomputación para la ciència y la ingeniería Servicios avanzados de supercomputación para la ciència y la ingeniería Servicios avanzados de supercomputación para la ciència y la ingeniería HPCNow! provee a sus clientes de la tecnología y soluciones

Más detalles

DESARROLLO DE UN MINICLUSTER DE LINUX COMO UNA SOLUCION TECNOLOGICA PARA LAS MIPYMES

DESARROLLO DE UN MINICLUSTER DE LINUX COMO UNA SOLUCION TECNOLOGICA PARA LAS MIPYMES DESARROLLO DE UN MINICLUSTER DE LINUX COMO UNA SOLUCION TECNOLOGICA PARA LAS MIPYMES Autores: Alicia Guadalupe Valdez Menchaca Facultad de Ingeniería Mecánica y Eléctrica Monclova, Coahuila, 25750, México

Más detalles

Figura 1.4. Elementos que integran a la Tecnología de Información.

Figura 1.4. Elementos que integran a la Tecnología de Información. 1.5. Organización, estructura y arquitectura de computadoras La Gráfica siguiente muestra la descomposición de la tecnología de información en los elementos que la conforman: Figura 1.4. Elementos que

Más detalles

Tecnologías de almacenamiento en red

Tecnologías de almacenamiento en red Departamento de Lenguajes y Sistemas Informáticos Tecnologías de almacenamiento en red Curso 2001-2002 Sergio Luján Mora Índice Introducción Tecnologías subyacentes Futuro 2 DLSI - Universidad de Alicante

Más detalles

Arquitectura: Clusters

Arquitectura: Clusters Universidad Simón Bolívar Arquitectura: Clusters Integrantes: - Aquilino Pinto - Alejandra Preciado Definición Conjuntos o conglomerados de computadoras construidos mediante la utilización de hardware

Más detalles

Alcance y descripción del servicio Backup Servidor IPLAN

Alcance y descripción del servicio Backup Servidor IPLAN Alcance y descripción del servicio Backup Servidor IPLAN 1. Introducción Backup Servidor IPLAN le permite al Cliente realizar resguardos periódicos de la información de su Servidor Virtual y/o Servidor

Más detalles

Linux Clusters Gilberto Diaz gilberto@ula.ve Centro de Cálculo Científico Universidad de Los Andes Mérida - Venezuela

Linux Clusters Gilberto Diaz gilberto@ula.ve Centro de Cálculo Científico Universidad de Los Andes Mérida - Venezuela Linux s Gilberto Diaz gilberto@ula.ve Centro de Cálculo Científico Universidad de Los Andes Mérida - Venezuela Eterna necesidad Desde la invención de las computadoras el hombre constantemente ha mantenido

Más detalles

TEMA 1. CONCEPTO DE ORDENADOR: ESTRUCTURA Y FUNCIONAMIENTO

TEMA 1. CONCEPTO DE ORDENADOR: ESTRUCTURA Y FUNCIONAMIENTO TEMA 1. CONCEPTO DE ORDENADOR: ESTRUCTURA Y FUNCIONAMIENTO 1.1 Introducción Los ordenadores necesitan para su funcionamiento programas. Sin un programa un ordenador es completamente inútil. Para escribir

Más detalles

Version 3. Capítulo 9. Fundamentos de hardware avanzado para servidores

Version 3. Capítulo 9. Fundamentos de hardware avanzado para servidores Capítulo 9 Fundamentos de hardware avanzado para servidores Servidores para redes Un servidor es un computador en una red que es compartido por múltiples usuarios. El término servidor se refiere al hardware

Más detalles

Herramientas Informáticas I Hardware: Conceptos Básicos

Herramientas Informáticas I Hardware: Conceptos Básicos Herramientas Informáticas I Hardware: Conceptos Básicos Facultad de Ciencias Económicas y Jurídicas Universidad Nacional de La Pampa Año 2013 Hardware: Conceptos Unidad Central de Proceso. Hardware: (del

Más detalles

Mgter. Alejandro Ramos

Mgter. Alejandro Ramos Mgter. Alejandro Ramos Servidores Centralizados de Ficheros. Sistemas de Base de Datos. Sistemas Distribuidos. Evolución de la Tecnología Cliente Servidor 1 2 3 4 5 1982 1986 1990 1995 1995 - actualmente

Más detalles

Computación Tercer Año

Computación Tercer Año Colegio Bosque Del Plata Computación Tercer Año UNIDAD 3 Sistemas Operativos E-mail: garcia.fernando.j@gmail.com Profesor: Fernando J. Garcia Ingeniero en Sistemas de Información Sistemas Operativos Generaciones

Más detalles

Denominamos Ordenador o Computadora, a una máquina electrónica que es capaz de dar un tratamiento automatizado a la información.

Denominamos Ordenador o Computadora, a una máquina electrónica que es capaz de dar un tratamiento automatizado a la información. INTRODUCCIÓN AL ORDENADOR Denominamos Ordenador o Computadora, a una máquina electrónica que es capaz de dar un tratamiento automatizado a la información. Se compone de dos elementos fundamentales que

Más detalles

15. Arquitectura de los multiprocesadores. 16. Multiprocesadores de memoria compartida. 17. Multicomputadores.

15. Arquitectura de los multiprocesadores. 16. Multiprocesadores de memoria compartida. 17. Multicomputadores. UNIDAD TEMÁTICA 5: MULTIPROCESADORES. 15. Arquitectura de los multiprocesadores. 16. Multiprocesadores de memoria compartida. 17. Multicomputadores. 15-1 TEMA 15: ARQUITECTURA DE LOS MULTIPROCESADORES.

Más detalles

Operación Microsoft Windows XP

Operación Microsoft Windows XP Entornos de red Concepto de red En el nivel más elemental, una red consiste en dos equipos conectados entre sí mediante un cable de forma tal que puedan compartir datos. Todas las redes, no importa lo

Más detalles

Plataforma Cloud con HP 3PAR y VMware vsphere

Plataforma Cloud con HP 3PAR y VMware vsphere Mayo 2011 Elaborado por nerion Todos los derechos reservados. Plataforma Cloud con HP 3PAR y VMware vsphere SOBRE NERION nerion es una de las principales Empresas españolas de registro de dominios, hosting

Más detalles

CAPITULO II MARCO TEÓRICO SOBRE LA ARQUITECTURA DE CLUSTER

CAPITULO II MARCO TEÓRICO SOBRE LA ARQUITECTURA DE CLUSTER CAPITULO II MARCO TEÓRICO SOBRE LA ARQUITECTURA DE CLUSTER 2.1 GENERALIDADES En la actualidad debido a la gran demanda de servicios de Internet y la transferencia de información de todo tipo, es incuestionable

Más detalles

Plataformas paralelas

Plataformas paralelas Plataformas paralelas Curso 2011-2012 Elementos de un computador paralelo Hardware: Múltiples procesadores Múltiples memorias Redes de interconexión Software: Sistemas Operativos paralelos Programas orientados

Más detalles

Modelo de aplicaciones CUDA

Modelo de aplicaciones CUDA Modelo de aplicaciones CUDA Utilización de GPGPUs: las placas gráficas se utilizan en el contexto de una CPU: host (CPU) + uno o varios device o GPUs Procesadores masivamente paralelos equipados con muchas

Más detalles

UNIVERSIDAD DE ORIENTE FACULTAD DE ICIENCIAS ECONOMICAS LAS REDES I. Licda. Consuelo Eleticia Sandoval

UNIVERSIDAD DE ORIENTE FACULTAD DE ICIENCIAS ECONOMICAS LAS REDES I. Licda. Consuelo Eleticia Sandoval UNIVERSIDAD DE ORIENTE FACULTAD DE ICIENCIAS ECONOMICAS LAS REDES I Licda. Consuelo Eleticia Sandoval OBJETIVO: ANALIZAR LAS VENTAJAS Y DESVENTAJAS DE LAS REDES DE COMPUTADORAS. Que es una red de computadoras?

Más detalles

Computacion de Alto Performance

Computacion de Alto Performance Computacion de Alto Performance Abraham Zamudio Abraham Zamudio Computacion de Alto Performance 1/47 Indice 1 Algunos Aspectos Teoricos 2 Paralelismo Computacional 3 Linux Cluster Hardware Software 4 MPICH

Más detalles

CLUSTER PRACTICA # 23 CLUSTER. JEAN CARLOS FAMILIA Página 1

CLUSTER PRACTICA # 23 CLUSTER. JEAN CARLOS FAMILIA Página 1 PRACTICA # 23 CLUSTER CLUSTER Cuando se requiere de un sistema en donde la infraestructura es construida haciendo uso de un conjunto de computadoras mediante la utilización de componentes de hardware comunes

Más detalles

Archivo de programa Es el que inicia una aplicación o un programa y tiene una extensión EXE, PIF, COM, BAT. Véase también Programa.

Archivo de programa Es el que inicia una aplicación o un programa y tiene una extensión EXE, PIF, COM, BAT. Véase también Programa. Glosario de términos Ancho de Banda El ancho de banda es la máxima cantidad de datos que pueden pasar por un camino de comunicación en un momento dado, normalmente medido en segundos. Cuanto mayor sea

Más detalles

FUNDAMENTOS DE INFORMATICA

FUNDAMENTOS DE INFORMATICA FUNDAMENTOS DE INFORMATICA TEMAS QUE SE TRATARÁN: Arquitectura Interna Sistemas Operativos Programación en Visual Basic Bases de Datos Redes e Internet 1 FUNDAMENTOS DE INFORMATICA Tema 1: Arquitectura

Más detalles

Indice 1. Introducción a la computación en nube (cloud computing)

Indice 1. Introducción a la computación en nube (cloud computing) Tema 9. Centros de datos: computación en nube y organización física Indice 1. Introducción a la computación en nube (cloud computing) 2. Virtualización de recursos: consolidación de servidores 3. Arquitectura

Más detalles

UNIVERSIDAD DE LOS ANDES NÚCLEO UNIVERSITARIO RAFAEL RANGEL

UNIVERSIDAD DE LOS ANDES NÚCLEO UNIVERSITARIO RAFAEL RANGEL UNIVERSIDAD DE LOS ANDES NÚCLEO UNIVERSITARIO RAFAEL RANGEL CARRERAS: Comunicación Social - Contaduría Publica Administración -Educación MATERIA: Int. a la Computación - Computación I-Introducción a la

Más detalles

Fundamentos de Sistemas Operativos

Fundamentos de Sistemas Operativos Fundamentos de Sistemas Operativos Sistemas Informáticos Fede Pérez Índice TEMA Fundamentos de Sistemas Operativos 1. - Introducción 2. - El Sistema Operativo como parte de un Sistema de Computación 2.1

Más detalles

TAREA 4-3: FUNCIONES Y CARACTERÍSTICAS DE IS. CONCEPTOS DE ORDENADORES

TAREA 4-3: FUNCIONES Y CARACTERÍSTICAS DE IS. CONCEPTOS DE ORDENADORES TAREA 4-3: FUNCIONES Y CARACTERÍSTICAS DE IS. CONCEPTOS DE ORDENADORES 1. El mercado de las computadoras se encuentra dividido en seis principales familias. Cinco de ellas son: Ordenadores de sobremesa.

Más detalles

INFORME TÉCNICO PREVIO DE EVALUACIÓN DE SOFTWARE N 015-2012 SOFTWARE DE VIRTUALIZACIÓN

INFORME TÉCNICO PREVIO DE EVALUACIÓN DE SOFTWARE N 015-2012 SOFTWARE DE VIRTUALIZACIÓN INFORME TÉCNICO PREVIO DE EVALUACIÓN DE SOFTWARE N 01-2012 SOFTWARE DE VIRTUALIZACIÓN I. NOMBRE DEL ÁREA El área encargada de la evaluación técnica para la adquisición de software es la Unidad de Tecnologías

Más detalles

TEMA 37: Arquitecturas Cliente / Servidor. Tipos de cliente. Tipos de Servidor. Clasificación del software.

TEMA 37: Arquitecturas Cliente / Servidor. Tipos de cliente. Tipos de Servidor. Clasificación del software. . TEMA 37: Arquitecturas Cliente / Servidor. Tipos de cliente. Tipos de Servidor. Clasificación del software. Índice 1 INTRODUCCIÓN 2 2 CARACTERÍSTICAS 2 2.1 Características del cliente...2 2.2 Características

Más detalles

Intel Tera-Scale Computing Alumno: Roberto Rodriguez Alcala

Intel Tera-Scale Computing Alumno: Roberto Rodriguez Alcala Intel Tera-Scale Computing Alumno: Roberto Rodriguez Alcala 1. Introducción Los procesadores con dos núcleos existen actualmente, y los procesadores de cuatro están insertándose en el mercado lentamente,

Más detalles

CLUSTER FING: ARQUITECTURA Y APLICACIONES

CLUSTER FING: ARQUITECTURA Y APLICACIONES CLUSTER FING: ARQUITECTURA Y APLICACIONES SERGIO NESMACHNOW Centro de Cálculo, Instituto de Computación FACULTAD DE INGENIERÍA, UNIVERSIDAD DE LA REPÚBLICA, URUGUAY CONTENIDO Introducción Clusters Cluster

Más detalles

Generalidades Computacionales

Generalidades Computacionales Capítulo 2 Generalidades Computacionales 2.1. Introducción a los Computadores Definición: Un computador es un dispositivo electrónico que puede transmitir, almacenar, recuperar y procesar información (datos).

Más detalles

4. Programación Paralela

4. Programación Paralela 4. Programación Paralela La necesidad que surge para resolver problemas que requieren tiempo elevado de cómputo origina lo que hoy se conoce como computación paralela. Mediante el uso concurrente de varios

Más detalles

Especificación de la secuencia de mensajes que se han de intercambiar. Especificación del formato de los datos en los mensajes.

Especificación de la secuencia de mensajes que se han de intercambiar. Especificación del formato de los datos en los mensajes. SISTEMAS DISTRIBUIDOS DE REDES 2.- MODELOS ORIENTADOS A OBJETOS DISTRIBUIDOS 2.1. Tecnologías de sistemas distribuidos Para la implementación de sistemas distribuidos se requiere de tener bien identificados

Más detalles

UNIVERSIDAD TECNOLÓGICA ECOTEC FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES Y TELECOMUNICACIONES LA ARQUITECTURA BLADE SISTEMAS OPERATIVOS I

UNIVERSIDAD TECNOLÓGICA ECOTEC FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES Y TELECOMUNICACIONES LA ARQUITECTURA BLADE SISTEMAS OPERATIVOS I UNIVERSIDAD TECNOLÓGICA ECOTEC FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES Y TELECOMUNICACIONES LA ARQUITECTURA BLADE SISTEMAS OPERATIVOS I CÉSAR ZÚÑIGA SAN LUCAS PROFESOR: INGENIERA SARA NORIEGA

Más detalles

VDI Xen Server. Estés donde estés... preocúpate de encontrar una buena silla. Las tenemos todas conectadas a la nube.

VDI Xen Server. Estés donde estés... preocúpate de encontrar una buena silla. Las tenemos todas conectadas a la nube. Estés donde estés... preocúpate de encontrar una buena silla. Las tenemos todas conectadas a la nube. Céntrate en tu negocio. Déjanos la tecnología. Solución alta disponibilidad VDI Xen Server Estés donde

Más detalles

Concepto de Procesamiento Distribuido y Centralizado

Concepto de Procesamiento Distribuido y Centralizado Concepto de Procesamiento Distribuido y Centralizado Procesamiento Centralizado: En la década de los años 50 s las computadoras eran máquinas del tamaño de todo un cuarto con las siguientes características:

Más detalles

UNIVERSIDAD TECNOLOGICA ECOTEC DIEGO BARRAGAN MATERIA: Sistemas Operativos 1 ENSAYO: Servidores BLADE

UNIVERSIDAD TECNOLOGICA ECOTEC DIEGO BARRAGAN MATERIA: Sistemas Operativos 1 ENSAYO: Servidores BLADE UNIVERSIDAD TECNOLOGICA ECOTEC DIEGO BARRAGAN MATERIA: Sistemas Operativos 1 ENSAYO: Servidores BLADE AÑO: 2010 Qué es un servidor Blade? Blade Server es una arquitectura que ha conseguido integrar en

Más detalles

Sistemas de Operación II

Sistemas de Operación II Sistemas de Operación II Procesos en Sistemas Distribuidos Prof. Yudith Cardinale Abril-Julio 2012 Contenido Hilos en Sistemas Distribuidos Clientes Servidores Anexo: Virtualización 2 Procesos e hilos

Más detalles

CLUSTER. Curso: Sistemas Operativos II Plataforma: Linux - OpenSuse

CLUSTER. Curso: Sistemas Operativos II Plataforma: Linux - OpenSuse Curso: Sistemas Operativos II Plataforma: Linux - OpenSuse CLUSTER Cuando se requiere de un sistema en donde la infraestructura es construida haciendo uso de un conjunto de computadoras mediante la utilización

Más detalles

Soluciones para entornos HPC

Soluciones para entornos HPC Dr.. IT Manager / Project Leader @ CETA-Ciemat abelfrancisco.paz@ciemat.es V Jornadas de Supercomputación y Avances en Tecnología INDICE 1 2 3 4 HPC Qué? Cómo?..................... Computación (GPGPU,

Más detalles

Comparación de Dos Sistemas Distribuidos: Amoeba y Sprite

Comparación de Dos Sistemas Distribuidos: Amoeba y Sprite Comparación de Dos Sistemas Distribuidos: Amoeba y Sprite Hillary Caituiro Monge Departamento de Ingeniería Eléctrica y Computadoras hillarycm@hotmail.com Resumen En este ensayo se comparan Dos Sistemas

Más detalles

Tecnología de la Información y las Comunicaciones. Colegio Bosque Del Plata. UNIDAD 6 Hardware Procesador y Unidades de Almacenamiento.

Tecnología de la Información y las Comunicaciones. Colegio Bosque Del Plata. UNIDAD 6 Hardware Procesador y Unidades de Almacenamiento. Colegio Bosque Del Plata Tecnología de la Información y las Comunicaciones UNIDAD 6 Hardware Procesador y Unidades de Almacenamiento. E-mail: garcia.fernando.j@gmail.com Profesor: Fernando J. Garcia Ingeniero

Más detalles

Arquitectura de Computadores

Arquitectura de Computadores Arquitectura de Computadores 1. Introducción 2. La CPU 3. Lenguaje Máquina 4. La Memoria 5. Sistemas de Entrada/Salida 6. CPU Segmentada (Pipeline) 7. Memoria Caché 8. Arquitecturas RISC Arquitectura de

Más detalles

Alcance y descripción del servicio. Backup Servidor IPLAN. IPLAN iplan.com.ar NSS S.A. Reconquista 865 C1003ABQ Buenos Aires Argentina

Alcance y descripción del servicio. Backup Servidor IPLAN. IPLAN iplan.com.ar NSS S.A. Reconquista 865 C1003ABQ Buenos Aires Argentina Alcance y descripción del servicio Backup Servidor IPLAN 1. Introducción Backup Servidor IPLAN le permite al Cliente realizar resguardos periódicos de la información de su Servidor Virtual y/o Servidor

Más detalles

Capítulo 5. Sistemas operativos. Autor: Santiago Felici Fundamentos de Telemática (Ingeniería Telemática)

Capítulo 5. Sistemas operativos. Autor: Santiago Felici Fundamentos de Telemática (Ingeniería Telemática) Capítulo 5 Sistemas operativos Autor: Santiago Felici Fundamentos de Telemática (Ingeniería Telemática) 1 Sistemas operativos Definición de Sistema Operativo Partes de un Sistema Operativo Servicios proporcionados:

Más detalles

Etapas del desarrollo

Etapas del desarrollo Capítulo 4 Etapas del desarrollo Este capítulo documenta la aplicación del modelo presentado anteriormente, para el caso de la detección y clasificación de eventos sísmicos sobre señales digitales. El

Más detalles

Redes de Altas Prestaciones

Redes de Altas Prestaciones Redes de Altas Prestaciones TEMA 3 Tecnologías Soporte tolerante a fallos -Curso 2010 Redes de Altas Prestaciones - Indice Conceptos Topología en Alta Disponibilidad Tecnologías disponibles Tecnología

Más detalles

Organización del Computador 1. Máquina de von Neumann Jerarquía de Niveles

Organización del Computador 1. Máquina de von Neumann Jerarquía de Niveles Organización del Computador 1 Máquina de von Neumann Jerarquía de Niveles Inicios de la computación Turing y Church sientan las bases teóricas de la computación Máquina de Turing Máquina teórica compuesta

Más detalles