INSTITUTO POLITECNICO NACIONAL CENTRO DE INNOVACIÓN Y DESARROLLO TECNOLÓGICO EN CÓMPUTO CONSTRUCCIÓN Y DISEÑO DE UN CLÚSTER TIPO HPC VIRTUALIZADO

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

Download "INSTITUTO POLITECNICO NACIONAL CENTRO DE INNOVACIÓN Y DESARROLLO TECNOLÓGICO EN CÓMPUTO CONSTRUCCIÓN Y DISEÑO DE UN CLÚSTER TIPO HPC VIRTUALIZADO"

Transcripción

1 INSTITUTO POLITECNICO NACIONAL CENTRO DE INNOVACIÓN Y DESARROLLO TECNOLÓGICO EN CÓMPUTO CONSTRUCCIÓN Y DISEÑO DE UN CLÚSTER TIPO HPC VIRTUALIZADO T E S I S QUE PARA OBTENER EL GRADO DE: MAESTRÍA EN TECNOLOGÍA DE CÓMPUTO P R E S E N T A : ING. JUAN ALBERTO ANTONIO VELÁZQUEZ DIRECTORES DE TESIS: M. en C. Jesús Antonio Álvarez Cedillo M. en C. Juan Carlos Herrera Lozada México D.F a 29 de Noviembre de 2010

2

3

4 Resumen La virtualización tiene un papel importante en la seguridad informática y la mayoría de las empresas lo utilizan para resguardar su información mediante sistemas virtuales que se comunican con los sistemas físicos. Las empresas obtienen ventajas como: ahorro de espacio y menor uso de energía, que a su vez se engloba en ahorro de mucho dinero. En este trabajo definiremos cuales son las técnicas de paralelización que existen y como trabaja un cluster Mosix en la ejecución de programas. Además se definen las técnicas de virtualización que se utilizan para manejar los diferentes sistemas operativos. El software virtualizador usado fue Virtual-box, que puede ser instalado en diferentes plataformas y que acepta la instalación de diversos sistemas operativos entre ellos a OpenSuSE. Debido a que la mayoría de los clusters que existen son físicos, se tomó la decisión de crear un cluster virtualizado, con las mismas características del cluster físico. Se instalaron dos clusters con 4 nodos cada uno, la diferencia de estos clusters, es que el primer cluster es físico y el segundo cluster es virtualizado. A estos se les hizo una comparación de ejecución de 4 algoritmos, qué en su análisis y complejidad computacional exigen que el trabajo sea más complejo para una máquina secuencial, sin embargo al repartirlo a varios nodos el trabajo es menos pesado. Estas pruebas de desempeño nos ayudan a escoger la mejor solución para el desarrollo de problemas que hoy en día las empresas requieren. i

5 Abstract Virtualization has an important role in computer security, and most companies use it to protect the information using virtual systems that communicate with physical systems. Companies also see advantages as saving space and lower energy use which in turn is included in saving a lot of money. In this work we define what are the parallelization techniques that exist and how a cluster works Mosix in implementing programs. You can define virtualization techniques used to handle different operating systems. Virtualizer software used was Virtual-box can be installed on different platforms and accept the installation of several operating systems including to OpenSuSE. Because most of the clusters that exist are physical, it was decided to create a virtualized cluster with the same characteristics of the physical cluster. Installed two clusters with 4 nodes each, the difference in these clusters is that the first cluster is physical and the second cluster is virtualized. These were given a performance comparison of 4 algorithms, which in its analysis and computational complexity require more complex work for a sequential machine, but to distribute it to multiple nodes is less heavy work. These performance tests help us choose the best solution for the development of problems that today's companies require. ii

6 DEDICATORIA A DIOS. Por su infinita sabiduría, la cual la da a todos abundantemente y sin reproche. El cual me dio la oportunidad, de haber estudiado esta maestría. A mi Esposa Blanca Estela, por todo su amor, paciencia y ayuda en la culminación de esta tesis. Te amo Blanca. A mis hijos, Hugo Jonatán y David Jefté, a los cuales les dedico este trabajo, para que ellos superen algún día este pequeño logro. A mi papá Tomás Antonio, mi mamá Paulina Velázquez, a mis hermanos Tomy, Lupita y Claudia los cuales estando lejos me apoyaron y me dieron ánimos para que yo no desmayara. Los quiero mucho. A mi suegra, por su paciencia, apoyo y porque me enseñó a tener perseverancia. A mis amigos, los cuales me apoyaron para que culminara este trabajo y a los cuales les dedico este esfuerzo, gracias por su paciencia. Posteriormente trabajaremos juntos para lograr muchos resultados. iii

7 AGRADECIMIENTOS. AL INSTITUTO POLITECNICO NACIONAL (IPN). Siempre fue un sueño estudiar en esta gran institución y cuando se presentó la oportunidad de formar parte de sus filas, alcancé ese sueño. Al Centro de Innovación y Desarrollo Tecnológico en Cómputo (CIDETEC), por darme la oportunidad de haber estudiado, por darme la oportunidad de avanzar en mi vida profesional, por sus profesores, sus instalaciones, sus equipos y por todo. Al Tecnológico de Estudios Superiores de Jocotitlán y a la Ing. Esther Verónica García Ortiz mil gracias por su apoyo y comprensión. A MIS MAESTROS Y ASESORES. A mis Directores de Tesis. Al M en C. Jesús Antonio Álvarez Cedillo, porque aprendí muchas cosas referentes a cluster y programación paralela y sobre todo el ayudarme a incursionar al maravilloso mundo del software libre, gracias. Al M en C. Juan Carlos Herrera Lozada, por ser un buen asesor y profesor, por su gran paciencia y enseñanza en la redacción de esta tesis y sobre todo por su amistad. Al Director del CIDETEC, Dr. Víctor Manuel Silva García, por haber creído en un grupo de alumnos, por su paciencia a pesar de muchas críticas y por ser un buen profesor. A mi comité tutorial. A todos ellos porque cada uno me corrigió en el desarrollo de esta tesis y por sus consejos en todo momento. A mis profesores, por que dedicar parte de su tiempo y por sus muchas enseñanzas y apoyo para terminar esta maestría, muchas gracias. iv

8 GLOSARIO DE TÉRMINOS Algoritmos Genéticos. Son llamados así porque se inspiran en la evolución biológica y su base genéticomolecular. Estos algoritmos hacen evolucionar una población de individuos sometiéndolos a acciones aleatorias semejantes a las que actúan en la evolución biológica (mutaciones y recombinaciones genéticas). Alta Disponibilidad. También se le conoce como HA (High Availability), es un protocolo de diseño de sistema y su implementación está asociada a la continuidad operacional durante un periodo de medición dado. AMD. Advanced Micro Devices, Inc. (AMD) es una de las compañías más grandes del mundo en producción de microprocesadores compatibles x86 (junto a Intel) y uno de los más importantes fabricantes de CPUs, GPUs, chipsets y otros dispositivos semiconductores. Balanceo de carga. Es un concepto usado en informática que se refiere a la técnica usada para compartir el trabajo a realizar entre varios procesos, ordenadores, discos u otros recursos. Batch.- Es un archivo por procesamiento de lotes, que es utilizado para manipular al sistema operativo y sus programas. Es utilizado en ms-dos, Windows y OS/2. Beowulf. Es una conexión de computadoras multi-arquitectura, que se puede utilizar para cálculos en paralelo. Es un sistema que por lo general consiste en un nodo de servidor y uno o más nodos cliente conectados entre sí a través de Ethernet o una red. BIN. Archivo comprimido que se codifica como binario o MacBinary, almacena una cabecera del buscador, tenedor de datos y el tenedor de los recursos; creado para Macintosh. BIOS. (Sigla en inglés de Basic Input / Output System), es un firmware que se ejecuta al encender la computadora y que localiza y reconoce todos los dispositivos necesarios para cargar el sistema operativo en la memoria RAM. Booteo. Es el proceso que inicia el sistema operativo cuando el usuario enciende una computadora. Se encarga de la inicialización del sistema y de los dispositivos. Bridge. Es un dispositivo de interconexión de redes de ordenadores que opera en la capa 2 (nivel de enlace de datos) del modelo OSI. Este interconecta dos segmentos de red (o divide una red en segmentos) haciendo el pasaje de datos de una red hacia otra, con base en la dirección física de destino de cada paquete. Bucle. En programación, es una sentencia que se realiza repetidas veces a un trozo aislado de código, hasta que la condición asignada a dicho bucle deje de cumplirse. Celeron. Es el nombre que lleva la línea de procesadores de bajo costo de Intel. El objetivo era poder mediante esta segunda marca penetrar en los mercados impedidos a los Pentium, de mayor rendimiento y precio. Clase de red. División del número IP en segmentos que posibilita la clasificación de las direcciones IPs en 5 clases: A, B, C, D y E. Cada clase de dirección permite un cierto número de redes y de computadoras dentro de estas redes. Cluster. Se aplica a los conjuntos o conglomerados de computadoras construidos mediante la utilización de componentes de hardware comunes y que se comportan como si fuesen una única computadora. v

9 CMS. (En inglés Content Management System, abreviado CMS), es un programa que permite crear una estructura de soporte (framework) para la creación y administración de contenidos, principalmente en páginas web, por parte de los participantes. Cola. Es una estructura de datos caracterizada por ser una secuencia de elementos en la que la operación de inserción push se realiza por un extremo y la operación de extracción pop por el otro. También se le llama estructura FIFO (del inglés First In First Out), debido a que el primer elemento en entrar será también el primero en salir. Coma o punto flotante. Es un método de representación de números reales que se puede adaptar al orden de magnitud del valor a representar, usualmente trasladando la coma decimal, mediante un exponente hacia la posición de la primera cifra significativa del valor. Complejidad computacional. Es la rama de la teoría de la computación que estudia de manera teórica, la complejidad inherente a la resolución de un problema computable. CPU. La unidad central de procesamiento o CPU (por el acrónimo en inglés de Central Processing Unit), o simplemente el procesador o microprocesador, es el componente del computador y otros dispositivos programables que interpretan las instrucciones contenidas en los programas y procesa los datos. Ethernet. Es un estándar de redes de computadoras de área local con acceso al medio por contienda CSMA/CD (Acceso Múltiple por Detección de Portadora con Detección de Colisiones). Ext3. Es el sistema de archivo más usado en distribuciones Linux, aunque en la actualidad está siendo reemplazado por su sucesor, ext4. Flops. Es el acrónimo de Floating point Operations Per Second (operaciones de punto flotante por segundo). Se usa como una medida del rendimiento de una computadora, especialmente en cálculos científicos que requieren un gran uso de operaciones de punto flotante. g++. Es el alias tradicional de GNU C++, un conjunto gratuito de compiladores de C++. gdb. Es un debugger de proyecto gnu, con se pueden ver los errores de un programa al compilar el programa o hasta cuando se ejecuta. Gcc. Es un conjunto de compiladores creados por el proyecto GNU. GCC es software libre y lo distribuye la FSF bajo la licencia GPL. GigaFlops. Equivale a 10 elevado a la 9 flops. GNOME. Es un entorno de escritorio e infraestructura de desarrollo para sistemas operativos Unix y derivados Unix como GNU/Linux, BSD o Solaris; compuesto enteramente de software libre. Goto. (ir a en inglés), es una instrucción muy común en los lenguajes de programación con el objetivo de controlar el flujo del programa. Granjas de servidores. Es una colección de servidores o de computadoras, por lo general mantenidas por una empresa, para llevar a cabo necesidades del servidor mucho más allá de la capacidad de una máquina. Granjas de Renderizado. Son un conjunto de computadoras que compilan imágenes en tercera dimensión y con millones de colores. Granularidad. Es un factor clave para determinar la idoneidad de un modelo paralelo para una implementación eficiente de códigos complejos en arquitecturas de procesadores simultáneos. vi

10 Grid. Es una tecnología innovadora que permite utilizar de forma coordinada todo tipo de recursos (entre ellos cómputo, almacenamiento y aplicaciones específicas) que no están sujetos a un control centralizado. Hipercubo. El hipercubo es una de las topologías de multicomputadoras con conmutador, la cual trata de redes de interconexión de CPU donde cada uno tiene su propia memoria exclusiva. Hipervisor. (En inglés hypervisor o monitor de máquina virtual, virtual machine monitor), es una plataforma de virtualización que permite utilizar al mismo tiempo, diferentes sistemas operativos (sin modificar o modificados en el caso de paravirtualización) en una misma computadora. ICMP. El Protocolo de Mensajes de Control de Internet o ICMP (por sus siglas de Internet Control Message Protocol), es el subprotocolo de control y notificación de errores del Protocolo de Internet. IMG. Son archivos de imagen, para grabar discos de CD o DVD. INTEL. Es el más grande fabricante de chips semiconductores basado en ingresos. La compañía es la creadora de la serie de procesadores x86, los procesadores más comúnmente encontrados en la mayoría de las computadoras personales. IP. Consiste en un número de 32 bits que en la práctica vemos siempre segmentado en cuatro grupos de 8 bits cada uno (xxx.xxx.xxx.xxx). Cada segmento de 8 bits varía de 0 a 255 y están separados por un punto. ISO. Es una imagen de disco, que contiene información de DVD y/o CD. Java. Es un lenguaje de programación orientado a objetos, desarrollado por Sun Microsystems a principios de los años 90 y su sintaxis es parecida a c++. KDE. Es un proyecto de software libre para la creación de un entorno de escritorio e infraestructura de desarrollo para diversos sistemas operativos como GNU/Linux, Mac OS X, Windows, etc. Kernel. Es un software que actúa de sistema operativo. Es el principal responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora. En forma más básica, es el encargado de gestionar recursos a través de servicios de llamada al sistema. Live CD. Es un sistema operativo (normalmente acompañado de un conjunto de aplicaciones) almacenado en un medio extraíble, tradicionalmente un CD o un DVD (de ahí sus nombres), que puede ejecutarse desde éste sin necesidad de instalarlo en el disco duro de una computadora. long double. Se refiere a un punto flotante tipo de datos que a menudo es más preciso que el de doble precisión. Mainframe. Es una computadora grande, potente y costosa usada principalmente por una gran compañía para el procesamiento de una gran cantidad de datos; por ejemplo, para el procesamiento de transacciones bancarias. Make. Es una herramienta de generación o automatización de código, muy usada en los sistemas operativos tipo Unix/Linux. Por defecto lee las instrucciones para generar el programa u otra acción del fichero makefile. Las instrucciones escritas en este fichero se llaman dependencias. Máquina Virtual. Es un software que emula a una computadora y puede ejecutar programas como si fuese una computadora real. Maya. Es un programa informático dedicado al desarrollo de gráficos en 3D, efectos especiales y animación. MFLOPS. Equivalencia a 1,000,000 de flops. vii

11 Middleware. Es un software de conectividad que ofrece un conjunto de servicios que hacen posible el funcionamiento de aplicaciones distribuidas sobre plataformas heterogéneas. Migración de procesos. Es cuando los procesos en clusters de ordenadores son capaces de pasar de una máquina a otra. El proceso de migración se lleva a cabo en Mosix y OpenMosix entre otros. MOPS. Significa millones de operaciones por segundo. Mosix. Es un sistema operativo distribuido. Aunque las primeras versiones se basaban en los más antiguos sistemas UNIX, desde 1999 se centra en Linux clusters y redes. MPI. Es una API de la especificación, que permite a los ordenadores comunicarse entre sí. Se utiliza en clusters de ordenadores y superordenadores. MS-DOS. Es un sistema operativo de x86 basados en computadoras personales, basados en IBM. Multicomputadoras. Es una asociación de computadoras conectadas en red y que comparten recursos en común. NAT. (Network Address Translation, Traductor de direcciones de red NAT), en redes de computadoras, es el proceso de modificación de direcciones de red de información de datagramas (IP) a cabeceras de los paquetes en tránsito, a través de un tráfico de enrutamiento del dispositivo con el fin de reasignar una IP espacio de direcciones a otro. NRG. Un archivo nrg, es una propiedad de CD de imagen en formato de archivo utilizado por Nero Burning ROM, una suite de servicios públicos realizados por Nero AG, para crear y grabar ISO 9660 imágenes de CD. Openmosix. Es un sistema de gestión de grupos gratuito, que proporciona la imagen de un solo sistema (SSI), como la distribución del trabajo automático entre los nodos del cluster. Openssh. Es un conjunto de programas de ordenador, que proporciona cifrado de sesiones de comunicación a través de una red de ordenadores con el protocolo ssh. Ortogonalidad. En matemáticas, dos vectores son ortogonales si son perpendiculares, es decir, forman un ángulo recto. La palabra viene del griego (Orthos), que significa "recta", y (gonia), que significa "ángulo". Overhead. Traducido como Costos elevados. Paralelismo. Es una forma de cálculo en el que muchos programas se llevan a cabo al mismo tiempo. Opera en el principio de que los problemas grandes a menudo se pueden dividir en más pequeños y que se resuelven al mismo tiempo ("en paralelo"). Pipeline. En informática, un pipeline o tubería es un conjunto o elementos procesadores de datos conectados en serie, en donde la salida de un elemento es la entrada del siguiente. Los elementos del pipeline son generalmente ejecutados en paralelo, en esos casos, debe haber un almacenamiento tipo buffer insertado entre elementos. También es sinónimo de segmentación. PVM. Es un software de herramienta para la creación de redes paralelas de computadoras. Está diseñado para permitir una red heterogénea de Unix y/o equipos con Windows para ser utilizado como una sola computadora, distribuye el trabajo a los procesadores en forma paralela. Ralentizar. Significa desacelerar o hacer lento a un sistema de hardware. viii

12 Recursividad. Es un método de definición de funciones, en el cual la función se aplica dentro de su propia definición, en concreto es la definición de una declaración infinita utilizando componentes finitos. Redes Neuronales. Denominadas habitualmente como RNA o en inglés como: "ANN", son un paradigma de aprendizaje y procesamiento automático inspirado en la forma en que funciona el sistema nervioso de los animales. Renderizar. (Render en inglés), es un término usado en informática para referirse al proceso de generar una imagen desde un modelo. Este término técnico es utilizado por los animadores o productores audiovisuales y en programas de diseño en 3D. Root. Es el nombre convencional de la cuenta de usuario que posee todos los derechos en todos los modos (mono o multiusuario). Root es también llamado superusuario. RSA. En criptografía, RSA (Rivest, Shamir y Adleman) es un sistema criptográfico de clave pública desarrollado en En la actualidad, RSA es el primer y más utilizado algoritmo de este tipo y es válido tanto para cifrar como para firmar digitalmente. Secuencial. Significa que un programa se ejecuta instrucción a instrucción en un solo procesador. Sistemas Distribuidos. Colección de computadoras autónomas, conectadas por una red, y que con la ayuda de software distribuido comparte recursos. Sistemas Embebidos. Es un sistema de computación diseñado para realizar una o algunas pocas funciones dedicadas, frecuentemente en un sistema de computación en tiempo real. Speedup. En computación paralela, la aceleración se refiere a la cantidad de un algoritmo paralelo y es más rápida que una secuencia correspondiente a otro algoritmo. Switch. Es un dispositivo de Networking situado en la capa 2 del modelo de referencia OSI. Torres de Hanoi. Algoritmo recursivo, que se basa en ordenar platos en 3 postes en n cantidad de movimientos. UNIX. (Registrado oficialmente como UNIX ), es un sistema operativo portable, multitarea y multiusuario; desarrollado en 1969 por un grupo de empleados de los laboratorios Bell de AT&T. USB. (Universal Serial Bus), es un puerto que sirve para conectar periféricos a un ordenador. VCD. Es un estándar de almacenamiento de video y también se utiliza para comprimir. Virtualización. Se refiere a la abstracción de los recursos de una computadora, que crea una capa de abstracción entre el hardware de la máquina física (host) y el sistema operativo de la máquina virtual (virtual machine, Guest), siendo un medio para crear una versión virtual de un dispositivo o recurso como: un servidor, un dispositivo de almacenamiento, una red o incluso un sistema operativo. ix

13 INDICE GENERAL CAPITULO PAG. CAPITULO I INTRODUCCIÓN SISTEMAS DISTRIBUIDOS Y CLUSTERS Sistemas distribuidos como base para la construcción de un cluster Análisis histórico de los clusters y top Tecnologías de programación distribuida, utilizada en el diseño de un cluster Cluster, tipos y funcionamiento Mosix una alternativa de alta disponibilidad y balanceo de carga para clusters Clusters virtuales SITUACIÓN ACTUAL PLANTEAMIENTO DEL PROBLEMA JUSTIFICACIÓN OBJETIVO GENERAL Objetivos específicos CONTRIBUCIÓN HIPÓTESIS METODOLOGÍA ESTRUCTURA DE LA TESIS CAPÍTULO 2 PRINCIPIOS DE PROCESAMIENTO PARALELO COMPUTACIÓN PARALELA El paralelismo explicito LA LEY DE AMDAHL Factor de Rendimiento Speedup ARQUITECTURAS PARALELAS TAXONOMÍA DE FLYN SISD (Single Instruction, Single Data, Una Instrucción, un dato) SIMD (Single Instruction Stream, Múltiple Data Stream, Un Flujo de instrucción, Multiple flujo de datos) MISD (Multiple Instruction Stream, Single Data Stream, Múltiple flujo de instrucciones, un único flujo de datos) MIMD (Multiple Instruction Stream, Multiple Data Stream, Múltiple flujo de Instrucciones, Multiple flujo de Datos) EJEMPLOS DE PROBLEMAS PARALELIZABLES CAPÍTULO 3 VIRTUALIZACIÓN EN EQUIPOS DE CÓMPUTO INTRODUCCIÓN QUÉ ES LA VIRTUALIZACIÓN? Historia de la Virtualización CÓMO TRABAJA UN SISTEMA VIRTUAL? Virtualización pura Virtualización impura IMPORTANCIA DE LA VIRTUALIZACIÓN CAPÍTULO 4. DESARROLLO E IMPLEMENTACIÓN DIFERENCIAS ENTRE CLUSTERS FÍSICOS Y CLUSTERS VIRTUALES Clusters físicos Cluster Virtual DIFERENCIAS ENTRE EL CLUSTER VIRTUAL Y CLUSTER FÍSICO Características del cluster virtual DIFERENCIAS ENTRE CLUSTER FÍSICOS Y CLUSTER VIRTUAL INSTALACIÓN Y CONFIGURACIÓN DEL SOFTWARE EN LA MÁQUINA VIRTUAL Y MÁQUINA FÍSICA x

14 4.3.1 Pasos para instalar Virtual box para el cluster virtual Instalación de Opensuse y configuración de la red INSTALACIÓN DE MOSIX CAPÍTULO 5. PRUEBAS DE DESEMPEÑO REQUERIMIENTOS PARA EL CLUSTER FÍSICO Y VIRTUAL METODOLOGÍA Pruebas utilizando el algoritmo de Factorial Análisis de tiempo de ejecución del algoritmo Factorial, en secuencial, paralelo físico y paralelo virtual ANÁLISIS DEL ALGORITMO DE STRESS UTILIZANDO TRES BUCLES ANIDADOS Análisis de tiempo de ejecución del algoritmo Stress en secuencial, paralelo físico y paralelo virtual CÁLCULO DE PI POR MEDIO DEL ALGORITMO DE GREGORY- LEIBNIZ Análisis de tiempo de ejecución del algoritmo PI por el método de Gregory- Leibniz en secuencial, paralelo físico, paralelo virtual y su Speedup ALGORITMO RECURSIVO DE LAS TORRES DE HANOI Muestras y tiempos secuencial, paralelo físico, paralelo virtual y ganancia en el speedup, con el algoritmo de Torres de Hanoi MONITORIZACIÓN DE UN PROGRAMA EN EJECUCIÓN CAPITULO 6: CONCLUSIONES Y TRABAJO A FUTURO CONCLUSIONES TRABAJOS A FUTURO REFERENCIAS ANEXOS ANEXO A: INSTALACIÓN DE MOSIX EN OTRAS DISTRIBUCIONES NO SUSE ANEXO B : COMANDOS ESENCIALES UTILIZADOS EN MOSIX ANEXO C. COMPLEJIDAD COMPUTACIONAL xi

15 INDICE DE FIGURAS FIGURA No. Figura 1.1 Los Borg, un cluster Beowulf utilizado por el grupo de la universidad McGill, utilizado para buscar pulsares binarios Figura 1. 2 Roadrunner el mejor cluster del mundo, creado para la investigación Figura 1. 3 Cluster Iceberg creado en la universidad de Stanford y que soporta balanceo de carga Figura 1. 4 Cluster Snowwhite con kernel de mosix, con balanceo de carga Figura 1. 5 Grid Mosix trabajando con clusters independientes virtualizados Figura 1. 6 Procesador Intel core 2 dúo con características escalares (fig izq). Procesador AMD, Opteron con 7 núcleos con ambas características escalares y vectoriales (fig der) Figura 2.1 Tipos de paralelismo de Software que se divide en interno y explicito Figura 2.2 Procesadores con memoria distribuida en una red de interconexión Lan Figura 2.3 Procesadores con memoria compartida con acceso no uniforme a memoria NUMA Figura 2.4 Procesadores con memoria compartida con acceso uniforme a memoria UMA Figura 2.5 Procesadores con memoria compartida distribuida, por medio de una red global Figura 2.6 Taxonomía de Flyn, que muestra las diferentes arquitecturas Figura 2.7 Arquitectura SISD Figura 2.8 Arquitectura SIMD Figura 2.9 Arquitectura MISD Figura 2.10 Arquitectura MIMD Figura 3.1Una máquina virtual. El hipervisor (o monitor de la máquina virtual) presenta una interface que muestra el hardware al sistema operativo invitado Figura 3.2 El monitor de la maquina virtual comunicando al hardware real con el hardware virtual Figura 3.3 Instrucciones al crear una excepción entre una máquina anfitriona y una máquina virtual Figura 3.4 En la técnica de virtualización impura, se reemplazan las instrucciones en el código original por cualquiera de las instrucciones del hipervisor y salta a emulación a nivel de usuario Figura 3.5 Una computadora normal antes de la virtualización Figura 3.6 Computadora después de la virtualización, con múltiples sistemas virtuales Figura 3.7 Esquema del cluster con 3 nodos y un nodo maestro Figura 3.8 Tipos de conexión en una tarjeta de red en Virtual Box Figura 3.9 Configuración de la tarjeta de red en Virtual Box Figura 3.10 Selección de la memoria RAM en la máquina virtual de Virtual Box Figura 3.11Configuración del disco duro virtual en Virtual Box Figura 3.12 Selección de una imagen de disco (ISO, NRG,etc), para instalar sistema operativo Figura 3.13Seleccionar el tipo de conexión de Red en Virtual Box Figura 4.1 Instalando OpenSUSE 11.1, configurando idioma Figura 4.2 Particionar el disco duro en formato ext y configurando el tamaño de la instalación xii

16 Figura 4.3 Gestor de Software de OpenSUSE Figura 4.4 Configuración de Red por YaST Figura 4.5 Configuracion por conexión de Red Figura 4.6 Configuración de direcciones IP en OpenSUSE Figura 4.7 Gestor de arranque GRUB, iniciando con kernel Mosix Figura 5.1 Grafica de prueba secuencial aplicado al algoritmo de Factorial Figura 5.2 Grafica de prueba en cluster fisico, aplicado al algoritmo de Factorial Figura 5.3 Grafica de prueba en cluster virtual, aplicado al algoritmo de Factorial Figura 5.4 Grafica de comparacion entre tiempos secuencial, cluster fisico y el speedup, aplicado al algoritmo de Factorial Figura 5.5 Grafica de comparacion entre tiempos secuencial, cluster virtual y el speedup, aplicado al algoritmo de Factorial Figura 5.6 Grafica de prueba secuencial aplicado al algoritmo de Stress Figura 5.7 Grafica de prueba en cluster fisico, aplicado al algoritmo de Stress Figura 5.8 Grafica de prueba en cluster virtual, aplicado al algoritmo de Factorial Figura 5.9 Grafica de comparacion entre tiempos secuenciales, cluster fisico y el speedup, aplicado al algoritmo de Stress Figura 5.10 Grafica de comparacion entre tiempos secuencial, cluster virtual y el speedup, aplicado al algoritmo de Stress Figura 5.11 Grafica de prueba secuencial aplicado al algoritmo de PI de Gregory-Leibniz Figura 5.12 Grafica de prueba en cluster fisico, aplicado al algoritmo de Pi de Gregory-Leibniz Figura 5.13 Grafica de prueba en cluster virtual, aplicado al algoritmo de Pi de Gregory-Leibniz Figura 5.14 Grafica de comparacion entre tiempos secuencial, cluster fisico y el speedup, aplicado al algoritmo de Pi de Gregory-Leibniz Figura 5.15 Grafica de comparacion entre tiempos secuencial, cluster virtual y el speedup, aplicado al algoritmo de Pi de Gregory-Leibniz Figura 5.16 Grafica de prueba secuencial aplicado al algoritmo de las Torres de Hanoi Figura 5.17 Grafica de prueba en cluster fisico, aplicado al algoritmo de las torres de Hanoi Figura 5.18 Grafica de prueba en cluster virtual, aplicado al algoritmo de las torres de Hanoi Figura 5.19 Grafica de comparacion entre tiempos secuenciales, cluster fisico y el speedup, aplicado al algoritmo de las torres de Hanoi Figura 5.20 Grafica de comparacion entre tiempos secuenciales, cluster virtual y el speedup, aplicado al algoritmo de las torres de Hanoi Figura 5.21 Monitor del sistema, mostrando el trabajo del CPU, la red, al momento de trabajar con el cluster Figura 5.22 Monitoreo de los recursos del procesador, capacidad de la memoria y trabajo en red del Algoritmo de las Torres de Hanoi en cluster paralelo físico xiii

17 INDICE DE TABLAS TABLA No. Tabla 1. 1 Primeros cluster desarrollados a través del tiempo Tabla 1. 2 Mejores clusters del mundo dadas a conocer en 4 Tabla 3. 1 Historia de la virtualización y las máquinas virtuales Tabla 4.1 Diferencia de costos entre el cluster fisico y el cluster virtual Tabla 5.1 Muestras, tiempos calculados secuencialmente, en cluster fisico y cluster virtual con el algoritmo del Factorial Tabla 5.2 Muestras, tiempos calculados secuencialmente, en cluster fisico y cluster virtual con el algoritmo de Stress Tabla 5.3 Muestras, tiempos calculados secuencialmente, en cluster fisico y cluster virtual con el algoritmo PI Gregoy-Leibniz Tabla 5.4 Muestras, tiempos calculados secuencialmente, en cluster fisico y cluster virtual con el algoritmo de las Torres de Hanoi xiv

18 CAPITULO I Introducción 1.1 Sistemas Distribuidos y clusters. Actualmente, en lo que se refiere a la capacidad de procesamiento, existen varias alternativas en el mercado, pero muchas de esas alternativas resultan en costos muy altos, tal es el caso de los mainframes y servidores. El utilizar hoy en día tecnologías muy caras resulta para las pequeñas empresas, tecnológicos, universidades y cualquier entidad que no tenga recursos, muy difícil el acceso a este tipo de tecnologías en México. En lo que se refiere a las universidades públicas y tecnológicas centralizadas y descentralizadas, la investigación en las áreas de matemáticas, químicas, médicas, etc. han creado una rama que necesita del supercómputo para su desarrollo y esta rama es la Bioinformatica 1, la cual se encarga de estudiar las ciencias antes mencionadas. Para el estudio o la investigación de la Bioinformatica [18], es necesario tener sistemas computacionales (con múltiples procesadores), capaces de poder resolver problemas en tiempos muy cortos, algo que una computadora simple no puede realizar. Hay muchas tecnologías que actualmente trabajan en el ámbito del procesamiento a gran escala, muchas de éstas incluyen arreglos de discos, procesadores, utilizan memoria a gran escala lo cual ayudan a realizar operaciones en tiempos relativamente cortos. Una de estas tecnologías son los servidores y mainframes, que algunas empresas como: IBM, Sun Microsystems, Hewlett Packard y DELL entre otros trabajan en el área del procesamiento a gran escala. Pero esta tecnología está al alcance de medianas y grandes empresas, las cuales tienden a utilizar este tipo de tecnologías por su alto costo. Actualmente existe otra alternativa para las pequeñas empresas, universidades y departamentos de investigación: los clusters 2 [4]. En la Figura 1.1 se muestra un cluster destinado a la investigación, en la universidad de McGill. 1 La bioinformática es un campo interdisciplinario que se ocupa de los problemas biológicos usando técnicas computacionales y hace que sea posible la rápida organización y análisis de los datos biológicos. 2 Un conjunto de máquinas unidas por una red de comunicación trabajando por un servicio conjunto. Según el servicio puede ser: Dar alta disponibilidad, alto rendimiento, etc... 1

19 Figura 1.1 Los Borg, un cluster Beowulf utilizado por el grupo de la universidad McGill para buscar pulsares binarios Sistemas distribuidos como base para la construcción de un cluster. Los sistemas distribuidos[23] son uno de los paradigmas más importantes utilizados para solucionar problemas computacionales, incluyendo la programación. A través de este paradigma se han podido resolver problemas complejos de la ciencia y la tecnología [24]. Sus orígenes remontan desde Desde entonces los sistemas distribuidos han sido objeto de investigación continua por parte de especialistas en sistemas distribuidos, resultando así en avances muy rápidos tanto en el campo de modelos y tecnologías de programación distribuida como de las infraestructuras conocidas para ambiente distribuido (clusters, grids, bases de datos distribuidos, etc ). Los inicios de los sistemas distribuidos, se remontan a los años de 1970, con la aparición de las minicomputadoras, estaciones de trabajo, computadoras personales (PC s) y con la red de computadoras ARPANET 3. De los primeros modelos distribuidos, fue importante la contribución de los primeros sistemas operativos de tiempo compartido, como el sistema Operativo UNIX, que permite que muchos usuarios trabajen con una sola computadora al mismo tiempo. El desarrollo de procesadores cada vez más rápidos y más económicos abrió camino a la idea de crear entornos de computación potentes, poniendo en esto a sistemas capaces de resolver problemas cada vez más complejos. 3 La primera red de computadoras Advanced Research Projects Agency Network (ARPANET) fue creada por el Departamento de Defensa de los Estados Unidos (DoD), para comunicar las instituciones gubernamentales en Estados Unidos. El primer nodo se creó en la Universidad de California. Fue la base para la red de Internet que se conoce hoy. 2

20 Las redes de computadoras fueron útiles para la transmisión de información y que con la creación de Ethernet y ARCnet, ayudaron a que las computadoras pudieran intercambiar y compartir datos. Las redes de computadoras motivaron el desarrollo de sistemas distribuidos potentes, conectando muchas computadoras para conseguir así grandes capacidades de cómputo. Actualmente la gran mayoría de las empresas o instituciones ya cuentan con sus redes internas que permiten sacar provecho de los recursos. Conectar las computadoras en una red de área local (LAN) o global, permite que se puedan usar para resolver problemas complejos y así incrementar su uso para aplicaciones más potentes. Con la aparición de los clusters [31], se creó una alternativa a las supercomputadoras. Las supercomputadoras son máquinas especializadas con un alto costo de adquisición y mantenimiento. En cambio los clusters, son mucho más económicos (al alcance de pequeñas empresas o de instituciones) y de bajo costo de mantenimiento. Aún así, la capacidad de cálculo ofrecido por los clusters es suficiente para muchas aplicaciones complejas de la vida real. De los primeros clusters que se crearon están los clusters Beowulf 4. Éste tipo de cluster se conforma por un grupo de computadoras con una misma configuración que utiliza el sistema operativo Linux y software gratuito de código abierto (middleware). Este tipo de cluster está en el grupo de los clusters tipo HPC (Computación de Alto Performance o computación de alto desempeño) y son capaces de resolver problemas complejos muy utilizados en la computación científica Análisis histórico de los clusters y top500. Los primeros clusters que se desarrollaron (Tabla 1.1) y que fueron creados a partir de los proyectos de ARCnet, tuvieron que utilizar las tecnologías de la época como procesadores de baja velocidad y memoria reducida. Nombre del cluster Nombre Empresa Año de creación C.mpp DEC PDP Vax-Cluster Arcnet-Datapoint Corporation 1977 Tandem-Himalaya Hewlett Packard 1993 IBM S/390 Parallel Sysplex IBM 1994 Cluster Beowulf NASA 1998 Tabla 1. 1 Primeros clusters desarrollados a través del tiempo. 4 Es un tipo de cluster que fue desarrollado por primera vez en 1994 en la NASA, para solucionar problemas de alto desempeño, y que se conforma de un nodo maestro y nodos clientes, utilizando software conocido como commodities. 3

21 Para tomar en cuenta el desarrollo e implementación de los clusters en la industria, en la investigación, en las escuelas, etc. Se creó el proyecto TOP500 5 en el año 1993, para detectar los mejores clusters a nivel mundial, dependiendo de su uso, la cantidad de nodos y su velocidad que se mide en TeraFlops 6. Actualmente top 500 nos muestra el cluster más rápido del mundo, el cual alcanza una velocidad sorprenden para el cálculo de operaciones por segundo, y es el cluster RoadRunner (Figura 1.2), del departamento de energía de los Estados Unidos. Los mejores clusters del mundo son los siguientes (Tabla 1.2): Lugar Nombre Cluster Velocidad de punto flotante Empresa 1 Roadrunner o Blade Center 1.7 PetaFlops IBM 2 BlueGene 500 TFlops IBM 4 GSIC Center, Tokio Institute of Technology Giga Flops TSUBAME 2.0 of Japan 5 Nebulae-Dawnin TC GigaFlops Center Tianjin Tabla 1. 2 Mejores clusters del mundo dados a conocer en Figura 1. 2 Roadrunner el mejor cluster del mundo, creado para la investigación. 5 Top500 es el sitio (www.top500.org), que muestra las instituciones, el país. Que muestra una lista de los clusters más veloces del mundo, y su velocidad de punto flotante, que van desde los GIGAFLOPS, hasta los PETAFLOPS. 6 Flops son las operaciones de punto flotantes por segundo, es la medida utilizada para cálculos científicos que requieren operaciones de coma flotante. Las medidas que se conocen son: MegaFlops MFLOPS (10 6 ), gigaflops GFLOPS (10 9 ), teraflops TFLOPS (10 12 ) y petaflops PFLOPS (10 15 ). 4

22 1.1.3 Tecnologías de programación distribuida, utilizada en el diseño de un cluster. Desde los inicios de los sistemas distribuidos, la comunidad científica y desarrolladores, se han interesado por crear modelos de programación distribuida y tecnologías de software que permitan llevar a cabo estos modelos y al mismo tiempo aprovechar al máximo las prestaciones de hardware, a fin de obtener aplicaciones distribuidas de alto rendimiento. Algunas de estas tecnologías, se les conoce con el nombre de Middleware 7, el cual es un software de conectividad y que hace posible el funcionamiento de las aplicaciones distribuidas. De las tecnologías conocidas de middleware se mencionan a RPC, DCOM, CORBA, SOAP, XML-RPC, Java, SSI, RMI, MPI, PVM, MOSIX, etc [6]. También son útiles los lenguajes de programación, debido a que algunos permiten implementar aplicaciones distribuidas ya sea usando mecanismos propios o librerías de comunicación externas al lenguaje, las cuales posibilitan el desarrollo de tecnologías distribuidas y por ende la construcción de clusters. Por ejemplo, muchas de las aplicaciones de Computación de Alto Desempeño utilizan el lenguaje de programación c/c++, el cual usa la librería de comunicación paralela MPI/PVM Cluster, tipos y funcionamiento. Se entiende por cluster a una agrupación de computadoras independientes llamados también nodos, que tienen componentes de hardware comunes y que utilizan un software de interconexión, que hace que éstos funcionen como una sola computadora. En los ámbitos científicos, los grupos de clusters consisten en nodos de computadoras, nodos de almacenamiento y uno o más nodos front end (servidores) y en algunos casos hay nodos adicionales dedicados al monitoreo. Estos nodos pueden estar interconectados por redes diferentes, generalmente redes de alta velocidad, con un ancho de banda muy alto. Esta velocidad solo puede ser alcanzada por tecnologías como GigabitEthernet, Myrinet e infiniband, ya que éstos alcanzan los 40 Gigabits/seg. El trabajo de los clusters consiste en [4]: Aumentar la disponibilidad y disminuir la probabilidad de fallos, ya que en caso de que un equipo en el cluster falle, existe otro que lo reemplace. Facilitar la escalabilidad, puesto que los equipos interconectados permiten que se añadan más de estos equipos a la red. 7 Es un software de interconexión, que conecta componentes de software, para compartir recursos a nivel distribuido. Aplicable a servidores, clusters, servicios web y de bases de datos. 5

23 Permitir el balanceo de carga, debido a que logran la repartición de los recursos de software a otros nodos de la red. Facilitar la gestión de los recursos (CPU, RAM, discos duros y ancho de banda). Dependiendo del tipo de trabajo en el cual se va a desempeñar un cluster, estos se definen como: Clusters de Alta Disponibilidad (High Availability).- Son clusters, que su funcionalidad trata de que el trabajo continúe sin interrupciones, todo debido a la alta demanda que generalmente son las 24 horas del día los 365 días del año, por ejemplo el cluster de google, por su alta demanda necesita de este tipo de clusters para su funcionamiento [3]. Clusters para distribuir, de Alta eficiencia (High Throughput).- Son clusters cuya funcionalidad es el de ejecutar la mayor cantidad de tareas en un tiempo deseable. Clusters de alto Desempeño (High Performance).- Este tipo de cluster trabaja con grandes tareas que requieren un gran desempeño computacional, agotando todos los recursos del cluster por largos periodos de tiempo hasta que el trabajo se haya terminado correctamente. En equipos de cómputo individuales, la carga de trabajo provocaría lentitud y bloqueos en el sistema Mosix una alternativa de alta disponibilidad y balanceo de carga para clusters. Mosix fue desarrollado en la universidad hebrea de Jerusalén por Amnon Barack y Amnon Siloh [20], como una alternativa de conexión en red. Mosix es una herramienta creada para balancear la carga (software en ejecución), de manera que los usuarios no se den cuenta que los procesos del software en ejecución estén trabajando en segundo orden; al final los nodos del cluster se comportan como una sola máquina, y de esta forma se incrementa el aprovechamiento de los programas que corren paralelamente. Mosix fue diseñado para correr en plataformas x86, que incluyen a computadoras personales, estaciones de trabajo y servidores. Todos estos hosts pueden ser conectados a través de una red LAN o en una red de interconexión muy rápida. Dependiendo del tipo de aplicaciones, Mosix puede ser utilizado para la configuración de un pequeño cluster de computadoras personales que utilizan un estándar de comunicación como: Fast Ethernet (100 Mbps), Gigabit Ethernet (1000 Mbps) o Mirynet 8 (10 Gbps), etc. La principal ventaja de utilizar Mosix es su bajo costo, la comodidad de trabajar con diferente hardware y sobre todo trabajar con todo el software compatible con Linux, así como ofrecer una imagen única de sistema (SSI), ser altamente escalable y tener un fácil mantenimiento. 8 Es una red de interconexión de alta velocidad (aprox. 10 Gbps), que utiliza cable de fibra óptica y que sirve para interconectar clusters de computadoras. 6

24 En un sistema Mosix, los programadores y los usuarios pueden crear aplicaciones y ejecutarlas en un cluster Mosix, el cual crea múltiples procesos y en forma transparente pueden migrar [22] estos procesos a los diferentes nodos conectados en la red. Algunas características del kernel de Mosix son: Proveer una imagen única de sistema (SSI).- La transparencia de los recursos lo realiza mediante un algoritmo interno (de colas) dando a cada nodo la información y la disponibilidad para ejecutar procesos migrados. Mosix trabaja con procesos Linux y Mosix. Los procesos Linux trabajan normalmente en modo nativo y no son afectados por el trabajo del kernel de Mosix y no pueden ser migrados. Los procesos de Mosix son aplicaciones de usuario que se favorecen al ser migrados de nodo a nodo. Mosix provee un ambiente de ejecución seguro para ejecutar procesos remotos. En el cluster Mosix solamente se trabajan con procesos conocidos a nivel de kernel de Mosix y no se toman en cuenta procesos que no sean Mosix, creando así un ambiente de ejecución seguro. Trabajo de cola. Se incorpora una cola dinámica que permite trabajar con un número de tareas, que se pueden ejecutar con procedimientos FIFO (First in, First out, Primero en entrar, primero en salir). Soporte de procesos batch, puntos de recuperación y recuperación. Los archivos batch que se realicen en cualquier nodo, se pueden guardar y posteriormente ejecutar en otro nodo o en el nodo principal, y además Mosix tiene la capacidad de guardar las imágenes de los procesos en ejecución, creando así un punto de restauración, almacenando la información en un archivo batch para que posteriormente pueda ser restaurado. Cuenta con un monitor, que provee de información sobre los recursos que se están ejecutando en el cluster y además nos puede mostrar la velocidad del CPU, carga del CPU, memoria libre, memoria usada, espacio del swap, etc. Información probabilística y diseminación de algoritmos. El cluster de Mosix provee a cada nodo suficiente información acerca de los recursos que se encuentran procesando en otros nodos. En cada intervalo de tiempo, los nodos se envían información acerca de los recursos que aleatoriamente se ejecutan en ellos. Procesos de migración preferentes. Cuando se quieren migrar procesos a nivel de usuario, Mosix busca a los nodos disponibles para ejecutar estos procesos. Los procesos de migración incluyen costos fijos, y con esto los procesos pueden ser migrados a nodos disponibles. 7

25 Balanceo de carga dinámica.- La continua intención de reducir la carga entre diferentes nodos, se realiza mediante la migración de procesos, Mosix cuenta con algoritmos que se encargan de balancear estos procesos en cada uno de los nodos del cluster. Para que esto se pueda llevar a cabo es necesario que estos procesos tengan características de sobrecarga, aunque esto también depende del número de nodos. Compartición de memoria.- Otra característica de Mosix, es la prevención en el agotamiento de la memoria del cluster, ya que generalmente la memoria RAM de cada uno de los nodos, se hacen uno solo y actúa como una sola memoria RAM de red (UMA, Acceso de Memoria Uniforme). Mosix cuenta con un algoritmo que hace funcionar a la memoria cuando siente que en uno de los nodos hay espacio de memoria insuficiente. En la actualidad al trabajar con cluster de balanceo y que utilice el kernel de Mosix, se espera que realice trabajos de alto desempeño, como: las simulaciones dinámicas moleculares, generación de nuevos medicamentos, compresión de archivos mp3, renderización de películas con gráficos de alta resolución, simulación de ambientes físicos, etc. Actualmente las instituciones, como la universidad de Stanford, crearon un cluster llamado Iceberg (Figura 1.3) el cual utilizó 45 nodos y que trabaja mediante Linux con un kernel de Mosix y con mpi, con el cual se realizan trabajos de simulación de proteínas. Figura 1. 3 Cluster Iceberg creado en la universidad de Stanford y que soporta balanceo de carga. 8

26 También en la Universidad de Michigan, en el edificio del centro de Tecnología, se puede encontrar el desarrollo de un cluster que trabaja con Mosix el cual es llamado CSG Snowwhite o MACC cluster, y se conforma de aproximadamente de 45 nodos y 244 procesadores (Figura 1.4). Este cluster se utiliza para la investigación en Genética Humana y ciencias de las matemáticas. Actualmente se encuentra en uso. Figura 1. 4 Cluster Snowwhite con kernel de Mosix, con balanceo de carga Clusters virtuales En la actualidad, las empresas empiezan a reconocer la importancia de la virtualización, sobre todo por el valor que toma en las mismas para solventar esquemas de seguridad, espacio y sobre todo el ahorro de energía eléctrica y de dinero. Existe poca información de clusters implementados virtualmente. En la universidad de Barcelona se ha trabajado con el Grid Cloud con ayuda de sistemas virtualizadores como Xen y el sistema para crear cloud como Open Nebula [33]. En lo referente a Mosix y su trabajo en clusters virtuales, los creadores de Mosix, demuestran que por medio de máquinas virtuales se pueda crear un Grid de interconexión de clusters virtuales (Figura 1.5), cada uno trabajando en un solo equipo y administrado por dos Workstation [34]. Figura 1. 5 Grid Mosix trabajando con clusters independientes virtualizados. 9

27 1.2 Situación actual Actualmente los grandes sistemas de cómputo conocidos como las Mainframe, se siguen manejando por empresas, centros de investigación, universidades, etc. debido a sus capacidades y al modo de procesamiento, aunque el clustering sigue siendo la alternativa por su bajo costo. Al utilizar software libre, como es el caso de Linux, quién debido a su gran desempeño, al manejo de software libre como Mosix [20] o MPI [12] para la instalación del clustering y programación paralela, los centros de investigación han optado por esta tecnología. Para un mejor manejo en costo-beneficio, actualmente se ha manejado el tema de la virtualización como una alternativa para servidores, almacenamiento, bases de datos y redes de computadoras; sin embargo la idea del clustering virtualizado es una gran alternativa de seguridad, de ahorro de energía, de costos, etc. Hoy en día las empresas, centros de investigación, universidades, tienen muchos beneficios al utilizar la virtualización como una necesidad para la solución de problemas, algunos son: costos, almacenamiento, distribución en el hardware y software. Para virtualizar se puede escoger la virtualización por hardware o por software. Para el desarrollo de un cluster tipo HPC (High Performance clúster), se utiliza la técnica de virtualización completa, en donde se ocupa un hipervisor que permite la manipulación total de los recursos de un sistema de cómputo, lo cual permite un mejor desempeño para el manejo de las aplicaciones contenidas en cada una de las máquinas virtuales sin afectar el funcionamiento de ellas. Para el caso del clúster tipo HPC se utiliza Virtual Box como una alternativa de software libre para cualquier sistema operativo, debido a que es un sistema operativo hipervisor, que a su vez es el encargado de comunicar el sistema operativo virtual con el sistema operativo huésped. Virtual Box reconoce diferentes hardwares virtuales, ya sean tarjetas de red, tarjetas de sonido, tarjetas de video, etc. El hipervisor [16] es el encargado de comunicar el hardware virtual con el hardware físico, comunicándose con los controladores de cada uno de éstos. Además tenemos la facilidad de crear discos duros virtuales que se pueden resguardar en nuestro equipo o en cualquier medio de almacenamiento, teniendo así seguridad en el manejo y respaldo de los datos. 1.3 Planteamiento del problema A través del tiempo se han identificado diversas tecnologías de cómputo, sin embargo estas tecnologías tienen un tamaño enorme, gastan mucha energía eléctrica, además de que son caros y se corre el riesgo de tener pérdida de información. Los clusters son de este tipo, se necesitan varios nodos (computadoras sin monitor, sin teclado, ni mouse), los cuales trabajando en red, realizan 10

28 operaciones paralelas, para lo cual el cluster al realizar los cálculos, produce una gran cantidad de calor por parte de los procesadores, convirtiéndose en un problema principal. En el presente trabajo se pretende crear y evaluar un esquema, utilizando máquinas virtuales para su funcionamiento y que a su vez permita manejar aplicaciones de alta disponibilidad, que contenga un cluster virtual, utilizando técnicas de virtualización existentes en el mercado computacional como por ejemplo: Virtual box, Vmware, Xen, Hyper-V, etc [19]. De lo anterior, es necesario realizar pruebas que permitan la evaluación del proyecto. El número de máquinas virtuales depende de las capacidades de hardware con la que cuente el equipo de cómputo, como una buena cantidad de memoria, buen procesador y un disco duro con gran cantidad de espacio de almacenamiento. Este equipo puede albergar la cantidad de máquinas virtuales que se deseen, con el sistema operativo que también se desee. El equipo debe albergar por lo menos cuatro máquinas virtuales para usarlas como cluster y así tener la alta disponibilidad en la programación paralela utilizando Mosix. Para alcanzar el objetivo se utilizarán recursos computacionales que cuenten con todos los requisitos que pide el cluster, así como también un sistema operativo de distribución Linux, como es el caso de OpenSUSE en su versión 11.1 y el equipo anfitrión tendrá un sistema operativo de distribución Ubuntu en su versión 9.10, además de herramientas de clusterización como es el caso de Mosix. 1.4 Justificación Actualmente las instituciones de investigación necesitan solucionar sus problemas de manera que se aprovechen los recursos computacionales que puedan emular las características físicas de ciertos elementos antes de hacerlo en la realidad. Todo lo anterior se logra utilizando los clusters de alta disponibilidad (HPC), que con la ayuda de las técnicas de Virtualización, permitirá que la creación de los clusters sean más baratos, se obtenga ahorro en el gasto de energía eléctrica, así como menos espacio físico y sobre todo más seguridad, debido a que el hacer respaldos de discos duros virtuales asegura la continuidad del cluster científico tipo HPC [3]. 11

29 1.5 Objetivo general Diseñar y construir un clúster de kernel de alto desempeño, que trabaje con grandes cantidades de cálculo utilizando las técnicas de virtualización y que sea compatible con los sistemas físicos Objetivos específicos Particularmente se pretenden realizar las siguientes actividades: a) Diseñar y construir un protototipo de un cluster tipo HPC virtualizado. b) Establecer y afinar el prototipo para su buen desempeño. c) Adoptar el prototipo para que solucione problemas y sea compatible con otros sistemas de clusters realizados a nivel mundial. 1.6 Contribución La virtualización representa una gran ventaja para solucionar problemas en los equipos de cómputo, actualmente muchas empresas están tomando esta alternativa como una solución al manejo de la información y a un mejor uso de los recursos de los equipos sin importar la arquitectura de software que se maneje. Existe una técnica de virtualización conocida como virtualización completa, que se puede implementar para realizar diferentes aplicaciones dentro de un entorno. La contribución de este trabajo será proponer una solución de virtualización en la realización de un cluster para la solución de problemas paralelizables, con lo cual se pretende disminuir costos en lo referente a la compra de mucho equipo o también contribuyendo a la preservación del medio ambiente a través del ahorro de energía. 12

30 1.7 Hipótesis Al utilizar las técnicas de virtualización, se reducen considerablemente los gastos en la compra de equipo físico y con esto se aprovecha mejor los recursos de cómputo, reduciendo considerablemente los costos y espacios. Así se evita la contaminación, ya que estos equipos físicos gastan mucha energía eléctrica. Las técnicas de virtualización junto con las técnicas de programación paralela, resultan ser muy necesarias para empresas que no tienen solvencia económica o buscan mejoras de seguridad en los equipos de cómputo. 1.8 Metodología El presente trabajo se basó en la investigación documental, estableciendo la base teórica del problema, investigando y documentando las técnicas de Virtualización, así como los diferentes tipos de clusters junto a la programación paralela para la solución de problemas. El lugar de trabajo fue en el Centro de Innovación y Desarrollo Tecnológico en cómputo del Instituto Politécnico Nacional trabajando paralelamente con el Tecnológico de Estudios Superiores de Jocotitlán. En los 2 centros de estudios, se realiza investigación avanzada en áreas como: matemáticas y química, razón por la que se tiene la necesidad de crear un cluster científico tipo de alta disponibilidad (HPC). El virtualizador a utilizar en el proyecto es Virtual Box y se van a crear 4 máquinas virtuales llamados nodo0, nodo1, nodo2 y nodo3; configurándose la red interna para la comunicación entre ellos, además de almacenamiento y acceso remoto. De igual forma se instaló el Mosix, para la conexión entre los nodos del cluster. 1.9 Estructura de la Tesis Esta tesis se compone en dos secciones importantes: en la primera parte se muestran los aspectos teóricos que son necesarios para escoger el tipo de cluster y el sistema virtual en el cual se va a trabajar. El primer punto nos da una introducción histórica de los primeros clusters y nos muestra la forma en que éstos fueron creados, posteriormente en el capítulo dos nos muestra el principio del procesamiento paralelo. En el tercero nos habla de los tipos y clasificación de clusters, posteriormente de los tipos y técnicas de virtualización aplicada a un sistema operativo afín. En la segunda parte se muestra el desarrollo del prototipo, su implementación y funcionamiento. 13

31 En general, cada uno de los capítulos contiene lo siguiente: En el capítulo 1.- Aquí se describen los aspectos generales para realizar el trabajo de tesis, así como aspectos históricos, obteniendo las necesidades y visualizando los problemas a resolver en esta tesis. Así también se definen los objetivos y las justificaciones correspondientes. En el capítulo 2.- Principios de procesamiento paralelo, se hablará de los tipos de procesadores así como las leyes que rigen la programación paralela. En el capítulo 3.- Virtualización en equipos de cómputo, en éste se ven antecedentes donde se muestra el principio del manejo de la información, los tipos y las técnicas de virtualización. En el capítulo 4.- Desarrollo e implementación, en este capítulo se ve como se configuraron el cluster fisico y el cluster virtual, así como lo referente a la red, al sistema operativo, a las máquinas virtuales y al kernel de Mosix. En el capítulo 5.- Pruebas de desempeño.- En este capítulo se mencionan las pruebas realizadas tanto al cluster físico como al virtualizado mediante algoritmos con complejidad computacional que alcancen los objetivos de la paralelización. En el capítulo 6.- Conclusiones y trabajos a futuro, se presentan los puntos importantes que destacan en el trabajo, así como las recomendaciones para trabajos posteriores. 14

32 CAPÍTULO 2 Principios de procesamiento paralelo 2.1 Computación paralela La computación paralela es una forma en la que muchas instrucciones se llevan a cabo al mismo tiempo, el principio de la computación paralela tiene el principio de que los problemas grandes se puedan dividir en otros más pequeños y que pueden resolverse al mismo tiempo (en paralelo). Hay muchas formas de ver a la computación paralela, como [8]: Paralelismo a nivel de bit. Es la forma de ejecutar los bit de un operando directamente a la unidad aritmética y lógica del procesador. Paralelismo a nivel de instrucción. Es la forma de ejecutar instrucciones del lenguaje ensamblador. Paralelismo de datos. Se ejecuta código de un programa realizado en lenguaje de medio o alto nivel y puede ser ejecutado como proceso y en forma paralela en cada procesador. Paralelismo de tarea. El conjunto de procesos conforman una tarea, la cual puede ser una aplicación o software a ejecutar paralelamente, todo esto a nivel de usuario. La computación paralela se ha utilizado desde hace muchos años, principalmente en la computación de alto rendimiento, pero su uso ha ido en aumento debido a la velocidad de los procesadores. La computación paralela se ha convertido en el paradigma dominante de la arquitectura de computadoras, principalmente en la aparición de los procesadores de múltiples núcleos. Las computadoras en paralelo pueden ser clasificadas por el nivel de paralelismo, con el hardware y el software que están ocupando o si es compatible con las nuevas arquitecturas para computadoras, y las nuevas tecnologías de red [9]. El paralelismo interno Este tipo de paralelismo consiste en dividir la ejecución de un proceso en etapas consecutivas que se pueden realizar de manera independiente. A esta división se le conoce como segmentación de instrucciones y se hace a nivel de procesador con manejo de bits y con instrucciones en ensamblador, cada uno de ellos controlados por ciclo de reloj del procesador. El paralelismo interno se puede ejecutar tanto en procesadores escalares como en procesadores vectoriales. Los procesadores escalares (Figura 2.1 izquierda), pueden procesar un dato por instrucción asignada, generalmente el trabajo de los procesadores de este tipo es con números enteros y de punto flotante y trabajan instrucciones de clase de 32 bits. Los procesadores vectoriales (Figura 2.1 derecha), pueden manipular muchos datos por una instrucción o procesos asignados al 15

33 procesador. Existen dos tipos de máquinas con arquitectura que soporta un juego de instrucciones vectoriales, los tipos de computadoras son: Computadoras vectoriales segmentadas, con una unidad aritmética y lógica segmentada. Computadoras SIMD, con múltiples unidades aritmético-lógicas segmentadas. Figura 2.1 Procesador Intel core 2 dúo con características escalares (fig izq). Procesador AMD, Opteron con 7 núcleos con ambas características escalares y vectoriales (fig der) El paralelismo explicito. Este tipo de paralelismo (Figura 2.2), está orientado a software y la forma de trabajar es mediante directivas (librerías) y llamadas por funciones de propósito especial. Para trabajar paralelamente se tienen que sincronizar los procesadores y posteriormente repartir los procesos o las tareas. Este tipo de paralelismo se relaciona con la programación de bajo nivel, de medio nivel y programación a alto nivel que tiende a trabajar paralelamente con o sin librerías. El paralelismo explícito se divide en paralelismo de grano grueso, de grano medio y de grano fino o delgado. El paralelismo de grano grueso, su funcionamiento es a nivel de aplicación y trabaja con decenas de miles de instrucciones, puede ser explotado por el S.O. El paralelismo de grano medio, su funcionamiento es a nivel de programador y con ayuda del preprocesador puede explotar hasta mil instrucciones. El paralelismo de grano fino, su funcionamiento es a nivel de compilador y puede ser también ejecutado por el microprocesador y puede manejar hasta 500 instrucciones. 16

34 PARALELISMO INTERNO PARALELISMO EXPLICITO GRANO FINO GRANO MEDIO GRANO GRUESO A1 A2 An P1 P1 P2 P2 For i= 1 to end For i= 1 to end For j= end For j= 5 to end THREADS ADD R1, R1, #1 ADD R2, R2, #1 ADD R3,R3, #1 ID IF EX ME WB + - Figura 2.2 Tipos de paralelismo de Software que se divide en interno y explícito. En el software es difícil conseguir programas que se puedan paralelizar, ya que el software normalmente fue diseñado para trabajar secuencialmente. La comunicación y sincronización entre las diferentes subtareas es típicamente uno de los más grandes problemas para paralelizar el software. Para conseguir que un programa se pueda paralelizar es necesario medir la aceleración del programa en ejecución y esto se puede realizar mediante la Ley de Amdahl 9. 9 Esta ley que mide la mejora de un sistema paralelizado, fue creado en 1967 por Gene Amdahl, arquitecto computacional. 17

35 2.2 La ley de Amdahl. En la programación de computadoras, la ley de Amdahl [8], trata que cuando se ejecuta un programa en procesamiento paralelo, las instrucciones aunque sean restringidas pueden ser un factor que limite el funcionamiento para la obtención de los resultados, de manera que al añadirse más procesadores puedan realizar el programa más rápido. Hay determinadas aplicaciones que se pueden paralelizar y que necesitan solamente un procesador para que se compile. Esta ley nos dice en dos puntos importantes, que: 1.- La fracción de tiempo de cálculo de la máquina, originalmente se pueda utilizar para optimizar la mejora, y se le denomina fracción mejorada (fm) y [fm 1]. 2.- La optimización lograda por el modo de ejecución mejorada; es decir, es el tiempo de modo original con respecto al tiempo del modo mejorado y siempre es mayor que 1 y se le denomina aceleración mejorada (Am), [Am >1]. Donde: A= Aceleración global de un sistema con una determinada mejora en un elemento. Fm= Fracción mejorada de tiempo que utiliza el elemento mejorado. Am= Aceleración mejorada conseguida para el elemento aislado. Si se sustituye el disco de una computadora por otro, con un ancho de banda de 4 veces el original. Qué ganancia se puede obtener con esa mejora, en un programa con 30 segundos de ejecución con el disco original, sabiendo que la CPU, accede al disco durante 16 segundos? Am= 4. Fm=16/30 = Aceleración global=1.68. Cuál será la mejora total de un sistema, al que se le ha cambiado un elemento por otro 100 veces más rápido, pero que solo se utiliza el 10% del tiempo? 18

36 Am=100. Fm=0.1. A= Factor de Rendimiento Speedup El factor de rendimiento Speedup deriva de la ley de Amdahl y que mide la aceleración global, es una fórmula que calcula la ganancia que existe entre un sistema que contiene un solo procesador comparándolo con otro sistema que contiene muchos procesadores (multiprocesador). El speedup obtiene la efectividad que puede tener un programa que se paraleliza frente a un programa que se ejecuta secuencialmente tomando los tiempos al momento de la ejecución de estos programas (paralelo y secuencial), y se calculan en la fórmula de rendimiento de Speedup para saber la ganancia al momento de comparar si es mejor compilar un programa en forma secuencial o realizarlo paralelamente. Donde: Ts=Tiempo secuencial. Tp= Tiempo paralelo. Se tiene la ejecución de un programa en una sola computadora, el tiempo de ejecución de dicho programa fue de 8 hrs, se ejecutó el mismo programa en un ambiente paralelo con 5 procesadores, y el tiempo que alcanzó fue de 6 hrs. Se necesita calcular el speedup, o factor de rendimiento entre la ejecución en secuencial y la ejecución en paralelo. Ts=8. Tp=6. Speedup=8.3 hrs. 2.3 Arquitecturas paralelas Actualmente las arquitecturas de los procesadores [14] cambian constantemente y a pasos agigantados, esto también se aplica a las arquitecturas paralelas y multiprocesadores, ya que aparecen nuevas técnicas de paralelismo y con esto nuevas formas de aplicar la programación a estas nuevas arquitecturas. 19

37 Las arquitecturas de los procesadores son más conocidos por el manejo de la memoria, y se subdivide en procesadores con memoria compartida, procesadores con memoria distribuida y procesadores con memoria compartida distribuida, la cual entra en el tipo de procesadores con memoria compartida. a) Procesadores con Memoria Distribuida. Este tipo de procesadores (Figura 2.3), distribuye su memoria con los demás procesadores conectados en red, trabaja con el modelo de programación de pasos de mensajes. Para poder comunicar a los procesadores se trabaja con la clasificación de programación explícita, es aquí donde el programador paraleliza los mensajes entre los procesadores. MEMORIA ALU Sección de Registros. Sección de control y temporización ALU Sección de Registros. Sección de control y temporización MEMORIA RED DE INTERCONEXIÓN MEMORIA ALU Sección de Registros. Sección de control y temporización Figura 2.3 Procesadores con memoria distribuida en una red de interconexión LAN. b) Procesadores con memoria compartida [9]. Los sistemas de multiprocesadores y multicomputadoras, contienen individualmente a su memoria, pero cuando se conectan mediante una red comparten su memoria, sin embargo los procesadores interconectados no pueden acceder a la memoria al mismo tiempo. Estos pueden identificarse según el acceso a la memoria como: memoria de acceso no uniforme (NUMA, Figura 2.4), y memoria de acceso uniforme (UMA, Figura 2.5). 20

38 MEMORIA RED DE INTERCONEXIÓN ALU Sección de Registros. ALU Sección de Registros. ALU Sección de Registros. ALU Sección de Registros. Sección de control y temporización Sección de control y temporización Sección de control y temporización Sección de control y temporización Figura 2.4 Procesadores con memoria compartida con acceso no uniforme a memoria NUMA. MEMORIA MEMORIA MEMORIA MEMORIA RED DE INTERCONEXIÓN ALU Sección de Registros. ALU Sección de Registros. ALU Sección de Registros. ALU Sección de Registros. Sección de control y temporización Sección de control y temporización Sección de control y temporización Sección de control y temporización Figura 2.5 Procesadores con memoria compartida con acceso uniforme a memoria UMA. c) Procesadores con memoria compartida distribuida. Las computadoras conectadas en la red contienen 2 o más procesadores y con una sola memoria para este equipo multiprocesador (Figura 2.6), este equipo se puede conectar a la red y compartir sus recursos con otros equipos multiprocesadores en la red. El acceso a la memoria de cada una de las computadoras multiprocesador depende de la velocidad de la red a la cual accedan. 21

39 Figura 2.6 Procesadores con memoria compartida distribuida por medio de una red global. 2.4 Taxonomía de Flyn Mediante la taxonomía de Flyn (Figura 2.7), se pueden reconocer a las diferentes arquitecturas paralelas, según el número de procesadores y la forma de utilizar la memoria. Esta taxonomía [31] reconoce varias familias de computadoras que son: SISD, SIMD, MISD y MIMD. Cada una de estas categorías de computadoras pueden tener uno o más procesadores, pueden ser escalares o vectoriales dependiendo de la categoría en la que se definan. Figura 2.7 Taxonomía de Flyn que muestra las diferentes arquitecturas. 22

40 2.4.1 SISD (Single Instruction, Single Data, Una Instrucción, un dato). Genera un único flujo de instrucciones que se decodifican e interpretan en la unidad de control y envían las correspondientes señales de control a la unidad de procesamiento. La unidad de procesamiento posee un flujo único de datos con la memoria principal (Figura 2.8). Donde: FI.- Flujo de instrucciones. FD.- Flujo de Datos. I/O.- Puertos de Entrada/Salida UC.- Unidad de control UP.- Unidad de procesamiento. UM.- Unidad de Memoria. Figura 2.8 Arquitectura SISD SIMD (Single Instruction Stream, Múltiple Data Stream, Un Flujo de instrucción, Multiple flujo de datos). En este tipo de computadora los elementos que se procesan se supervisan por una sola unidad de control. Los procesadores de este tipo de computadoras reciben una instrucción similar desde la unidad de control (Figura 2.9). Donde: FI.- Flujo de Instrucciones FD.- Flujo de Datos. UC.- Unidad de Control UP.- Unidad de Procesamiento. UM.- Unidad de Memoria. Figura 2.9 Arquitectura SIMD. 23

41 2.4.3 MISD (Multiple Instruction Stream, Single Data Stream, Múltiple flujo de instrucciones, un único flujo de datos). En este tipo de computadoras, existen P procesadores (P>1), cada uno con su propia unidad de control y comparten una unidad de memoria común donde residen los datos. En cada paso, un dato recibido desde la memoria es operado por todos los procesadores simultáneamente, cada uno con las instrucciones que el procesador recibe de su unidad de control (Figura 2.10). Donde: UC.- Unidad de control. UP.- Unidad de procesamiento. UM.- Unidad de Memoria. FI.- Flujo de Información. FD.- Flujo de Datos. Figura 2.10 Arquitectura MISD MIMD (Multiple Instruction Stream, Multiple Data Stream, Múltiple flujo de Instrucciones, Multiple flujo de Datos). Esta clase de computadora es la más general y la más poderosa en el paradigma de la computación paralela. Existen P procesadores (P > 1), cada uno de los operandos trabajan bajo el control de una secuencia de instrucciones que es emitida por su propia unidad de control. Así los procesadores están potencialmente todos ejecutándose en diferentes programas sobre datos diferentes, lo que significa que los procesadores operan de manera asíncrona. El intercambio de datos se lleva a cabo a través de una memoria común o por medio de una red de interconexión (Figura 2.11). Donde: FI.- Flujo de Información. FD.- Flujo de Datos. UC.- Unidad de Control. UP.- Unidad de Procesamiento. Figura 2.11 Arquitectura MIMD. 24

42 2.5 Ejemplos de problemas paralelizables Dependiendo del software y del tipo de equipo computacional a utilizar, se debe analizar el tipo de hardware y software con el que se cuenta, así como determinar si el programa es paralelizable o no. Además en el hardware verificar el poder de cómputo con el que se cuenta, ya que actualmente las nuevas tecnologías multicore y los GPUs, realizan ejecuciones de programas que antes no se realizaba en computadoras con un procesador de un solo núcleo. El software es importante, ya que hoy en día el sistema operativo debe cumplir con la expectativa de manejo de múltiples usuarios y múltiples procesos, aquí se utilizan sistemas operativos como Linux [7], además de que si se va a utilizar un lenguaje de programación para solucionar los problemas paralelos, se debe verificar a qué nivel de programación se va a realizar el código, por lo general para manejo de multinucleos se recomienda un lenguaje con manejo de Threads (hilos), los lenguajes de alto nivel como Java, borland c++ y visual.net, cumplen con estas características. Si se quiere paralelizar a nivel de red, es necesario crear un sistema de imagen único en cada nodo de la red y utilizar librerías de interconexión entre nodos, como MPI o PVM, que se pueden utilizar en lenguajes de programación de medio y alto nivel como C o Fortran [8]. 25

43 CAPÍTULO 3 Virtualización en equipos de cómputo 3.1 Introducción La virtualización ha sido un tema relevante en el ámbito empresarial desde hace mucho tiempo, pero se ha convertido en una importante tecnología para los llamados sistemas embebidos, por lo tanto también es importante para los desarrolladores de los mismos. Para entender el poder y las limitaciones de la virtualización en este espacio, este documento presenta una introducción a la tecnología de virtualización en general y específicamente se discute su aplicación a sistemas embebidos. Existen diferencias inherentes entre el estilo empresarial de los sistemas de virtualización y la virtualización que se aplica a los sistemas embebidos. La virtualización tiene beneficios, especialmente en lo que respecta al apoyo a los sistemas integrados, que se conforman por subsistemas con una amplia variedad de características y de requisitos con respecto a la seguridad y protección de las redes en Internet. A continuación se discuten las limitaciones de los enfoques de virtualización de fricción, específicamente en lo que se aplica a sistemas embebidos. Estos se refieren a la naturaleza altamente compuesta de los sistemas integrados y en particular a lo que se refiere a la seguridad y fiabilidad. 3.2 Qué es la Virtualización? La virtualización se refiere a proveer al software un ambiente en el que los programas, incluyendo a los sistemas operativos, puedan correr en un hardware ligero y virtual. A tal software se le denomina máquina virtual (VM) [17]. Esta máquina virtual (ver Figura 3.1), es un software eficiente que emula un ambiente de hardware y software aislado de la verdadera máquina. Aplicaciones Sistema Operativo Hypervisor Procesador Figura 3.1 Una máquina virtual. El hipervisor (o monitor de la máquina virtual) presenta una interface que muestra el hardware al sistema operativo invitado. 26

44 En la figura 3.2 se muestra la capa del software que provee el ambiente VM y a este se le llama monitor de la máquina-virtual (VMM) o también en algunos casos se le conoce como hipervisor. En orden a la figura mostrada, el monitor de la máquina virtual (VMM) [17], se compone de 3 características esenciales: 1. La máquina VMM provee al software un ambiente que esencialmente identifica al software de la máquina virtual con la máquina original. 2. Los programas al correr en el ambiente de la máquina virtual decrementan su velocidad en lo referente a como se ve en la máquina verdadera. 3. La VMM está en completo control de los recursos del sistema. Estas tres características son importantes y contribuyen a que la virtualización sea muy eficaz hoy en día para ambientarse en diversos sistemas operativos en un solo sistema de hardware. La primera característica (similitud), asegura que el software que se ejecuta en la máquina real se ejecutará en la máquina virtual y viceversa. La segunda (eficiencia), asegura que la virtualización es viable desde el punto de vista de rendimiento. La tercera (control de recursos), garantiza que el software no puede salir de la máquina virtual. El término de máquina virtual también se aplica a otros ambientes de software útiles para correr otras aplicaciones, como la Máquina Virtual de Java. Esto se conoce como una máquina virtual de proceso, mientras que una máquina virtual corresponde al hardware actual y puede ejecutar los sistemas completos de funcionamiento, a esto se le denomina como máquina virtual VM [16]. Las máquinas virtuales enmascaran los recursos de la computadora, incluyendo su identidad en el cual se ocultan el sistema operativo, las aplicaciones y el hardware mismo de la máquina anfitriona. VM App VM App VM App Guest OS Guest OS Guest OS Drivers virtuales Drivers virtuales Drivers Virtuales VMM Hardware Emulado Drivers Reales Hardware Real Figura 3.2 El monitor de la máquina virtual comunicando al hardware real con el hardware virtual. 27

45 El administrador de la máquina virtual utiliza una aplicación de software para dividir la máquina física en múltiples entornos virtuales aislados. Estos entornos virtuales se denominan máquinas privadas virtuales, pero también se les conoce con el nombre de invitados (Guest), al momento de emular su funcionamiento dentro de la máquina o computadora anfitriona Historia de la Virtualización El funcionamiento de la máquina virtual (virtual machine VM), es la creación de múltiples entornos de ejecución múltiples en un equipo, cada uno de estos entornos se emulan en un solo equipo. Esto ante los usuarios se les muestra como una ilusión de que el sistema operativo trabaja realmente en la máquina física [19]. Las máquinas virtuales van más allá de la emulación y recrean un entorno real, en el cual se pueden realizar operaciones como si se tratase de la máquina física. Para que las máquinas virtuales de hoy pudieran alcanzar el desarrollo que actualmente se tiene, tuvieron que suceder muchos cambios e innovaciones (Tabla 3.1). El sistema operativo que inició con la virtualización fue VM/370 que se utilizó en la computadora IBM 370 a finales de 1972, esta versión fue de uso empresarial, aunque posteriormente se creó una computadora de versión universitaria con un sistema operativo Control Program (CP ) para la máquina model 67. En las máquinas VM/370 y Control Program, se podía trabajar con varias computadoras a manera de terminal, haciendo pensar al usuario que estaba trabajando directamente desde su terminal. En 1995 Windows NT y sus versiones posteriores incorporaron una máquina virtual, para simular al sistema operativo MS-DOS, cuando anteriormente MS-DOS era el sistema operativo principal de toda computadora x86. Años más tarde Windows server 2008 integró un hipervisor para la simulación de sistemas operativos en terminales (clientes ligeros). En 1990 el sistema operativo Linux, se utilizó en un entorno de virtualización de código abierto (Xen), que apareció simultáneamente con el sistema virtualizado Vmware el cual era costoso y no de código abierto. Estos sistemas tenían problemas que fueron solucionados posteriormente, algunos problemas fueron: El soporte a varios sistemas operativos. Migración de un sistema operativo a una versión posterior. Trabajar a nivel de Bios. Reconocer los diferentes drivers de hardware real y llevarlos al hardware virtual. Al solucionar estos problemas, las compañías de software vieron que los beneficios al utilizar la tecnología de máquinas virtuales fueron las siguientes: Baja utilización de una infraestructura. Al ocupar una máquina virtual se logra un promedio de utilización de aproximadamente el 15% de su capacidad, con lo cual disminuye el utilizar muchos servidores y ocupar más espacio. 28

46 Incremento de los costos de infraestructura física. Al ocupar muchos servidores y que estos trabajen todo el día, implica en un mayor consumo de energía eléctrica, refrigeración, etc. Pero al virtualizar estos servidores se reducen considerablemente los costos. Protección ante desastres y fallos. Ante un desastre o alguna falla repentina sea humana o no, los sistemas virtualizados proporcionan la seguridad de respaldos, con lo cual se puede recuperar información importante para las empresas. Nombre de Software Computadora Año de creación Empresa CP Model PC 1966 IBM System/360 IBM IBM VM/370 IBM IBM Smalltalk Pc 1981 Xerox Maq. Virtual de java Pc 1990 Sun microsystems Vmware server y cliente. Todas las arquitecturas 1998 Vmware inc. Xen Todas las arquitecturas 2003 Citrix inc. Virtual Box Todas las arquitecturas 2007 Oracle Tabla 3.1 Historia de la virtualización y las máquinas virtuales. 3.3 Cómo trabaja un sistema virtual? La función de la eficiencia requiere que la gran mayoría de las instrucciones deben ser ejecutadas directamente por el hardware: todas las formas de emulación o la interpretación de hardware se sustituye a una sola: la máquina virtual. Las instrucciones dadas en la máquina virtual son realizadas por el hardware subyacente. Esto requiere que el hardware virtual sea casi idéntico al hardware físico y todo esto se encuentra alojado en el hipervisor. Hay pequeñas diferencias entre las máquinas virtuales y las máquinas físicas. Por ejemplo, la máquina virtual tiene instrucciones extras como las referentes al hardware y aplicaciones que en una máquina física no encontramos. El hardware físico puede tener una unidad diferente de administración de memoria o de dispositivos que el hardware original tiene a nivel de BIOS [32]. La máquina virtual puede tomar forma de una versión antigua de una placa base y ejecuta código heredado para sistemas antiguos o puede a su vez ejecutar código actual para placas bases modernas. Las diferencias entre hardwares y sistemas operativos no se notan en las máquinas virtuales, la virtualización puede ser tan eficiente como si 29

47 fuera el hardware mismo. De hecho no todas las instrucciones se ocupan directamente en la máquina virtual, sino que también ejecutan recursos de la máquina física. Esto significa que esas instrucciones deben ser interpretadas por el hipervisor (VMM) o de lo contrario la virtualización no funciona. Específicamente, las máquinas físicas tienen dos clases de instrucciones que pueden ser interpretadas por la máquina virtual: Control sensitivo de instrucciones. Este modifica a la máquina de estados privilegiados y permite que el hipervisor tome el control sobre los recursos. Instrucciones de comportamiento sensibles. Que el acceso o lectura de la máquina física sea en estado privilegiado mientras que no se puedan cambiar las asignaciones de recursos utilizados en la computadora, las cuales revelan el estado de los recursos reales y la diferencia de éstos con los recursos virtuales, por lo tanto el control de los recursos físicos los toma por aparte o virtualiza la máquina virtual. Los dos controles, el control sensitivo y las instrucciones de comportamiento sensibles también son llamados como virtualización-sensitiva [19] o simplemente instrucciones sensitivas. Ellos son dos caminos básicos que aseguran que el código corra en la máquina virtual y ejecuten instrucciones sensitivas, tales como: a) La virtualización pura: garantiza que las instrucciones sensibles no puedan ejecutarse dentro de la máquina virtual sino todo el trabajo se lo deja al hipervisor. b) La virtualización impura: Elimina los datos sensibles de la máquina virtual y lo reemplaza con el código de la virtualización Virtualización pura La virtualización pura es un enfoque clásico de la virtualización. Se requiere que todas las instrucciones a nivel de máquina virtual estén a nivel privilegiado. Estas instrucciones privilegiadas se ejecutan con éxito en el procesador (normalmente a esto se le llama modo privilegiado, en el modo de núcleo o modo supervisor) y cuando los procesos no se ejecutan en modo privilegiado entran en una parte de la memoria real de la máquina física, al cual se le conoce como modo no privilegiado (también llamado modo de usuario), como se muestra en la Figura 3.3. Una excepción entra en el modo privilegiado en una dirección específica de su memoria, pero también forma parte de la memoria física real, creando con esto una excepción, que forma parte del hipervisor. 30

48 Figura 3.3 Instrucciones al crear una excepción entre una máquina anfitriona y una máquina virtual. La virtualización pura entonces sólo requiere la ejecución de todo el código en la máquina virtual sin privilegios del modo de ejecución del procesador. Las instrucciones sensibles que figuran en el código que se ejecuta en la máquina virtual caen en una trampa dentro del procesador, así como la memoria principal que se encuentran en el hipervisor. El hipervisor interpreta (virtualiza) la instrucción según sea necesario para mantener el estado de la máquina virtual. Hasta hace poco la virtualización pura era imposible en casi todas la arquitecturas contemporáneas, ya que todos ellos destacan instrucciones sensibles que no tuvieron privilegios (y por tanto el acceso se hace en forma física), como en el caso de instrucciones que se crean al introducir una memoria USB, la cual primeramente es reconocida por la máquina física y posteriormente el hipervisor toma los controladores de la máquina física y le pasa el control a la máquina virtual. Cada fabricante de máquina virtual crea sus propias tecnologías virtualizadas de placas base, memoria, procesador, disco duro y toman características de fabricantes, como en el caso de algunas máquinas virtuales como Virtual Box, el cual tiene la configuración para los dos microprocesadores líderes en el mercado como los son Intel (VT-x) y AMD (AMD-V) [14]. Hay muchas razones o alternativas por lo que la virtualización pura es muy utilizada. Una de estas características es que las excepciones son mitad procesadas por la máquina virtual y la otra mitad por la máquina física. En los procesadores pipeline 10, una excepción drena la información que viaja en sus tuberías o líneas de comunicación, lo que resulta en la demora en el procesamiento por lo general medido en ciclos por segundo. Una singular demora normalmente ocurre cuando se cambia de modo virtual a modo usuario, esto da a lugar una latencia adicional. Generalmente de 10 a 20 ciclos por segundo, eso como decíamos en procesadores pipeline de alto rendimiento. La familia x86 pertenece a los 10 Un solo procesador, el cual puede realizar simultáneamente operaciones de cálculos en determinadas secciones, con diferentes estadios de completitud. Los procesadores pipeline se basan en el principio de dividir los cálculos entre una cantidad de unidades funcionales que operan simultáneamente existiendo superposición 31

49 procesadores pipeline y por lo general son ocupados tanto en las máquinas virtuales como en las máquinas físicas Virtualización impura La virtualización impura requiere cambiarse de modo no-privilegiado, a instrucciones sensitivas para ejecutarse en la máquina virtual, esto se puede ver en la Figura 3.4. Esto sucede de manera transparente, mediante la técnica de traducción a código binario, aquí el código ejecutable se escanea en tiempo de carga y cualquier instrucción que cause problemas se sustituye por instrucciones que hacen una excepción (o proporciona virtualización por otros medios, tales como el mantenimiento de hardware virtual). Figura 3.4 En la técnica de virtualización impura, se reemplazan las instrucciones en el código original por cualquiera de las instrucciones del hipervisor y salta a emulación a nivel de usuario. Una alternativa es evitar las instrucciones problemáticas, que de aparecer en el código ejecutable crean más problemas. Esto se puede hacer en tiempo de compilación mediante una técnica que se utiliza antes de la virtualización. Como alternativa, el código fuente puede ser modificado manualmente para quitar el acceso directo al estado privilegiado y sustituirlo por acceso a llamadas explícitas del hipervisor llamadas Hypercalls. Este enfoque de virtualización se le conoce como para-virtualización. La operación sigue siendo la misma que en la virtualización pura. El código se ejecuta en resultados en modo de ejecución no privilegiado del procesador y un evento de virtualización está a cargo del hipervisor. La para-virtualización y pre-virtualización tienen otra ventaja: además de poder tratar con el hardware que no es adecuado para la virtualización pura, se pueden reemplazar secuencias de muchas instrucciones sensibles por una sola llamada al hipervisor, 32

50 reduciendo así el número de procesos, que cambia entre el modo sin privilegios y con privilegios. Como tal trabajo es impuro, la virtualización tiene el potencial para reducir la sobrecarga de virtualización, que hace atractivo al hardware que sea completamente virtualizable [16]. 3.4 Importancia de la Virtualización La virtualización describe ampliamente la separación de un recurso a solicitud de un servicio. Con la memoria virtual, por ejemplo, el software obtiene acceso a más memoria de máquina física a través del intercambio de datos de almacenamiento en disco. Del mismo modo, las técnicas de virtualización se aplican a una serie de capas de abstracción, en el cual se pasa de las capas de hardware hasta las capas de software. En todas estas capas influye mucho el hipervisor, por ejemplo, en lo que se refiere al hardware podemos encontrar: tarjetas de red, almacenamiento o hardware adicional; y en lo referente al software podemos encontrar: al BIOS, los sistemas operativos y otras aplicaciones. Esta mezcla de tecnologías de virtualización o de infraestructura virtual no es perjudicial, ya que la experiencia de los usuarios al interaccionar con lo virtual es semejante como cuando se actúa con una máquina verdadera. Sin embargo, la infraestructura virtual ofrece a los administradores la ventaja de manejar o administrar los recursos de hardware y software eficientemente. Características de los sistemas antes de la virtualización (ver Figura 3.5): Una sola imagen del sistema operativo por máquina. Software y hardware estrechamente acoplados. Al ejecutar varias aplicaciones en la misma máquina a menudo crea conflictos. Inflexibles y costosas infraestructuras. Figura 3.5 Una computadora normal antes de la virtualización 33

51 Después de utilizar la virtualización pasa lo siguiente (ver Figura 3.6): El hardware es independiente del sistema operativo y de las aplicaciones. La máquina virtual puede ser suministrada y manejada por cualquier sistema. Puede administrar sistemas operativos y a las aplicaciones como a una sola unidad, encapsulándolos en máquinas virtuales. Figura 3.6 Computadora después de la virtualización, con múltiples sistemas virtuales. Usando la infraestructura virtual, se tienen muchas soluciones para empresas expertas en Tecnologías de la información (IT), estas son las características que se pueden realizar con la tecnología virtual: Test de desarrollo y Optimización. Rápido aprovisionamiento de prueba y desarrollo de información mediante la reutilización de los servidores preconfigurados. Con esto se pueden encontrar errores en las máquinas físicas, entonces por esto, se hacen pruebas de velocidad de procesamiento y mejora en el rendimiento de la memoria. Alta disponibilidad. Reducir los costos y la complejidad de que no haya paros ni fallos en la información, en lo que se refiere a que siempre esté disponible y se pueda recuperar ante cualquier desastre. Esto se hace encapsulando los sistemas operativos en archivos individuales que puedan ser replicados y restaurados en cualquier servidor como si no hubiera pasado nada. Escritorios seguros. Evita problemas de que un usuario con pocos conocimientos altere la configuración del equipo. Al tener una máquina virtual, en esta recaería todas las modificaciones, problemas de virus, etc. 34

52 Consolidación de Servidores. Convertir muchos servidores físicos en virtuales. De este modo se aprovecha el hardware disponible de la mejor manera posible. Recuperación ante desastres. Las máquinas virtuales se pueden salvar muy fácilmente y además su estado puede recuperar la información con rapidez. Pruebas de aplicaciones. En muchas ocasiones se necesita un entorno limpio para probar una aplicación. Usar una máquina virtual permite instalar un sistema operativo desde cero, probar la aplicación y luego eliminar la máquina. Ejecución de entornos completos sin instalación ni configuración. La posibilidad de disponer de máquinas virtuales ya instaladas con todo el software necesario configurado, hace que no se pierda el tiempo el tiempo en realizar las tareas de instalación y configuración de dicho software. Aplicaciones portátiles. Con el uso de las máquinas virtuales se pueden tener PC s completos listos para usar en dispositivos USB, lo que puede ser de mucha utilidad para tener un entorno privado y usarlo en cualquier PC. 35

53 CAPÍTULO 4. Desarrollo e implementación 4.1 Diferencias entre clusters físicos y clusters virtuales Clusters físicos El trabajo consiste en realizar un cluster físico, trabajando para esto con equipo existente en el Centro de Investigación y Desarrollo Tecnológico en cómputo (CIDETEC). El cual cuenta con cuatro equipos de cómputo conectados a un medio de comunicación físico por medio de un switch compartiendo recursos. Estos equipos de cómputo que se facilitan, tienen un procesador Pentium 4 a 1.5 GHz, con un disco duro de 80 Gb de almacenamiento. Cada equipo de cómputo cuenta con tarjetas de red que se instalan en el bus PCI. Una de las tarjetas trabaja a una velocidad de 10/100 Mbps; la otra tarjeta trabaja a una velocidad de 1 Gbps y es la que se ocupa para la trasmisión de la información. Uno de los cuatro nodos (ver Figura 4.1), fue elegido para ser el nodo maestro. Este nodo maestro trabaja para la comunicación con los demás nodos con tarjetas de red veloces. La tarjetas de red que utiliza, una es de 10/100 Mbps y se conecta a internet en la red de la institución y la otra tarjeta de red, es de 10/100/1000 Mbps y es la que conecta a los nodos esclavos; los nodos esclavos se conectan por medio de la tarjeta de 10/100/1000 Mbps, con lo cual hace que la red entre los nodos sea eficiente y rápida. Figura 4.1 Esquema del cluster con 3 nodos y un nodo maestro. 36

54 El medio de comunicación es cable UTP categoría 5e, que conecta los nodos al switch. Se ha elegido el sistema operativo Linux [5], en su distribución OpenSUSE en la versión 11.1 ya que el parche Mosix es compatible con esta distribución. Esta instalación se hizo para cada uno de los nodos, los cuales se configuran en red dentro del sistema, asignando las direcciones de red. El cluster virtual es configurado de la misma manera que el cluster físico, pero la diferencia de éste con el sistema físico, es que depende del hardware virtual con el que se cuenta dentro de la máquina virtual, la cual es Virtual Box en su versión de la empresa Sun Microsystems. Igual que en los nodos físicos, en la máquina virtual se instalaron y configuraron cuatro nodos virtuales con el sistema operativo Linux en su distribución OpenSUSE 11.1 [27], configurado en una red interna en la cual los nodos son capaces de intercomunicarse vía red compartiendo recursos de software y hardware Cluster Virtual Al igual que el cluster físico la creación del cluster virtual implica tener 4 nodos conectados por medio de hardware virtual, como tarjetas de red virtual, procesadores, discos duros, cantidad de memoria, USB, etc. En Virtual Box se puede escoger la marca de tarjeta de red y también el tipo de conexión interna para comunicar los hosts entre sí. Algunas marcas que maneja la máquina virtual de Virtual Box [17] son: Intel PRO/1000 MT Desktop, PC net-fast III, entre otras (ver Figura 4.2). Aquí no existe un dispositivo central llamado switch, sino que internamente la conexión virtualizada toma el lugar de la red física, pero sin dispositivos ni cables de por medio. Figura 4.2 Configuración de la tarjeta de red en Virtual Box. 37

55 A su vez los discos duros y las memorias virtuales toman un papel importante antes de instalar un sistema operativo, ya que estos dispositivos pueden tomar el tamaño de almacenamiento requerido para las funciones del sistema operativo. Por ejemplo, en lo referente a la memoria RAM, podemos tomar diferentes tamaños de memoria que pueden ser desde los 4Mb hasta los 2048 Mb. Los discos duros se pueden configurar en la máquina virtual y su capacidad puede ser modificada por el Administrador del sistema virtual, desde 4 Mb hasta los 2 Tb de espacio. Ya teniendo los nodos configurados con el tipo de red, se elige el sistema operativo Opensuse 11.1 y se escoge el disco duro virtual, que anteriormente se había configurado su tamaño. La instalación y configuración del sistema operativo Opensuse, se puede hacer en un disco montado en la unidad física de la computadora o bien mediante una imagen de disco con extensión *.nrg o *.iso. 4.2 Diferencias entre el cluster virtual y cluster físico Las diferencias entre el cluster virtual y el cluster físico son notables a simple vista, pero en lo referente a las velocidades del procesador, como a las capacidades del disco duro y la memoria RAM dependen en las máquinas físicas de su plataforma, que pueden ser de 32 y 64 bits. La máquina virtual depende de estas plataformas para su funcionamiento. La ventaja de las plataformas es que cada máquina virtual puede acoplarse a sus características físicas, haciendo que una máquina virtual de 32 bits pueda funcionar en una máquina física de 64 bits. Los clusters físicos cuentan con dispositivos que se encuentran físicamente instalados en una placa base y sus características imponen una velocidad de procesamiento y de acceso a la memoria RAM, además de que el disco duro puede almacenar la información que se requiera a una velocidad de lectura/escritura que depende de la placa base. Todos estos dispositivos de hardware trabajan conjuntamente con el microprocesador, con lo cual al trabajar a la velocidad de procesamiento, todos los dispositivos son compatibles con el procesador y la placa madre si es un sistema a 64 bits. En el cluster físico se han implementado 4 computadoras con características similares y estas son: 1.- Cuatro nodos interconectados con un enlace con un SWITCH Enterasys a 1000Mbps. 2.- Procesadores CELERON CORE DÚO, 2 Gb de memoria RAM, ya cada uno con un disco duro de 160 Gb. 3.- Sistema operativo Linux OpenSUSE versión 11.1 de Novel. 38

56 4.- El nodo maestro (nodo0), cuenta con 2 tarjetas de red eth0 y eth1, en donde eth1 tiene salida a internet por medio del numero IP Este nodo incluye los servicios de servidor web Apache2 y Openssh para poder acceder al cluster desde internet. 5.- El middleware de conexión a nivel de kernel MOSIX [25] Características del cluster virtual. Para la creación del cluster virtual se cuenta con una máquina de buen desempeño en cuanto a procesamiento y memoria se refiere, ya que debe ser lo más parecido al cluster físico. El cluster virtual llamado marc2 cuenta con las siguientes características: 1.- Un computadora anfitrión TOSHIBA L505D-S5983, con las siguientes características: a) Windows 7 home Premium 32 bits b) Procesador AMD Athlon II Dual Core c) Memoria RAM 4 Gb. 2.- Software Virtual, Virtual Box versión 3.02 a) Cada nodo virtual cuenta con 300 Mb de memoria Ram. b) Cada nodo virtual cuenta también con disco duro virtual de 10Gb. 3.- Sistema operativo Linux OpenSUSE Middleware Mosix kernel-mosix-latest.i586 y mosix-utils-latest.i386 RPM. 5.- Para la conexión a internet Apache2 y Openssh. 6.- Gcc y g++ para la compilación de programas en lenguaje C a correr en el cluster. El procedimiento de instalación en el cluster físico fue el siguiente: 1.- Se conectaron en red, utilizando cable UTP cat 5e y conectores RJ45 al switch Enterasys en cada uno de los nodos. 2.- Se instaló el sistema operativo OpenSuSE 11.1 en cada uno de los nodos. 3.- Se configuraron las direcciones IP y los nombres de cada equipo. 4.3 Diferencias entre cluster físicos y cluster virtual. Entre las diferencias más notables en la creación del cluster, está la de costos entre ambos cluster. Para distinguir la viabilidad en el desarrollo de este proyecto ver la tabla

57 Cluster físico Cluster virtual Equipo Costo Equipo Costo 1 Switch Enterasys $24, Computadora personal, procesador AMD Athlon II, Dual Core M300, Memoria 10 metros de cable UTP $55.00 DDR2 4Gb, disco duro 320 Gb. $ PC (ensambladas), procesador Celeron core dúo, memoria Ram 2 Gb, disco duro 80 Gb, etc. Cada una costó $ $11, $36, $ Tabla 4.1 Diferencia de costos entre el cluster fisico y el cluster virtual. La diferencia de costos entre el cluster fisico y el cluster virtual es notoria en cuanto al costo que está más relacionado al hardware. La diferencia entre el cluster físico y el cluster virtual es de $27, Por lo anterior se puede decir que es más barato construir un cluster virtual, que un cluster físico. 4.3 Instalación y configuración del software en la máquina virtual y máquina física. Para la creación del cluster tanto físico como virtual se instalaron y configuraron los mismos componentes de software, la única diferencia fue que en el cluster virtual se debe tener una máquina anfitriona y esta máquina anfitriona necesita una máquina virtual y para esto se eligió Virtual Box versión 3.02, la cual puede contener su propio hardware según la arquitectura con la cual se vaya a trabajar como la AMD e INTEL, además se pueden importar los discos duros de las máquinas virtuales que se necesiten Pasos para instalar Virtual box para el cluster virtual VirtualBox viene en diferentes paquetes y la instalación depende de su plataforma de su tarjeta madre y el sistema operativo que se está utilizando. Virtual Box tiene la opción para instalarse en cualquier sistema operativo. El arranque del software virtual trae consigo la creación de la máquina virtual que alberga al sistema operativo de nuestra elección. 40

58 Si queremos tener una máquina virtual podemos acceder al asistente que nos ayuda a crearla dependiendo del sistema operativo y su versión. Podemos también escoger la memoria base (ver Figuran 4.3) con el cual va a trabajar nuestra máquina virtual. Posteriormente se puede crear el disco duro que va a utilizar el sistema y este disco duro puede ser de tamaño fijo o dinámico, al crear el disco duro se guarda con un nombre de disco duro y este almacena toda la configuración del sistema operativo y los programas instalados en éste. Las imágenes de disco también se puede separar de una máquina virtual en particular, por lo que incluso si se elimina una máquina virtual se puede guardar la imagen o copiarlo a otro host y crear una nueva máquina virtual ahí. Al crear el disco duro también se especifica el tamaño de éste (ver Figura 4.4), dependiendo de la instalación se puede escoger el tamaño del disco duro, que puede llegar hasta los 2 Tb de tamaño. Figura 4.3 Selección de la memoria RAM en la máquina virtual de Virtual Box. Figura 4.4 Configuración del disco duro virtual en Virtual Box. 41

59 Después de haber creado la máquina virtual se pueden configurar algunas otras características que se necesitan para la creación del cluster como: la red, el tipo de arranque para la instalación, el configurar el USB y otras características que pueden ser útiles como la cantidad de memoria para la tarjeta de video virtual. Por ejemplo para poder instalar un sistema operativo se puede hacer a través de un CD insertado en la unidad de CD-ROM. También puede hacerse mediante un archivo de imagen de disco (ver figura 4.5), el cual pueden ser ISO, NRG, VCD, BIN, IMG, etc. Figura 4.5 Selección de una imagen de disco (ISO, NRG,etc), para instalar sistema operativo. El modo de arranque es otra de las funciones importantes de la máquina virtual, ya que se puede iniciar desde el disco duro o desde la unidad de CD-ROM y generalmente la opción que se selecciona es la de arrancar (bootear) desde la unidad de CD-ROM. Las máquinas virtuales que se instalaron para el cluster tienen la necesidad de conectarse en red (ver Figura 4.6), entonces existen diferentes formas de conectar la red, estos tipos de conexión son: Red interna. Sirve para conectar internamente máquinas con la misma IP y la misma mascara de subred, pero sin poder conectarse a la red. Red NAT. Generalmente se ocupa para traducción IP s de un tipo de red a otra. En la instalación del nodo maestro es necesario tener 2 tarjetas de red, por lo que se instaló una tarjeta con NAT y otra con red interna. Red Adaptador Puente (Bridge). Adaptador solo Anfitrión. 42

60 Figura 4.6 Seleccionar el tipo de conexión de Red en Virtual Box. El nodo maestro del cluster tiene dos tarjetas de red como se había comentado antes, una tarjeta con conexión NAT y otra tarjeta con conexión de red interna. La segunda conexión de red interna sirvió para hacer la conexión de los nodos de red. Cada uno de los nodos de la red tiene una configuración con una tarjeta de red interna y en las cuales se configuraron las IP s de red interna necesarias para la comunicación del cluster. Es necesario también escoger una buena tarjeta de red virtual, para el caso de los nodos se escogió la tarjeta de red Intel PRO/1000 MT Desktop. La configuración e instalación de virtual box para la creación de máquinas virtuales con OpenSUSE 11.1, fue necesario para la máquina anfitriona que tendría al cluster virtual. Para el buen funcionamiento del cluster tanto físico como virtual es necesario instalar el sistema operativo OpenSUSE, para computadoras con procesador i386 (procesador intel) a 32 bits en cada una de las máquinas; para su caso se tuvo que instalar la versión OpenSUSE 11.1 para que los RPM s de Mosix puedan coincidir con el kernel del sistema operativo Instalación de Opensuse y configuración de la red. Instalando y configurando OpenSuSE. Generalmente se instala desde el disco booteable de OpenSUSE 11.1, y comienza el gestor de instalación [29]. Automáticamente desde este modo de instalación, se puede dar una configuración al sistema y los alcances que se quiere con el sistema operativo OpenSUSE Por ejemplo el idioma de OpenSUSE (ver Figura 4.7). 43

61 Figura 4.7 Instalando OpenSUSE 11.1, configurando idioma. También se puede ver el tipo de instalación y la configuración de la partición en el disco duro (ver Figura 4.8), además del tipo de partición, como son: ext2, ext3 o ext4. Se seleccionó el formato de partición es ext3, debido a su manejo y compatibilidad con otro formatos de archivos de Linux y ya que todas las distribuciones de Linux la utilizan como el formato de partición. Su nuevo sucesor es ext4. Figura 4.8 Particionar el disco duro en formato ext y configurando el tamaño de la instalación. Y toda la instalación requiere de otros parámetros, como: el nombre del equipo y la contraseña con lo cual vamos a reconocerlos en la red tanto física como virtualmente. En la creación de este cluster, se ha tomado el nombre de nodo para cada equipo conectado en la red. Después de la instalación es necesaria más herramientas de software para el buen trabajo del sistema operativo, como son los programas gcc, make, g++, ssh, apache etc. Toda instalación se hace desde el gestor de arranque de OpenSUSE (ver Figura 4.9). 44

62 Figura 4.9 Gestor de Software de OpenSUSE. Configuración de la Red en OpenSuSe La configuración de la red en OpenSuse se puede hacer de dos formas, utilizando el gestor de instalación y configuración de la red YAst (Yet another Setup Tool, Otra Herramienta de Configuración Más, Figura 4.10), otra forma de configuración es mediante la terminal de comandos en Opensuse y también la opción de configuración por el gestor de conexión de red (Figura 4.11). Figura 4.10 Configuración de Red por YaST. 45

63 Figura 4.11 Configuracion por conexión de Red. Para la configuración de la red es necesario la tarjeta de red, que por default se configura al instalarse OpenSUSE y posteriormente la configuración de la dirección IP y la máscara de subred para cada uno de los nodos en la red (Figura 4.12). Para identificar a estos se escogieron números IP s pertenecientes a la clase C 11, de la dirección /24 a la /24, ya que es la clase que soporta menor cantidad de computadoras conectadas. Figura 4.12 Configuración de direcciones IP en OpenSUSE. 11 La red de clase C, es la red que puede aceptar 256 redes, y generalmente es utilizado por compañías pequeñas, escuelas y usuarios. Las direcciones que utilizan van desde la hasta la

64 La configuración de la dirección IP se hace en cada uno de los nodos, también se tiene que configurar el nombre del equipo para reconocerlo en la red, esto se hace desde el directorio /etc/hosts, este archivo se edita, se le pone su dirección IP y los nombres de los nodos como se van a reconocer en la red. Ejemplo: nodo nodo nodo nodo3 Después de hacer la configuración de la dirección IP en cada uno de los nodos, se puede utilizar el comando ifconfig (en Opensuse solo funciona como superusuario root ), si la dirección está asignada a la tarjeta de red, que generalmente se determina por default a eth0. El ifconfig muestra cada interfaz instalada y su respectiva dirección IP: inet addr: Bcast: Mask: Posteriormente para ver si hay conexión entre los nodos conectados en red, se utiliza el comando ifconfig en modo root, debido a que solamente así funciona ifconfig: Después utilizamos una utilidad del protocolo ICMP (Protocolo de Control de Mensajes de Internet) y esta utilidad es el ping con el cual se puede verificar el estado de la conexión, velocidad de transmisión y la calidad de la red en la se está conectado. Para ver los nodos en la red entonces se utiliza la terminal y escribimos ping (echo request), que es una utilería del protocolo ICMP y nos da una respuesta de señal exitosa de conexión con otro nodo, de otra forma nos da un mensaje de error de no respuesta. nodo1 PING nodo1 ( ): 56(84) bytes of data. 64 bytes from nodo1( ): icmp_seq=1 ttl=64 time=0.085 ms 64 bytes from nodo1( ): icmp_seq=1 ttl=64 time=0.093 ms 47

65 4.4 Instalación de Mosix Para instalar Mosix, es necesario tener los archivos de instalación y de configuración, los cuales se obtienen de la página de los creadores de Mosix [20], los archivos necesarios para la instalación deben buscarse dependiendo del sistema operativo y también por la versión del sistema operativo, en este podemos encontrar un apartado para la instalación del kernel en todas las distribuciones de Linux que se conocen. En el caso de la distribución OpenSUSE se pueden obtener los archivos de instalación RPM 12. En el caso del cluster se escogió la versión de OpenSUSE 11.1 y los archivos que se instalaron fueron de la última versión de Mosix, la [25]. Los archivos recomendados para la instalación es el kernel-mosix _ i586.rpm que es necesario para el funcionamiento del kernel de Mosix y del kernel del sistema operativo Linux y también un archivo necesario para el funcionamiento es el archivo mosix-utils i386.rpm, que contiene otras características de funcionamiento de migración de Mosix [22]. La instalación de estos archivos de forma automática se hace: rpm -ihv kernel-mosix-latest.i586.rpm rpm -ihv mosix-utils-latest.i386.rpm Al hacer esta instalación Mosix instala propiedades básicas de conexión entre kernels de Mosix, pero no se apropia completamente del kernel de Linux. Para ver el funcionamiento de Mosix, es necesario reiniciar para que el gestor de arranque Grub, reconozca al kernel de Mosix como el primer sistema de arranque (Figura 4.13). 12 RPM Package Manager (o RPM, originalmente llamado Red Hat Package Manager, pero se convirtió en acrónimo recursivo) es una herramienta de administración de paquetes pensada básicamente para GNU/Linux. Es capaz de instalar, actualizar, desinstalar, verificar y solicitar programas. RPM es el formato de paquete de partida del Linux Standard Base. 48

66 Figura 4.13 Gestor de arranque GRUB, iniciando con kernel Mosix. Después de haber reiniciado se tiene que proseguir con la instalación de Mosix, para su funcionamiento correcto en el sistema operativo elegido. En la terminal de OpenSUSE se utiliza el comando mosconf, el cual sirve para configurar automáticamente la operatibilidad de Mosix: Y se tiene acceso al menú de configuración de Mosix: MOSIX CONFIGURATION ================== ================================= 1. Which nodes are in this cluster (ESSENTIAL) 2. Authentication (ESSENTIAL) 3. Logical node numbering (recommended) 4. Queueing policies (recommended) 5. Freezing policies 6. Miscellaneous policies 7. Become part of a multi-cluster organizational Grid En este menú se escoge la opción 1 para configurar la cantidad de nodos a instalar en Mosix. Y se tiene que escoger la opción n, para configurar los nodos: There are no nodes in your cluster yet: ======================================= To add a new set of nodes to your cluster, type 'n'. To save and exit, type 'q'. (to abandon all changes and exit, type 'Q') 49

67 Después de haber metido los nodos hay que guardar esta configuración y se presiona la tecla q. Y se puede ver el archivo generado por la configuración: mosix.map p Mosix.map nos muestra el contenido creado en la primera parte del menú de mosconf la cantidad de nodos del cluster y utiliza la letra p para el manejo de los procesadores de cada uno de los nodos. La dirección IP se puede asignar, como IP principal y no es necesario configurar las otras direcciones IP s, porque el numero 4 significa que están activos. También se recomienda crear el archivo manualmente y puede representarse así: p p p p Esta configuración es para cada uno de los nodos conectados en el cluster, utilizando mosconf o manualmente creando el archivo mosix.map. Posteriormente se tiene que configurar la seguridad de cada uno de los nodos y para esto se tiene que ejecutar mosconf y escoger la opción 2. What would you like to configure? ================================= 1. Which nodes are in this cluster (ESSENTIAL) 2. Authentication (ESSENTIAL) 3. Logical node numbering (recommended) 4. Queueing policies (recommended) 5. Freezing policies 6. Miscellaneous policies 7. Become part of a multi-cluster organizational Grid Configure what :- 2 Generalmente las 2 primeras opciones del menú de configuración de mosconf aparecen con la palabra ESSENTIAL, que nos indican que es obligatoria su configuración para un buen desempeño del cluster. Por tanto al escoger la opción 2, su configuración de autenticación es con una clave cifrada con el algoritmo RSA. Esta clave debe ser la misma en cada uno de los nodos, ya que al migrar los procesos se debe estar seguro de que nadie pueda tener acceso a los mismos. Es 50

68 recomendable que en todos los nodos se tenga la misma clave cifrada, en el caso del cluster se escogió una clave relacionada con el mismo: nodos. Después de la configuración se generan 2 archivos con las claves secretas de los nodos del cluster, estas son: secret (para configurar cuanta secreta del servidor) y ecsecret (cuenta secreta de los clientes). La configuración posterior y no tan urgente es la opción 3: What would you like to configure? ================================= 1. Which nodes are in this cluster (ESSENTIAL) 2. Authentication (ESSENTIAL) 3. Logical node numbering (recommended) 4. Queueing policies (recommended) 5. Freezing policies 6. Miscellaneous policies 7. Become part of a multi-cluster organizational Grid Configure what :- 3 Logical node numbering, es recomendable para la configuración de una dirección IP para reconocimiento en el nodo maestro o bien se pueden configurar los nombres de los nodos. La configuración es en cada uno de los nodos al entrar a esta opción y se crea un archivo llamado userview.map, el cual tiene un parecido a mosix.map: /etc/mosix/userview.map Cuando abrimos posteriormente este archivo se puede ver la configuración del nodo a configurar: /etc/mosix/pico userview.map Y nos muestra lo siguiente: Donde el 1 significa que es un solo nodo con la dirección de inicio, en este caso comienza con la dirección 192, , y el 4 que son 4 nodos con numeración consecutiva al primer nodo. Es decir el nodo que le sigue es el nodo con la dirección IP y así consecutivamente. También es necesario configurar el nodo central, también conocido como nodo maestro. Este nodo central generalmente se recomienda al nodo de inicio, es decir al que comienza con el primer número IP de la conexión del cluster. Este nodo maestro es el que maneja la cola de procesos y es desde este nodo donde se decide a que nodo se puede migrar el proceso [23]. 51

69 What would you like to configure? ================================= 1. Which nodes are in this cluster (ESSENTIAL) 2. Authentication (ESSENTIAL) 3. Logical node numbering (recommended) 4. Queueing policies (recommended) 5. Freezing policies 6. Miscellaneous policies 7. Become part of a multi-cluster organizational Grid Configure what :- 3 En el menú de configuración del archivo mosconf, se selecciona la opción 4, Queueing policies (políticas de cola). Se seleccionó como nodo principal al nodo0, es decir al que tiene el número Esta dirección debe ser configurada en cada uno de los nodos del cluster. El archivo generado es /etc/mosix/queue.conf, el contiene la configuración del nodo central, y el cual es: C Donde la C significa que esta dirección IP es el nodo central. Si se requiere monitoreo de todos los nodos conectados en red, utilizando el comando mon se requiere crear un archivo llamado mosip, el cual debe contener el nombre del nodo que se va a monitorear. Por ejemplo: para el nodo maestro, donde se requiere monitorear a los demás nodos. Después de toda la configuración realizada con mosconf, es necesario reiniciar a cada nodo configurado para un buen funcionamiento. 52

70 CAPÍTULO 5. Pruebas de Desempeño 5.1 Requerimientos para el cluster físico y virtual Requerimientos del clúster físico Cuatro nodos interconectados con un enlace con un SWITCH Enterasys a 1000Mbps. Procesadores CELERON CORE DÚO, 2 Gb de memoria RAM, cada uno con un disco duro de 160 Gb. Sistema Operativo Linux OpenSuSE versión 11.1 de Novel. El nodo maestro (nodo0), cuenta con 2 tarjetas de red eth0 y eth1, donde eth1 tiene salida a internet por medio del número IP Este nodo incluye los servicios de servidor web Apache2 y Openssh, para poder acceder al clúster desde internet. El middleware de conexión a nivel de kernel MOSIX. Requerimientos del clúster virtual El clúster virtual llamado marc2 cuenta con los siguientes requerimientos: 1. Software Virtual, Virtual Box versión 3.02 [7]. a) Cada nodo virtual cuenta con 300 Mb de memoria RAM. b) Cada nodo virtual cuenta también con disco duro virtual de 10Gb. c) Una tarjeta de Red GigabitE virtual, configurado en modo interno. 2. Sistema operativo Linux OpenSUSE Middleware Mosix kernel-mosix-latest.i586 y mosix-utils-latest.i386 RPM. 4. Para la conexión a internet Apache2 y Openssh. 5. gcc y g++ para la compilación de programas en lenguaje C a correr en el cluster. El procedimiento de instalación en el cluster físico fue el siguiente: 1. Se conectaron en red, utilizando cable UTP cat 5e y conectores RJ45 al switch Enterasys cada uno de los nodos. 2. Se instaló el sistema operativo OpenSUSE 11.1 en cada uno de los nodos. 3. Se configuraron las direcciones IP y los nombres de cada equipo. 4. Se instalaron gcc y g++ en cada nodo. 5. Se configuró el nodo maestro con Apache2 y OpenSSH. 6. Se instalaron los archivos RPMs de Mosix en cada nodo. 7. Se configuró el nodo maestro y los nodos clientes con el comando mosconf. 53

71 8. Se ejecutaron programas y se monitorizaron con el comando mon. El procedimiento de instalación en el cluster virtual fue el siguiente: 1. Configuración de las tarjetas de red en cada una de las máquinas virtuales con red Interna para la comunicación entre nodos. 2. Instalación del Sistema Operativo OpenSUSE 11.1 en cada uno de los nodos. 3. Configuración de las direcciones IP y los nombres de cada equipo. 4. Instalación del software gcc y g++ en cada nodo. 5. Configuración del nodo maestro con Apache2 y OpenSSH. 6. Instalación de los RPMs de Mosix en cada nodo. 7. Configuración del nodo maestro y los nodos clientes con el comando mosconf. 8. Ejecución de los programas y monitorización de los eventos con el comando mon. 5.2 Metodología Para desarrollar las pruebas, fue necesario hacer pruebas de balanceo y de carga en cada uno de los nodos conectados en red y que serían ejecutados por Mosix [4]. Para esto se buscaron los algoritmos que por su complejidad matemática responden a un tiempo de retardo, estos algoritmos son los algoritmos de factorial, un algoritmo con 3 bucles anidados (Stress), algoritmo que calcula el Pi por el método de Leibniz y un algoritmo que calcula el ordenamiento de las torres de Hanoi. Se realizan en cada uno de los algoritmos las pruebas que se realizaron fueron en base a muestras numéricas que en promedio de diez corridas por muestra, arrojaron diferentes tiempos en cada uno de los equipos en los que fueron ejecutados como: en una computadora (secuencial), el cluster fisico y en el cluster virtual. Además de su análisis de Speedup, para ver la ganancia en tiempos comparados entre los tiempos secuenciales y los clusters físicos y virtuales Pruebas utilizando el algoritmo de Factorial Matemáticamente el factorial se denota como el producto de un número n positivo, que multiplica decrementalmente a un número antecesor hasta llegar a la unidad. Ejemplo n!= 7. 7!= 7 x 6 x 5 x 4 x 3 x 2 x 1 7!=

72 En caso de obtener el factorial de 0! El resultado de este es 1. El factorial se ocupa en muchas disciplinas de las matemáticas, especialmente en combinaciones, algebra y análisis combinatorio. En el estudio de la criptografía, es ocupado el factorial para las permutaciones, en el algoritmo DES. Para obtener el factorial de un número, es necesario desarrollar un algoritmo que utilice un ciclo repetitivo y en este ciclo es necesario utilizar elementos recursivos para poder así sacar el resultado del factorial de cierto número entero positivo incluyendo el cero. Algoritmo y complejidad computacional. Algoritmo Factorial Var Real largo: f; Entero n, i; Escribir( Dame un numero para calcular: ); Leer(n); Desde i=n hasta 1 decremento 1 hacer f=f*i; Fin desde Escribe( El factorial del numero es de, f); Fin. ---O(1) ---O(1) ---O(n!) ---O(1) ---O(1) ---O(1) El estudio del algoritmo de Factorial por consumir cierto tiempo en arrojar el resultado del factorial su complejidad computacional que se analizó es de complejidad O(n!), con lo cual podemos decir que tiene n iteraciones. El código en lenguaje C del algoritmo del factorial es el siguiente: #include <stdio.h> int main( ) { long double f=1; long int n=2; int i; printf("calculando el factorial de %d:",n); for (i=n; i>=1; i--) { f=f*i; printf("%ld %.2Lf \n ->",i,f); } return 0; } 55

73 Para compilar este programa se necesita abrir la terminal y todo se realizará desde el nodo principal, ya que en el nodo principal es donde se ejecutan los programas, utilizando gcc. $gcc factorial.c o factorial Al no encontrar ningún error de compilación, se realiza el ejecutable y se puede hasta ver el tiempo de ejecución de este programa. $time./factorial Para ejecutar un programa de factorial en todo el clúster es necesario utilizar el comando mosrun migrando los procesos de cada uno de los nodos a un nodo libre: $mosrun time./factorial O en su caso para ejecutarlo en algún nodo o conjunto de nodos: $mosrun j1-3./factorial /*Ejecutar en los nodos del 1 al 3 $mosrun np./factorial /* ejecuta en todos los nodos Análisis de tiempo de ejecución del algoritmo Factorial, en secuencial, paralelo físico y paralelo virtual Las muestras que se tomaron en cuenta (Tabla 5.1), para desarrollar el algoritmo de factorial, fueron de acuerdo al alcance de los tipos de datos que el lenguaje c puede alcanzar. CALCULOS DE TIEMPOS EN EL ALGORITMO DE FACTORIAL Muestras T. secuencial T. Cluster fisico T. Cluster virtual T. Speedup fisico T. Speedup virtual Tabla 5.1 Muestras, tiempos calculados secuencialmente, en cluster fisico y cluster virtual con el algoritmo del Factorial. 56

74 Utilizando las muestras del 5 al 163, se pueden notar los resultados de tiempos que secuencialmente se desarrollaron en un solo nodo, sin ninguna conexión o software que lo paralelizara, se puede ver mediante la gráfica su desempeño (Figura 5.1). Tiempo secuencial Factorial Figura 5.1 Gráfica de prueba secuencial aplicado al algoritmo de Factorial. De la misma forma las muestras antes utilizadas fueron llevadas al algoritmo del factorial, ejecutándolas en el cluster físico, y este nos arroja el siguiente resultado gráfico (Figura 5.2), dando una mejoría de tiempo en referente a su homologo secuencial. Tiempo cluster fisico en Factorial Figura 5.2 Gráfica de prueba en cluster físico, aplicado al algoritmo de Factorial 57

75 El cluster virtual nos visualiza una gráfica (Figura 5.3) de los tiempos en que las muestras se ejecutaron en el algoritmo de Factorial, fueron relevantes para comparar al equipo secuencial y el virtual. La gráfica muestra este funcionamiento del algoritmo de forma virtual. Tiempo cluster virtual Factorial Figura 5.3 Gráfica de prueba en cluster virtual, aplicado al algoritmo de Factorial Para calcular las diferencias de tiempo entre el cluster físico y el cluster paralelo, se tiene una fórmula llamada fórmula de Speedup. Si el Speedup calculado es mayor que los tiempos anteriores se puede decir que lo optimo es paralelizar el algoritmo de Factorial, se puede ver la diferencia mediante la gráfica (Figura 5.4). Tiempo secuencial Factorial Tiempo cluster fisico Fact. Tiempo Speedup Fisico Factorial Figura 5.4 Gráfica de comparacion entre tiempos secuencial, cluster fisico y el speedup aplicado al algoritmo de Factorial. 58

76 Se aplica la fórmula del cálculo del speedup en el nodo secuencial vs el cluster virtual y se ve la diferencia de tiempo y speedup es menor al speedup aplicado entre el cluster físico y el nodo secuencial (Figura 5.5). Tiempo secuencial Factorial Tiempo cluster virtual Fact. Tiempo Speedup virtual Factorial Figura 5.5 Gráfica de comparacion entre tiempos secuencial, cluster virtual y el speedup aplicado al algoritmo de Factorial. Esta fórmula de speedup hace referencia a la diferencia que existe entre el tiempo secuencial del programa que calcula el algoritmo factorial y el tiempo en que se tarda en correr en el cluster físico. Y con esto se puede hacer una comparación de qué cluster utilizar para el desempeño de programas que utilicen el algoritmo del Factorial. 5.3 Análisis del algoritmo de Stress utilizando tres bucles anidados Bucles Repetitivos. Las estructuras repetitivas o bucles, se utilizan como su nombre lo indica repetir un número de veces una declaración o un conjunto de instrucciones. Un bloque de instrucciones, puede contener asignaciones, operaciones, sentencias y más bucles repetitivos. Tipos de bucles En los lenguajes de programación se conocen 3 tipos diferentes de ciclos o bucles repetitivos, los cuales son: el ciclo para (for), mientras (while) y hacer mientras (do while). 59

77 Bucle repetitivo Para. Es un bucle que se ejecuta un número determinado de veces y es controlado por un contador. Para (cond 1, cond 2, contador) inicio Instrucciones Fin para Bucle repetitivo mientras. Es un bucle que evalúa una condición al inicio del bucle, mientras esta condición sea verdadera trabaja en el ciclo y si es falsa la condición, el ciclo termina. Mientras (condición) Inicio Instrucciones Fin. Bucle repetitivo Hacer Mientras. Se caracteriza por evaluar la condición al final del ciclo, por lo tanto, si la primera vez al ejecutarlo la condición es falsa, se ejecutará al menos una vez. Hacer Instrucciones Mientras (condición); Bucles anidados. Son útiles para el manejo de arreglos bidimensionales y multidimensionales. Se caracterizan por el manejo de bucles internos, el bucle externo controla a los internos. Puede utilizar a los ciclos repetitivos, para, mientras y hacer mientras; o una combinación de ellos. Para (cond1, cond 2, cont) inicio Para (cond3, cond4 cond 2, cont) Inicio Instrucciones. Fin_para Fin_Para. 60

78 El manejo de 3 ciclos repetitivos anidados depende de lo que se vaya a realizar dentro de esos bucles, ya sea la ejecución de un proceso sumador, restador o multiplicativo donde el tiempo de ejecución suele ser muy alto. En la prueba de desempeño se ha desarrollado un algoritmo iterativo con 3 bucles que trabajan a la n según sea el índice de retardo en este bucle anidado, a esta prueba se le llamó Stress, porque según el número de iteraciones depende de hasta n y mientras n se vaya incrementando, más lento se va haciendo el programa. Algoritmo Stress Var Entero n,i,j, k; Escribir( Dame un numero para el límite del los ciclos: ); Leer(n); Desde i=1 hasta n incremento 1 hacer Desde j=1 hasta i incremento 1 hacer Desde k=1 hasta j incremento 1 hacer Escribe( numero, n); Fin desde k; Fin desde j; Fin desde i; fin. ---O(1) ---O(n) ---O(n) ---O(n) Su complejidad computacional es n cubica O(n3), con lo cual podemos decir que su complejidad se duplica según vaya subiendo la cantidad de n, lo cual hace que se ralentice el programa. El código en c, del algoritmo de Stress. #include <stdio.h> { int n,i,j,k; n=100; for (i=1; i<=n; i++) { for(j=1; j<=i; j++) { for(k=1; k<=j; k++) { printf( numero %i, n); } } } } 61

79 5.3.1 Análisis de tiempo de ejecución del algoritmo Stress en secuencial, paralelo físico y paralelo virtual El algoritmo de Stress, es un algoritmo que dada su complejidad computacional O(n 3 ), al ejecutarlo en un solo nodo puede tener un retardo de ejecución, debido a sus tres ciclos anidados que utiliza este algoritmo, al utilizar una muestra cada vez mayor, su complejidad computacional aumenta considerablemente. Las muestras se escogieron de un valor de 25 a 100 (Tabla 5.2), debido a que en el algoritmo mientras el valor de n sea más alto más sobrecarga a la computadora, más el análisis para escoger entre ejecución secuencial o paralela. CALCULOS DE TIEMPOS EN EL ALGORITMO DE STRESS Muestras T. Secuencial T. Cluster fisico T. Cluster virtual T. Speedup Fisico T. Speedup Virtual Tabla 5.2 Muestras, tiempos calculados secuencialmente en cluster fisico y cluster virtual con el algoritmo de Stress. Las muestras se ejecutaron en un solo nodo, para dar los tiempos secuenciales para este algoritmo de Stress, la gráfica nos muestra (Figura 5.6), el comportamiento a través del tiempo de este algoritmo. Tiempo secuencial Stress Figura 5.6 Gráfica de prueba secuencial aplicado al algoritmo de Stress. 62

80 Los resultados de la ejecución de estas muestras que se realizaron en el cluster fisico arrojan una gráfica (Figura 5.7), con un comportamiento de velocidad y mejora ante su referente el nodo secuencial. Tiempo cluster fisico Stress Figura 5.7 Gráfica de prueba en cluster físico, aplicado al algoritmo de Stress. En el cluster virtual implementado en virtualbox y con los 4 nodos trabajando se puede observar en la gráfica (Figura 5.8), el desempeño mostrado por el algoritmo de Stress y su comparación, es relevante si se observa su comportamiento referente al nodo secuencial. Tiempo cluster fisico Stress Figura 5.8 Gráfica de prueba en cluster virtual, aplicado al algoritmo de Factorial 63

81 Análisis de muestras de tiempo secuencial, tiempo paralelo físico y el resultado del speedup. El speedup que se muestra en esta comparación de tiempos puede verse en la gráfica (Figura 5.9), el tiempo obtenido con la fórmula del speedup nos arroja los tiempos de las mejoras del análisis paralelo, contrario al análisis secuencial que arroja el algoritmo de Stress. Tiempo secuencial Stress Tiempo cluster fisico Stress Tiempo Speedup Fisico Stress Figura 5.9 Gráfica de comparacion entre tiempos secuenciales, cluster fisico y el speedup, aplicado al algoritmo de Stress. Análisis de muestras de tiempo secuencial, tiempo paralelo virtual y el resultado del speedup entre estos tiempos. El speedup virtual en el programa ejecutable con el comando mosrun, nos da el resultado que se muestra en la gráfica (Figura 5.10) que continuación se visualiza. Tiempo secuencial Stress Tiempo cluster virtual Stress Tiempo Speedup virtual Stress Figura 5.10 Gráfica de comparación entre tiempos secuencial, cluster virtual y el speedup aplicado al algoritmo de Stress. 64

82 5.4 Cálculo de Pi por medio del Algoritmo de Gregory- Leibniz En las matemáticas el valor de Pi tiene aplicaciones en el campo del cálculo y la física. Existen muchos métodos para encontrar su valor exacto, entre ellos el cálculo de PI por el método de Gregory Leibniz. Tanto Leibniz como James Gregory, usaron para llegar a su resultado una serie de sumatorias y así la serie se expresa como: Esta expresión converge en una serie infinita, que al finalizar da como resultado π/4. La formula de PI de Leibniz, requiere que dado un numero n, pueda llegar al valor deseado de Pi. Si n es un número cercano a 3, 000,000. El valor más cercano es: Con esto se puede crear su algoritmo y traducirlo posteriormente a un lenguaje de programación que pueda representar casi en su totalidad el número pi. Complejidad computacional del algoritmo de Pi por el método de Gregory- Leibniz: Algoritmo Leibniz Flotante largo suma=0.0, suma1=0.0, suma2=0.0, k,k1,n=100000; k=2*n; ---O(1) k1=-3; ---O(1) k2=-1; ---O(1) Mientras (k1<(k-3)) hacer ---O(log n) inicio k1=k1+4; ---O(1) suma1= suma1+1/k1; ---O(1) fin_mientras; Escribe("La suma1 es", suma1); Mientras (k2<(k-3)) hacer --- O(log n) inicio k2=k2+4; ---O(1) suma2= suma2+1/k2; ---O(1) fin_mientras; Escribe("La suma2 es ",suma2); ---O(1) 65

83 suma = 4*(suma1-suma2); ---O(1) Escribe("El valor de PI de Leibniz es de:",suma); Fin. La complejidad computacional de este algoritmo es de O(n log n), podemos hablar de un algoritmo cuasi-lineal, ya que su tiempo se eleva según el numero de iteraciones que se lleven a cabo en los ciclos repetitivos mientras. Traducción a lenguaje C del algoritmo Pi por el método de Gregory-Leibniz #include <stdio.h> #include <stdlib.h> main( ) { long double suma =0.0,suma1=0.0, suma2=0.0, k, k1,k2, n= ; //aquí se modifica la numeración k=2*n; k1=-3; k2=-1; while (k1<(k-3)) //primera sumatoria { k1=k1+4; suma1= suma1+1/k1; } printf("la suma1 es %f \n",suma1); while(k2<(k-3)) //segunda sumatoria { k2=k2+4; suma2= suma2+1/k2; } printf("la suma2 es %f \n",suma2); suma=4*(suma1-suma2); //sumar las 2 primera sumatorias y multiplicarlos por 4 ya que es el valor de ¼ deseado } printf("el valor de PI es de %.90Lf \n", suma); } Análisis de tiempo de ejecución del algoritmo PI por el método de Gregory- Leibniz en secuencial, paralelo físico, paralelo virtual y su Speedup Análisis Secuencial El análisis hecho a este algoritmo, el cual es de los tradicionales para su valoración en tiempo de ejecución, llevó a un muestreo entre 1500 y 98, 000,000. El algoritmo de Pi se ha utilizado como una prueba de ejecución en diversos clusters del mundo. Para mostrar los resultados cercanos al 66

84 valor de pi, es necesario utilizar un tipo de datos para mostrar flotantes largos, se utiliza un Long double en lenguaje de programación en C. En la tabla 5.3, se muestran los tiempos que dieron como resultado de la ejecución del algoritmo de PI de Gregory-Leibniz, ya sea secuencialmente, en el cluster fisico, cluster virtual y los diferentes tiempos de la formula de Speedup. CALCULOS DE TIEMPOS EN EL ALGORITMO DE PI GREGORY-LEIBNIZ Muestras T. Secuencial T. Cluster fisico T. Cluster virtual T. Speedup Fisico T. Speedup Virtual Tabla 5.3 Muestras, tiempos calculados secuencialmente en cluster fisico y cluster virtual con el algoritmo PI Gregoy-Leibniz. Con las muestras tomadas, se llevo a cabo la ejecución en solo nodo, dando así el resultado secuencial que se muestra en la siguiente gráfica (Figura 5.11). Tiempo secuencial Pi- Leibniz Figura 5.11 Gráfica de prueba secuencial aplicado al algoritmo de PI de Gregory-Leibniz. 67

85 En el cluster físico se llevo a cabo la ejecución programa PI de Leibniz, corriendo las muestras que se utilizaron en el cluster virtual y se diferencia en los tiempos que muestra la gráfica (Figura 5.12). Tiempo cluster fisico Pi- Leibniz Figura 5.12 Gráfica de prueba en cluster fisico, aplicado al algoritmo de Pi de Gregory- Leibniz. Al ejecutar el algoritmo de Pi en el cluster virtual, en los tiempos tomados se observa (Figura 5.13), que es mejor el tiempo paralelo obtenido. Tiempo cluster virtual Pi- Leibniz Figura 5.13 Gráfica de prueba en cluster virtual, aplicado al algoritmo de Pi de Gregory- Leibniz. 68

86 La fórmula del speedup aplicable para comparar los tiempos entre el cluster fisico y el nodo individual que calcula secuencialmente el cluster virtualizado. Al aplicar esta fórmula se puede ver (Figura 5.14) que la mejora resulta suficiente para escoger al cluster paralelo sobre la ejecución de programas en el nodo secuencial. Tiempo secuencial Pi-Leibniz Tiempo cluster fisico Pi-Leibniz Tiempo Speedup Fisico Pi-Leibniz También se calcula el speedup para ver la comparación de los tiempos entre el cluster virtual y el nodo secuencial. Los cuales toman una gráfica (Figura 5.15) parecida a la obtenida en el speedup de el cluster físico. Figura 5.14 Gráfica de comparacion entre tiempos secuencial, cluster físico y el speedup, aplicado al algoritmo de Pi de Gregory-Leibniz. Tiempo secuencial Pi-Leibniz Tiempo cluster virtual Pi-Leibniz Tiempo Speedup virtual Pi-Leibniz Figura 5.15 Gráfica de comparación entre tiempos secuencial, cluster virtual y el speedup aplicado al algoritmo de Pi de Gregory-Leibniz. 69

87 5.5 Algoritmo recursivo de las Torres de Hanoi El juego de las torres de Hanoi, se compone de tres torres (A,B,C), y dependiendo del número de anillos, estos se pueden mover de la torre A a la torre C en el menor tiempo posible. No se mueve más de un anillo a la vez, y no se puede poner un anillo grande encima de otro más pequeño. Solución. El juego es siempre posible y requiere el doble del tiempo, cada vez que se añade un anillo a la torre original. Si se puede resolver el problema de 3 anillos estos tienen que llegar a la solución de ordenamiento en 7 movimientos. Y si aumenta el número de anillos, el número de movimientos aumenta, haciendo más lento el proceso. Se dice que el número más alto de anillos que se puedan utilizar es de 64 anillos, ya que tardaría hasta millones de años en solucionar el problema. Complejidad computacional en el algoritmo de las Torres de Hanoi: Algoritmo Torres Inicio Entero n, n_moves; Hacer Escribe( Ingresa el tamaño de la torre ); Lee(n); Mientras (n <= 0); n_moves=move_tower(n,1,2); Escribe("La solucion requiere %d movimientos.\n", n_moves); Fin. ---O(n) ---O(1) Función entero move_tower (entero n, entero from, entero to) { entero aux; entero n_moves; si (n == 1) Entonces ---O(1) inicio Escribe("Moviendo anillo [1] para poste no. a poste no.", from, to); Fin_si aux = 6 - from - to; ---O(1) n_moves = move_tower (n - 1, from, aux); ---O(1) Escribe("Moviendo anillo [ ] de poste. a poste no. ", n, from, to); n_moves++; ---O(1) n_moves += move_tower (n - 1, aux, to); ---O(1) retorna(n_moves); } 70

88 La complejidad de este algoritmo es O(n). Al traducir el algoritmo a lenguaje C, para ser compilado por gcc. #include <stdio.h> #define MAX_LINE 80 int move_tower (int n, int from, int to); int main () { char in[max_line]; int n; int n_moves; do { printf ("Ingresa el tamaño de la torre: "); scanf ("%s", in); n = atoi(in); } while (n <= 0); n_moves = move_tower (n, 1, 2); printf ("La solucion requiere %d movimientos.\n", n_moves); return (0); } int move_tower (int n, int from, int to) { int aux; int n_moves; if (n == 1) { printf ("Moviendo anillo [1] para poste no. %d a poste no. %d\n", from, to); return (1); } aux = 6 - from - to; n_moves = move_tower (n - 1, from, aux); printf ("Moviendo anillo [%d] de poste. %d a poste no. %d\n", n, from, to); n_moves++; n_moves += move_tower (n - 1, aux, to); return (n_moves); } Muestras y tiempos secuencial, paralelo físico, paralelo virtual y ganancia en el speedup, con el algoritmo de Torres de Hanoi. Las muestras que se tomaron para ejecutar el algoritmo de las torres de Hanoi (Tabla 5.4), fueron imprescindibles, ya que mientras más alta se la muestra, el algoritmo se puede ejecutar con lentitud. La muestra más alta que hace el algoritmo sea casi imposible de resolver es el numero 64, ya que 71

89 aun sea el equipo más veloz del mundo, la solución para la muestra con el numero 64 tardaría casi un millón de años, en resolverse. CALCULOS DE TIEMPOS EN EL ALGORITMO DE LAS TORRES DE HANOI Muestras T.Secuencial T. Cluster fisico T. Cluster virtual T. Speedup Fisico T. Speedup Virtual Tabla 5.4 Muestras, tiempos calculados secuencialmente, en cluster fisico y cluster virtual con el algoritmo de las Torres de Hanoi. Un inconveniente en las torres de Hanoi es su naturaleza recursiva, con lo cual el retardo en el tiempo de ejecución de las muestras empleadas secuencialmente en la ejecución en una sola computadora nos deja ver que se consume un tiempo demasiado alto, la gráfica nos visualiza este resultado (Figura 5.16). Tiempo secuencial Torres de Hanoi Figura 5.16 Gráfica de prueba secuencial aplicado al algoritmo de las Torres de Hanoi. 72

90 De la misma forma se hicieron las pruebas necesarias en el cluster físico para hacer notar la diferencias de tiempo entre éste y el nodo secuencial. Los tiempos en que se ejecutaron se muestra (Figura 5.17) en la gráfica en una línea ascendente a través del tiempo. Tiempo cluster fisico Torres de Hanoi Figura 5.17 Gráfica de prueba en cluster fisico, aplicado al algoritmo de las torres de Hanoi. El cluster virtual ejecutándose en cuatro máquinas virtuales, solicita gran demanda de memoria, además de que el sistema anfitrión soporte gran cantidad de procesos trabajando. Al ejecutarse las muestras en el cluster virtual se puede ver en la gráfica una ligera diferencia entre el cluster fisico y el cluster virtual. En la gráfica se muestra el resultado obtenido (Figura 5.18). Tiempo cluster virtual Torres de Hanoii Figura 5.18 Gráfica de prueba en cluster virtual, aplicado al algoritmo de las torres de Hanoi. 73

91 En la figura 5.19, se muestra el resultado del speedup aplicado al cluster fisico y su comparación con el nodo secuencial para notar la diferencia de tiempos entre estos. Tiempo secuencial Torres de Hanoi Tiempo cluster fisico Torres de Hanoi Tiempo Speedup Fisico de Torres de Hanoi Figura 5.19 Gráfica de comparación entre tiempos secuenciales, cluster fisico y el speedup aplicado al algoritmo de las torres de Hanoi. La aproximación de los tiempos que el speedup nos mostró y resultaron al ejecutar el programa de la torre de Hanoi en el cluster virtual y comparándolo con el nodo secuencial, resulta en una gráfica cercana al speedup que se realizó en el cluster físico (Figura 5.20). Tiempo secuencial Torres de Hanoi Tiempo cluster virtual Torres de Hanoi Tiempo Speedup Fisico de Torres de Hanoi Figura 5.20 Gráfica de comparación entre tiempos secuenciales, cluster virtual y el speedup aplicado al algoritmo de las torres de Hanoi. 74

92 5.6 Monitorización de un programa en ejecución Todos los programas que se ejecutaron ya sea en forma secuencial, como en forma paralela física o paralela virtual; fueron monitoreadas con el comando mon para programas en paralelo y para monitorear en forma secuencial, se utiliza el programa monitor del sistema, el cual ayuda a ver el funcionamiento de cada uno de los nodos en el cluster. En la siguiente figura, se muestra el desempeño de manera secuencial del algoritmo de las Torres de Hanoi, se observa el trabajo de la red y como el CPU del nodo maestro trabaja a un 60% de su capacidad (ver Figura 5.21). Figura 5.21 Monitor del sistema, mostrando el trabajo del CPU, la red, al momento de trabajar con el cluster. Para monitorear paralelamente como ya se ha mencionado, es necesario utilizar el comando mon y con este comando podemos ver sus procesos en migración de nodo a nodo. 75

93 En la Figura 5.22 se muestra el algoritmo de Stress, ejecutándose con el mosrun en una terminal y el comando mon monitoreando los procesos en otra terminal. Figura 5.22 Monitoreo de los recursos del procesador, capacidad de la memoria y trabajo en red del Algoritmo de las Torres de Hanoi en cluster paralelo físico. 76

: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

CONSTRUCCIÓN Y DISEÑO DE UN CLÚSTER TIPO HPC VIRTUALIZADO

CONSTRUCCIÓN Y DISEÑO DE UN CLÚSTER TIPO HPC VIRTUALIZADO CONSTRUCCIÓN Y DISEÑO DE UN CLÚSTER TIPO HPC VIRTUALIZADO Juan Alberto Antonio Velazquez, IPN-CIDETEC, México D.F. Tecnológico de Estudios Superiores de Jocotitlán jantoniov0801@ipn.mx Jesús Antonio Alvarez

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

UT04 01 Máquinas virtuales (introducción)

UT04 01 Máquinas virtuales (introducción) UT04 01 Máquinas virtuales (introducción) n) Módulo: Sistemas Informáticos Virtualización Qué es una máquina m virtual? Terminología Características, ventajas e inconvenientes de las MVs Productos: VMWare,

Más detalles

Maquinas Virtuales. Prof.: Huerta Molina Samuel. Cuellar Sánchez Jesús. Pinto López Luis Tonatiuh. Hecho por Jesús y Luis. 1

Maquinas Virtuales. Prof.: Huerta Molina Samuel. Cuellar Sánchez Jesús. Pinto López Luis Tonatiuh. Hecho por Jesús y Luis. 1 ESTRUCTURA Y PROGRAMACIÓN DE COMPUTADORAS. Grupo: 08. Prof.: Huerta Molina Samuel. Maquinas Virtuales Cuellar Sánchez Jesús. Pinto López Luis Tonatiuh. Hecho por Jesús y Luis. 1 Conceptos Básicos Sobre

Más detalles

Maquinas virtuales Conceptos Básicos

Maquinas virtuales Conceptos Básicos Jimenez Zamudio Eduardo Aplicaciones de redes de computadoras 13 de septiembre de 2014 Maquinas virtuales Conceptos Básicos Concepto Básicamente, es un equipo dentro de un equipo, implementado en el software.

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

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

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

Maquinas Virtuales - VirtualBox. Talleres ETSIIT 2010-2011 Oficina de Software Libre Universidad de Granada José Antonio Serrano García

Maquinas Virtuales - VirtualBox. Talleres ETSIIT 2010-2011 Oficina de Software Libre Universidad de Granada José Antonio Serrano García Maquinas Virtuales - VirtualBox Talleres ETSIIT 2010-2011 Oficina de Software Libre Universidad de Granada José Antonio Serrano García Maquina virtual En informática una máquina virtual es un software

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

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

6 INSTALA, ADMINISTRA, SECURIZA Y VIRTUALIZA ENTORNOS LINUX RA-MA

6 INSTALA, ADMINISTRA, SECURIZA Y VIRTUALIZA ENTORNOS LINUX RA-MA ÍNDICE PRÓLOGO...13 CAPÍTULO 1. LINUX: UNA VISIÓN GENERAL...15 1.1 QUÉ APORTA ESTE LIBRO SOBRE LINUX...16 1.2 CÓMO COMIENZA LINUX...17 1.3 SISTEMA OPERATIVO LINUX...17 1.4 GNU LINUX, LINUX GNU O LINUX...18

Más detalles

Taller de Software Libre

Taller de Software Libre Taller de Software Libre Maquina Virtual En informática una máquina virtual es un software que emula a un ordenador y puede ejecutar programas como si fuese un ordenador real. Este software en un principio

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

Oracle VM VirtualBox.

Oracle VM VirtualBox. UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACIÓN CICLO: I-2015 GUIA DE LABORATORIO #1 Nombre de la Practica: VirtualBox y CentOS Lugar: Laboratorio de Redes Tiempo Estimado:

Más detalles

Virtualización. Administración Avanzada de Sistemas Operativos. Eduardo Iniesta Soto (einiesta@ditec.um.es)

Virtualización. Administración Avanzada de Sistemas Operativos. Eduardo Iniesta Soto (einiesta@ditec.um.es) Virtualización Eduardo Iniesta Soto (einiesta@ditec.um.es) CONTENIDOS Objetivos Requisitos Limitaciones Técnicas Virtualización total Paravirtualización 2011-2012 (2/30) CONTENIDOS Casos particulares VMware

Más detalles

Software para virtualización

Software para virtualización Software para virtualización Open Source y Software libre Luis Jesús Pellicer Magallón Raúl Piracés Alastuey Qué es? Cuando hablamos de software para virtualización de sistemas operativos, hacemos referencia

Más detalles

10. Programación de centralitas privadas

10. Programación de centralitas privadas 10. Programación de centralitas privadas Programación de la centralita. Virtualización. - Hipervisor. - Tipos de máquinas virtuales. - Creación de una máquina virtual. Instalación y programación de centralitas

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

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

TP6 Sistemas Legados

TP6 Sistemas Legados UNIVERSIDAD DE ZARAGOZA TP6 Sistemas Legados Virtualización de Sistemas Diego Gálvez - 649892 Diego Grande 594100 Tabla de contenido Introducción... 2 Virtualización... 2 Conceptos fundamentales... 3 Modelos

Más detalles

Talleres de Aplicaciones 2011-2012 Maquinas Virtuales

Talleres de Aplicaciones 2011-2012 Maquinas Virtuales Talleres de Aplicaciones 2011-2012 Universidad de Granada - Oficina de Software Libre 13 de diciembre de 2011 Parte I Introducción 1 Definición 2 Varias VMware Windows Virtual PC VirtualBox 3 Descarga

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

UNIVERSIDAD DE LOS ANDES FACULTAD DE CIENCIAS ECONOMICAS Y SOCIALES. PROF. ISRAEL J. RAMIREZ israel@ula.ve

UNIVERSIDAD DE LOS ANDES FACULTAD DE CIENCIAS ECONOMICAS Y SOCIALES. PROF. ISRAEL J. RAMIREZ israel@ula.ve UNIVERSIDAD DE LOS ANDES FACULTAD DE CIENCIAS ECONOMICAS Y SOCIALES PROF. ISRAEL J. RAMIREZ israel@ula.ve UNIVERSIDAD DE LOS ANDES FACULTAD DE CIENCIAS ECONOMICAS Y SOCIALES LOS SISTEMAS OPERATIVOS 1.-

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

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

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

Virtualización. Betzabeth González Jhon Villamizar

Virtualización. Betzabeth González Jhon Villamizar Virtualización Betzabeth González Jhon Villamizar PUNTOS A TRATAR Virtualización Hipervisor Tipos de Hipervisor La Virtualización de plataforma Tipos de Virtualización de plataforma Tipos de Virtualización

Más detalles

Sistemas Operativos. Curso 2013 Virtualización

Sistemas Operativos. Curso 2013 Virtualización Sistemas Operativos Curso 2013 Virtualización Agenda Introducción Requerimientos para la virtualización Virtualización de CPU Vritualización de la memoria Virtualización de la E/S Sistemas Operativos Modernos,

Más detalles

VIRTUALIZACIÓN DE SERVIDORES

VIRTUALIZACIÓN DE SERVIDORES VIRTUALIZACIÓN DE SERVIDORES Ing. Pablo Ramirez A. Historia de la Virtualización. Que es la Virtualización (Conceptos y Términos). Tipos de Virtualización. Ventajas y Desventajas de la Virtualización.

Más detalles

SITEMAS OPERATIVOS PROFESORA ELIZABETH ARIAS INFORMATICA SECCION F 3 SEMESTRE YORDAN ALEXANDER MARIN CUBIDES

SITEMAS OPERATIVOS PROFESORA ELIZABETH ARIAS INFORMATICA SECCION F 3 SEMESTRE YORDAN ALEXANDER MARIN CUBIDES REPUBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PORDER POPULAR PARA LA EDUCACION INSTITUTO UNIVERSITARIO POLITECNICO SANTIAGO MARIÑO EXTENSION MARACAIBO SITEMAS OPERATIVOS PROFESORA ELIZABETH ARIAS INFORMATICA

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

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

CONFIGURACIONES DE ALTA DISPONIBILIDAD

CONFIGURACIONES DE ALTA DISPONIBILIDAD Capítulo 8. CONFIGURACIONES DE ALTA DISPONIBILIDAD Autor: Índice de contenidos 8.1. SOLUCIONES DE ALTA DISPONIBILIDAD 8.2. RAID 8.3. BALANCEO DE CARGA 8.4. VIRTUALIZACIÓN 8.1. SOLUCIONES DE ALTA DISPONIBILIDAD

Más detalles

Tema 3. Introducción a la configuración de un PC

Tema 3. Introducción a la configuración de un PC Tema 3. Introducción a la configuración de un PC Laboratorio de estructura de Computadores I. T. Informática de Gestión / Sistemas Curso 2008-2009 Transparencia: 2 / 17 Índice El PC: periféricos y conexiones:

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

Formación a distancia de EXPERTO EN HARDWARE DE SISTEMAS PC

Formación a distancia de EXPERTO EN HARDWARE DE SISTEMAS PC Instituto de Formación Profesional CBTech Estudie desde su hogar y obtenga un certificado universitario Formación a distancia de EXPERTO EN HARDWARE DE SISTEMAS PC 1 Unidad I Técnico en Reparación de PC

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

Tema 3: Virtualización

Tema 3: Virtualización Tema 3: Virtualización Contenido TEMA 3: VIRTUALIZACIÓN...12 1. INTRODUCCIÓN...2 2. CONCEPTOS. ANFITRIÓN Y HUÉSPED...2 3. REQUISITOS HARDWARE...4 4. PARAVIRTUALIZACIÓN Y EXTENSIÓN DE LOS MICROPROCESADORES...4

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

ADMINISTRACIÓN DE LOS ACTIVOS DE HARDWARE Y SOFTWARE

ADMINISTRACIÓN DE LOS ACTIVOS DE HARDWARE Y SOFTWARE 5 TEMA ADMINISTRACIÓN DE LOS ACTIVOS DE HARDWARE Y SOFTWARE 5.1 OBJETIVOS Qué capacidad de procesamiento y de almacenamiento necesita nuestra organización para realizar sus transacciones de información

Más detalles

TEMA 1: SISTEMAS INFORMÁTICOS. Parte 3: sistemas operativos

TEMA 1: SISTEMAS INFORMÁTICOS. Parte 3: sistemas operativos TEMA 1: SISTEMAS INFORMÁTICOS Parte 3: sistemas operativos Qué vamos a ver? Qué tipos de sistemas operativos existen principalmente Las distintas formas de instalar un sistema operativo En qué consiste

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

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

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

TIPOS DE REDES COMPUTACIONALES

TIPOS DE REDES COMPUTACIONALES TIPOS DE REDES COMPUTACIONALES Cuando existe la necesidad de conectar permanentemente dos o tres puntos entre sí, podemos utilizar tres formas distintas. Pensemos una Empresa con una Central y dos sucursales,

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

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

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

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

Software Libre / Código Abierto Programa de contenidos

Software Libre / Código Abierto Programa de contenidos Software Libre / Código Abierto Programa de contenidos Resumen Se presenta a continuación la organización de un curso de cincuenta horas cuyo fin es dar a conocer la base ideológica que sostiene a los

Más detalles

Conferencias Técnicas

Conferencias Técnicas Conferencias Técnicas HP & Capacitación IT 04 de Agosto, 2011 Virtualización en Entornos UNIX Conceptos de virtualización. Solaris Zones. Consolidación de Servidores. HP c-class enclosures. Gabriel Bertone

Más detalles

Guía 1 - Instalación Opensuse 13.X

Guía 1 - Instalación Opensuse 13.X Guía 1 - Instalación Opensuse 13.X Contenido de la guía 1. CONCEPTOS GENERALES DE LAS MÁQUINAS VIRTUALES DE ESCRITORIO... 2 2. CONFIGURACIÓN DEL VIRTUALIZADOR DE ESCRITORIO... 6 Paso 1 Inicie Virtual Box...

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

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

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

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

IES Abyla. Departamento de Informática. Sistemas Operativos

IES Abyla. Departamento de Informática. Sistemas Operativos Sistemas Operativos Definición y funciones básicas El Sistema Operativo es el software que permite y simplifica el uso del ordenador (hardware). Sus funciones principales son: Arrancar el ordenador y controlar

Más detalles

Si están trabajando en un computador real, lo primero que deben colocar los discos de manera SCSI, como mínimo deben de ser dos.

Si están trabajando en un computador real, lo primero que deben colocar los discos de manera SCSI, como mínimo deben de ser dos. Rocío Alt. Abreu Ortiz 2009-3393 RAID 0 en Debian RAID (del inglés Redundant Array of Independent Disks, «conjunto redundante de discos independientes») hace referencia a un sistema de almacenamiento que

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

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

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO

TUTORIAL: COMPUTACIÓN de ALTO DESEMPEÑO TUTORIAL : COMPUTACIÓN de ALTO DESEMPEÑO SERGIO NESMACHNOW Centro de Cálculo, Instituto de Computación FACULTAD DE INGENIERÍA, UNIVERSIDAD DE LA REPÚBLICA, URUGUAY CONTENIDO Introducción Computadores paralelos

Más detalles

Router, Enrutador o Encaminador

Router, Enrutador o Encaminador Router, Enrutador o Encaminador Un router es un tipo especial de computador. Cuenta con los mismos componentes básicos que un PC estándar de escritorio. Tiene una CPU, memoria, bus de sistema y distintas

Más detalles

Capítulo 1 Introducción a la Computación

Capítulo 1 Introducción a la Computación Capítulo 1 Introducción a la Computación 1 MEMORIA PRINCIPAL (RAM) DISPOSITIVOS DE ENTRADA (Teclado, Ratón, etc) C P U DISPOSITIVOS DE SALIDA (Monitor, Impresora, etc.) ALMACENAMIENTO (Memoria Secundaria:

Más detalles

Red Hat Enterprise Virtualization 3.0 Instrucciones e información importante sobre la instalación

Red Hat Enterprise Virtualization 3.0 Instrucciones e información importante sobre la instalación Red Hat Enterprise Virtualization 3.0 Instrucciones e información importante sobre la instalación Notas, precauciones y avisos NOTA: Una NOTA proporciona información importante que le ayuda a utilizar

Más detalles

VMware vs. Xen. Comparación de dos esquemas populares de virtualización. Héctor López Guillermo Veitia

VMware vs. Xen. Comparación de dos esquemas populares de virtualización. Héctor López Guillermo Veitia VMware vs. Xen Comparación de dos esquemas populares de virtualización Héctor López Guillermo Veitia Puntos a tratar: Introducción Tipos de virtualización Programas útiles para virtualizar sistemas de

Más detalles

INTRODUCCIÓN. Que es un sistema operativo? - Es un programa. - Funciona como intermediario entre el usuario y los programas y el hardware

INTRODUCCIÓN. Que es un sistema operativo? - Es un programa. - Funciona como intermediario entre el usuario y los programas y el hardware INTRODUCCIÓN Que es un sistema operativo? - Es un programa. - Funciona como intermediario entre el usuario y los programas y el hardware INTRODUCCIÓN METAS: Brindar un entorno para que los usuarios puedan

Más detalles

Manual de Usuario. Ayuda para la aplicación de Dedicados de tu Panel

Manual de Usuario. Ayuda para la aplicación de Dedicados de tu Panel Manual de Usuario Ayuda para la aplicación de Dedicados de tu Panel Servidores Dedicados Servidores Dedicados Manual de usuario - Panel de Control 3 Qué diferencia hay entre un Servidor Dedicado Administrado

Más detalles

Virtualización de Escritorios NComputing

Virtualización de Escritorios NComputing Virtualización de Escritorios NComputing Resumen Introducción Tendencia de los mercados informáticos INFORME EJECUTIVO Todos estamos acostumbrados al modelo de las PCs, que permiten a cada usuario tener

Más detalles

Gestión de Recursos y Seguridad en Redes Virtualización de Servidores, VMware. Derman Zepeda Vega. dzepeda@unan.edu.ni

Gestión de Recursos y Seguridad en Redes Virtualización de Servidores, VMware. Derman Zepeda Vega. dzepeda@unan.edu.ni Gestión de Recursos y Seguridad en Redes Virtualización de Servidores, VMware Derman Zepeda Vega dzepeda@unan.edu.ni 1 Agenda Introducción a virtualización Instalación de Vmware Server Administración,

Más detalles

TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN PROFESOR: MSC. P. Norma Maya Pérez SISTEMAS OPERATIVOS

TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN PROFESOR: MSC. P. Norma Maya Pérez SISTEMAS OPERATIVOS TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN PROFESOR: MSC. P. Norma Maya Pérez SISTEMAS OPERATIVOS I. Fundamentos del sistema operativo. OBJETIVO: El alumno seleccionará un sistema operativo de acuerdo

Más detalles

Redes de Nueva Generación Área de Ingeniería Telemática. Virtualización

Redes de Nueva Generación Área de Ingeniería Telemática. Virtualización Virtualización Virtualización: Ejemplos Virtualización? La idea básica de virtualización del host es bastante conocida Una capa software intermedia hace creer a un sistema operativo que tiene hardware

Más detalles

Virtualización. (y Software Libre) Lic. Marcelo Fernández - UNLuX. fernandezm@gmail.com - http://marcelosoft.blogspot.com

Virtualización. (y Software Libre) Lic. Marcelo Fernández - UNLuX. fernandezm@gmail.com - http://marcelosoft.blogspot.com Virtualización (y Software Libre) Lic. Marcelo Fernández - UNLuX fernandezm@gmail.com - http://marcelosoft.blogspot.com Publicado bajo Licencia Creative Commons - BY, excepto las imágenes y logos tomadas

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

Aplicaciones Informáticas

Aplicaciones Informáticas Aplicaciones Informáticas Profesor: Eduardo Zúñiga Sistema de aprobación: 2 parciales y recuperatorio Promoción: Sumar 14 o más puntos entre los dos parciales y no sacar menos de 6 en ninguno de los dos

Más detalles

Monitoreo de Nubes Privadas

Monitoreo de Nubes Privadas Monitoreo de Nubes Privadas Whitepaper Autores: Dirk Paessler, CEO de Paessler AG Gerald Schoch, Editor Técnico de Paessler AG Publicado: Mayo 2011 Ultima Actualización: Febrero 2015 PÁGINA 1 DE 7 Contenido

Más detalles

Clustering y Grid Computing

Clustering y Grid Computing Clustering y Grid Computing Sánchez Enriquez, Heider Ysaías heider_esencia@hotmail.com Domingo, 30 de septiembre de 2007 Escuela de Informática Universidad Nacional de Trujillo SISTEMAS DISTRIBUIDOS 1

Más detalles

Trabajo TP6 Sistemas Legados

Trabajo TP6 Sistemas Legados Trabajo TP6 Sistemas Legados VIRTUALIZACIÓN DE SISTEMAS A TRAVÉS DE APLICACIONES DE PAGO Diego Gálvez - 649892 Diego Grande - 594100 Qué es la virtualización? Técnica empleada sobre las características

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

VIRTUALIZACIÓN Virtualización es la creación de una versión virtual en base a un sistema anfitrión o host de: o Un sistema operativo. o Un servidor. o Un dispositivo de almacenamiento. orecursos de la

Más detalles

Entorno ubicuo basado en virtualización para la docencia práctica. Entorno ubicuo basado en virtualización para la docencia práctica.

Entorno ubicuo basado en virtualización para la docencia práctica. Entorno ubicuo basado en virtualización para la docencia práctica. Adolfo Albaladejo Blázquez Entorno ubicuo basado en virtualización para la docencia práctica Una sugerencia: sea cual sea la distribución por la que se acabe optando, rogaría que fuera accesible a todos

Más detalles

Efectos de los dispositivos de Capa 2 sobre el flujo de datos 7.5.1 Segmentación de la LAN Ethernet

Efectos de los dispositivos de Capa 2 sobre el flujo de datos 7.5.1 Segmentación de la LAN Ethernet 7.5 Efectos de los dispositivos de Capa 2 sobre el flujo de datos 7.5.1 Segmentación de la LAN Ethernet 1 2 3 3 4 Hay dos motivos fundamentales para dividir una LAN en segmentos. El primer motivo es aislar

Más detalles

Capítulo 2 Red UDLA-P

Capítulo 2 Red UDLA-P Capítulo 2 Red UDLA-P 2.1 Breve descripción La red de la UDLAP nos brinda muchos servicios, aunque no por ella misma, pero si es el medio para que estos servicios trabajen. Un claro ejemplo de estos servicios

Más detalles

Guía de seguridad de Oracle Hardware Management Pack

Guía de seguridad de Oracle Hardware Management Pack Guía de seguridad de Oracle Hardware Management Pack Referencia: E39908 01 Marzo de 2013 Copyright 2012, Oracle y/o sus filiales. Todos los derechos reservados. Este software y la documentación relacionada

Más detalles

Pontificia Universidad Católica del Ecuador

Pontificia Universidad Católica del Ecuador 1. DATOS INFORMATIVOS: MATERIA O MÓDULO: INTRODUCCIÓN A LA COMPUTACIÓN CÓDIGO: 12710 CARRERA: NIVEL: Ingeniería de Sistemas preparatorio No. CRÉDITOS: 4 CRÉDITOS TEORÍA: 4 CRÉDITOS PRÁCTICA: 0 SEMESTRE

Más detalles

FUNDAMENTOS DE COMPUTACIÓN PARA CIENTÍFICOS. CNCA Abril 2013

FUNDAMENTOS DE COMPUTACIÓN PARA CIENTÍFICOS. CNCA Abril 2013 FUNDAMENTOS DE COMPUTACIÓN PARA CIENTÍFICOS CNCA Abril 2013 6. COMPUTACIÓN DE ALTO RENDIMIENTO Ricardo Román DEFINICIÓN High Performance Computing - Computación de Alto Rendimiento Técnicas, investigación

Más detalles

Instalación de XEN... 2 1 Información de XEN... 2 1.1 Qué es XEN?... 2 1.2 Componentes de XEN:... 2

Instalación de XEN... 2 1 Información de XEN... 2 1.1 Qué es XEN?... 2 1.2 Componentes de XEN:... 2 Guía Instalación de XEN en opensuse Contenido de la guía Instalación de XEN... 2 1 Información de XEN... 2 1.1 Qué es XEN?... 2 1.2 Componentes de XEN:... 2 2 Instalación del kernel de XEN para Opensuse

Más detalles

Primeros pasos con VMware Fusion

Primeros pasos con VMware Fusion VMware Fusion para Mac OS X Este documento admite la versión de todos los productos enumerados y admite todas las versiones posteriores hasta que el documento se reemplace por una edición nueva. Para buscar

Más detalles

U.D.1. INSTALACIÓN DE SISTEMAS OPERATIVOS LIBRES E PROPIETARIOS

U.D.1. INSTALACIÓN DE SISTEMAS OPERATIVOS LIBRES E PROPIETARIOS U.D.1. INSTALACIÓN DE SISTEMAS OPERATIVOS LIBRES E PROPIETARIOS Objetivos Analizar la compatibilidad hardware del sistema informático. Reconocer los tipos de instalación: típica, personalizada... y las

Más detalles

Evaluación de Software de Base

Evaluación de Software de Base Evaluación de Software de Base Sistemas Operativos Es un conjunto de software de sistema que controla como las aplicaciones acceden al hardware (Dispositivos de entrada / salida y administración de memoria)

Más detalles

Sistemas Operativos de red (NOS).

Sistemas Operativos de red (NOS). Sistemas Operativos 4 tareas principales: Proporcionar interfaz: de comando o gráfica. Administrar los dispositivos de hardware en la computadora. Administrar y mantener los sistemas de archivo de disco.

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

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

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

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

Virtualización. Carlo López 04-37189. Armando Mejía 05-38524. Andrés Sánchez 05-38916

Virtualización. Carlo López 04-37189. Armando Mejía 05-38524. Andrés Sánchez 05-38916 Virtualización Carlo López 04-37189 Armando Mejía 05-38524 Andrés Sánchez 05-38916 Índice Conceptos de Virtualización (breve introducción) Ejemplos de implementación: VMware Xen VirtualBox Conceptos de

Más detalles

ESTÁNDAR DE COMPETENCIA

ESTÁNDAR DE COMPETENCIA I.- Datos Generales Código EC0388 Título: Proporcionar soporte informático básico Propósito del Estándar de Competencia Servir como referente para la evaluación y certificación de las personas que se desempeñan

Más detalles

Sunde Professional Ultra thin client

Sunde Professional Ultra thin client Sunde Professional Ultra thin client Qué es SUNDE? SUNDE pone a su alcance los beneficios de una PC de última generación sin los problemas de mantenimiento y obsolescencia que estas presentan. Al estar

Más detalles

Al concluir la práctica el alumno conocerá las definiciones, los elementos y funciones de los Sistemas Operativos.

Al concluir la práctica el alumno conocerá las definiciones, los elementos y funciones de los Sistemas Operativos. Sistemas Operativos Práctica 2 Alumno: Grupo: Fecha: Instituto Politécnico Nacional Secretaria Académica Dirección de Educación Superior ESIME Culhuacan Ingeniería en Computación Fundamentos de Programación

Más detalles