Este documento describe el diseño e implementación de un sistema de computación distribuida utilizando los recursos informáticos disponibles en la ESPOL. El sistema divide problemas grandes en unidades de trabajo más pequeñas y las distribuye entre las computadoras de la red para procesarlas de manera paralela. Se implementó el middleware BOINC para administrar el sistema distribuido y una aplicación de descifrado RSA para probar su funcionamiento y evaluar el rendimiento.
Computación distribuida y su aplicación tecnológic
7984 (1)
1. “COMPUTACIÓN DISTRIBUIDA Y SU
APLICACIÓN TECNOLÓGICA PARA
INCREMENTAR LA EFICIENCIA DEL
USO DE RECURSOS
INFORMÁTICOS EN RED DE LA
ESPOL”
Luis Vargas V.
Gonzalo Luzardo M.
2. Agenda
• Antecedentes.
• Problema y solución.
• Posibles alternativas.
• Diseño.
• Implementación.
• Pruebas y resultados.
• Demostración.
• Conclusiones y recomendaciones.
4. Antecedentes
• Existen proyectos de investigación que
deben analizar gran cantidad de datos;
renderización de imágenes, simulación de
fenómenos naturales, redes neuronales,
son algunos ejemplos.
• Necesitan computadoras de gran
capacidad de procesamiento.
5. Antecedentes
• LA IBM BLUE
GENE/L , utilizada
para aplicaciones de
hidrodinámica,
química cuántica,
dinámica molecular,
astronomía e
Su construcción tuvo un costo
investigación aproximado de 150 millones de
espacial, y modelado dólares.
climático.
6. Antecedentes
• Existen otras
alternativas que
permiten unir el poder
de procesamiento de
un conjunto de
computadoras
disponibles en una red.
• Este nuevo paradigma
se llama Computación
Distribuida.
7. Computación Distribuida
• La computación distribuida, es un nuevo modelo
para resolver problemas de computación masiva
utilizando un gran número de computadoras
conectadas entre sí mediante una red.
• Dividir el trabajo entre varios computadoras,
logrando de esta forma mejorar los tiempos de
respuesta de procesamiento.
8. Terminologías
• Aceleración (Speedup).- Relaciona los
tiempos de ejecución de algoritmos
secuenciales vs. Paralelos
• Eficiencia.- Relación entre la aceleración
de una ejecución paralela y el número de
procesadores
• Escalabilidad.- Si al aumentar el tamaño
del problema, el desempeño por
procesador se mantiene.
10. Problema actual en la ESPOL
• Las unidades no disponen de una plataforma
que permita el análisis extensivo de datos.
• Esto limita el desarrollo de nuevos proyectos
que necesitan procesar una gran cantidad de
información en un tiempo razonable.
• Simulación, procesamiento de imágenes,
biotecnología, pronóstico del tiempo, modelado
financiero, inteligencia de negocios, son algunas
aplicaciones que requieren de gran poder de
procesamiento.
11. ¿Qué nos ofrece la ESPOL?
• La ESPOL cuenta actualmente con una gran
cantidad de recursos informáticos
(computadoras).
• La mayor parte realizan tareas de aplicaciones
sencillas tales como procesadores de texto,
hojas de cálculo, navegadores, correo, entre
otras.
• Algunas de estas computadoras se encuentran
inactivas una cantidad considerable del tiempo.
• En su mayoría se encuentran conectadas en
red.
12. Solución
• En base a esta realidad, nace la idea de
unir estos recursos informáticos, para
formar una “Computadora Virtual” de gran
capacidad de procesamiento.
13. Objetivos
• Generar un sistema de computación distribuida
que use los ciclos ociosos de las computadoras
en ESPOL.
• Proveer las herramientas necesarias, que
permitan explotar un sistema distribuido para su
uso en la investigación y el desarrollo.
• Desarrollar una aplicación que explote las
capacidades del supercomputador y demuestre
sus posibles usos en la investigación.
14. Características del sistema
• Dividir un problema en tareas más pequeñas
y distribuirlas entre un grupo de
computadoras.
• Independiente de la plataforma.
• Tolerante a fallos.
• Seguro.
• Procesamiento controlado.
• Ser adaptable en el desarrollo de diferentes
tipos de aplicaciones distribuidas.
• Proveer de herramientas que faciliten la
creación de aplicaciones distribuidas.
16. Hardware
• Computadoras de alto rendimiento – más
de 2 millones dólares, 148 megaflops.
• Supercomputadoras – más de 100
millones dólares, 280.600 gigaflops.
• Clusters de alto rendimiento – económico
y escalable, 1.2 millones dólares, 350
gigaflops
– Clusters dedicados y no dedicados
(computación zombi).
17. Middleware
• PVM
– Explota la heterogeneidad natural de las
computadoras.
– Es portable.
– Detalles de paralelización de forma explícita.
– No es configurable por usuario.
• MPI
– Estándar definido para sistemas MPPs inicialmente.
– Es portable.
– Nodos de cómputo no pueden ser agregados o
quitados de manera dinámica.
– No es interoperable.
18. BOINC
• Comparte poder computacional con
muchas aplicaciones.
• Distribuye tareas entre los nodos del
cluster.
• Arquitectura heterogénea.
• Seguro, tolerante a fallos, escalable.
• Configurable para usuarios.
• Código abierto.
19. Selección de las alternativas más apropiadas
• Cluster de alto rendimiento
– Económico, usa computadoras disponibles.
– No es dedicado.
– Fácil de construir.
• Middleware BOINC
– Alta escalabilidad.
– Independiente de la plataforma.
– Administra más de una aplicación distribuida.
– Permite una fácil configuración de nodos.
21. Diseño Lógico
SERVIDOR
CLIENTE
1
APLICACIÓN
DISTRIBUIDA APLICACIÓN
DISTRIBUIDA
TRABAJO A REALIZAR
APLICACIÓN
1 1
1 DISTRIBUIDA 1 2 3
TRABAJO
RESULTADO
A REALIZAR
RESULTADOS OBTENIDOS
1
22. Diseño Lógico
• Servidor
– Divide el problema en unidades de trabajo (más pequeñas).
– Distribuye estas unidades entre un grupo de computadores.
– Administra el procesamiento.
– Analiza los resultados.
• Cliente
– Descarga aplicaciones distribuidas y unidades de trabajo.
– Procesa las unidades de trabajo mediante la aplicación
distribuida.
– Muestra detalles del procesamiento.
– Envía los resultados al servidor.
23. Diseño físico
SUPERCOMPUTADOR VIRTUAL
• El servidor se
conecta a la red del
CLIENTE CLIENTE CLIENTE
SERVIDOR
CTI, posee una IP
CLIENTE CLIENTE
pública y un dominio
CLIENTE CLIENTE registrado.
RED DEL CTI
• Clientes se conectan
RED DE LA ESPOL
CLIENTE CLIENTE al servidor a través
de la red del CTI, del
backbone de la
ESPOL o Internet.
CLIENTE
Internet
24. Diseño del servidor
• Base de datos.
• Servidor de tareas.
• Servidor de datos.
• Servidor Web.
• Utilidades y
programas.
• Componentes propios
de una aplicación.
25. Base de datos
• Almacena información relevante del
sistema tales como clientes (nodos),
unidades de trabajo, resultados,
aplicaciones, entre otros.
26. Servidor de tareas
• Interactúa de manera directa con el cliente (primera comunicación).
• Asigna trabajo al cliente.
• Intercambia mensajes con el servidor de tareas, a través del
protocolo HTTP, usando archivos XML como mensajes.
– Una descripción de trabajo que debe ser procesado.
– La ubicación del servidor de datos, en donde se almacenan los archivos de entrada y salida
del procesamiento.
27. Servidor de datos
• Almacena
tanto los
archivos
entrada y
archivos de
salida de la
aplicación
distribuida.
28. Componentes de una aplicación
• Son aquellos programas que ejecutan
acciones de una aplicación distribuida en
particular.
– Generar trabajo de cómputo.
– Verificar y validar los resultados de cómputo.
– Asimilar.
– Verificar.
29. Utilidades y programas
• Componentes propios del sistema que nos
ayudan a administrar el sistema en su totalidad.
• Suministrar controles para inicializar, detener,
reiniciar y verificar el estatus del servidor.
• Suministrar aplicaciones para facilitar la
incorporación de aplicaciones distribuidas al
sistema y archivos relacionados a ésta.
• Crear trabajo para ser procesado.
• Borrar los archivos que no son necesarios para
prevenir errores por insuficiencia de espacio en
el disco.
31. Servidor Web
• Interfase Web para el administrador.
• interfase Web para los usuarios
32. Diseño del cliente
• Encargado, entre otras cosas, de
procesar las unidades de trabajo, y
retornar al servidor los resultados
computacionales obtenidos.
33. Núcleo del cliente
• Encargado de la comunicación con el servidor y llevar el
control sobre el procesamiento que se está ejecutando
en la estación cliente.
• Obtiene datos específicos de la estación de trabajo para
ser enviados al servidor.
– Obtener las características generales.
– Rendimiento del CPU.
– Recursos disponibles.
• Inicia la aplicación distribuida para procesar trabajo, o la
reinicia si fue suspendida.
• Suspende la aplicación distribuida.
• Inicia la transferencia de archivos.
• Elimina archivos si es necesario.
34. Núcleo del cliente
• Pide trabajo
para procesar.
• Descarga las
unidades de
trabajo.
• Envía los
resultados.
• Notifica el
procesamiento.
• Pide más
trabajo
35. Aplicación distribuida
• Encargada de
procesar las
unidades de trabajo
provenientes del
servidor de tareas.
• Utiliza los archivos
de entrada.
• Genera archivos de
salida.
36. Aplicación distribuida
• Módulo de
procesamiento.
Procesa las unidades
de trabajo y retornar un
resultado
computacional.
• Módulo de
presentación gráfica.
Muestra información
gráfica relevante al
procesamiento.
37. Interfaz gráfica
• Encargada de hacer reiteradas llamadas
al núcleo cliente para comenzar su
ejecución, y llevar control sobre las
acciones que éste se encuentre
realizando en la estación de trabajo.
• Instalada en el cliente.
39. Servidor
Procesador Intel Pentium 4 2.80GHz Socket 478 Bus
800 MHz
Placa base Intel D875 PBZLK P4 RAID 800 MHz,
LAN Gigabit
Memoria RAM 1024 MB DDR PC 400 KINGSTON
Disco Duro 120 GB Serial ATA 7200 RPM
Video NVIDIA GFORCE 5200 128 MB
CDROM CDR 52x
Periféricos Unidad Floppy 3 1!2” ,
Mouse óptico,
Teclado Multimedia
(a) Servidor (b) Vista interna del servidor.
Monitor Samsung 15”
PRECIO 1355 USD
40. Instalación y configuración del servidor
• Sistema operativo Fedora Core 2.
• Agente de transporte de correo Sendmail.
• Servidor Web Apache II.
• PHP.
• Base de datos MySQL, PHPMySQL.
• Python, PyXML.
• Configuración del Firewall, permitir conexiones con el Internet a
través de los puertos: 22 para ssh, 80 para htttp y 443 para https;
conexiones locales con los puertos 3306 para MySQL y 21 para
sendmail.
• IP pública 200.10.150.5 y dominio supercomp.cti.espol.edu.ec.
• Configurado para que salga la Internet a través de la red del CTI.
41. Instalación y configuración de BOINC
• Versión 3.04.
• Archivos fuentes
compilados y luego
instalados en el
servidor.
• Se modificaron los
archivos util.inc y
countries.inc de
la carpeta html.
• Conectado a la red
del CTI.
42. Instalación y configuración de los clientes
• Sistema cliente BOINC
versión 3.05.
• El cliente fue instalado en
cada una de las cinco
computadoras cliente de
prueba, tres máquinas de
ellas pertenecientes al Centro
de Tecnologías de
Información (CTI) y dos
máquinas particulares
conectadas al Internet.
• Registro de clientes al
sistema distribuido.
• Configuración de clientes para
procesar las unidades de
trabajo usando los ciclos
ociosos.
44. Objetivos de la implementación
• Probar el funcionamiento del sistema.
• Evaluar el rendimiento y escalabilidad de
nuestro sistema distribuido.
Esta aplicación distribuida, además de ser paralelizable,
debía buscar la solución a un problema
de gran desafío computacional, el cual una computadora
común no lo pueda realizar o le tome demasiado tiempo.
Descifrado (desencriptación) de claves RSA
45. n
Descifrado de claves RSA
• Obtener una clave pública a través de una clave
privada.
• Basado en la dificultad de factorizar un valor
extremadamente grande (64, 128 dígitos, por
ejemplo), generado por la multiplicación de dos
números primos grandes.
• Según la Criba de Eratóstenes, los factores de
un número n, para un número n = p x q
• tenemos que o bien p< n o bien q < n
46. n
Solución
• El objetivo general consiste en dividir raíz
de n en rangos mucho más pequeños y
manejables en términos de
procesamiento, los cuales serán
asignados a los clientes.
• A cada cliente se le asignará un rango de
búsqueda diferente.
• El cliente realizará divisiones sucesivas
sólo dentro de su rango asignado.
47. Generador de archivos de entrada
• Denominado rsasplitter.
• Divide raíz de n en rangos y genera los archivos de
entrada para la aplicación.
• Estos archivos de entrada serán convertidos en
unidades de trabajo.
n: Representa el valor n de la clave pública, un numero de N dígitos.
n
ninicial: Rango desde donde se comienza a hacer las divisiones
sucesivas.
nfinal: Rango hasta donde se realizan las divisiones sucesivas.
ninicial
nfinal
48. Aplicación distribuida
• Denominada rsadecrypt.
• Lee un archivo de entrada.
• Busca un factor primo en el rango especificado en el archivo de
entrada, usando el método de divisiones sucesivas (fuerza bruta).
• Se detiene si encontró el factor primo o si termino de buscar dentro
del rango.
• Genera un resultado computacional.
nfinal nfinal: Hasta que numero llegó el cliente a procesar.
estado: El estado del resultado, 1 si logró encontrar la clave privada,
0 si no encontró.
estado
49. Aplicación distribuida – Parte gráfica
• Muestra
datos
relevantes
del
procesamient
o que le
cliente esta
realizando.
• Mostrado
como
protector de
pantalla
52. Pruebas de funcionamiento
• Aplicación distribuida para descifrado de
claves RSA, para encontrar los factores
primos a partir del valor N de la clave
pública.
• Se crearon los archivos de entrada para la
aplicación distribuida -- rsasplitter
53. Datos para N = 12 dígitos
• Valor de N = 700933509247.
• Factor primo encontrado= 760531.
• Unidades de Trabajo creadas = 5.
Rango #1: Rango #2: Rango #3:
Desde: 1 Desde: 167444 Desde: 334887
Hasta: 167443 Hasta: 334886 Hasta: 502329
Rango #4: Rango #5:
Desde: 502330 Desde: 669773
Hasta: 669772 Hasta: 837217
54. Datos para N = 14 dígitos
• Valor de N = 37095613506571.
• Factor primo encontrado = 5393053.
• Unidades de Trabajo creadas = 5.
Rango #1: Rango #2: Rango #3:
Desde: 1 Desde: 1218124 Desde: 2436247
Hasta: 1218123 Hasta: 2436246 Hasta: 3654369
Rango #4: Rango #5:
Desde: 3654370 Desde: 4872493
Hasta: 4872492 Hasta: 6090616
55. Pruebas de funcionamiento
• Se crean las plantillas
tanto para las unidades
de trabajo, como para
los resultados.
• Se observa como cada
cliente se comunicó con
el servidor de tareas,
descargó las unidades
de trabajo e inició el
procesamiento.
56. Resultados
• Se utilizó como parámetro el tiempo (en
minutos) necesario para la obtención del
factor primo del número N.
• Se incrementó de 1 a 5 el número de
computadoras clientes para la distribución
del procesamiento.
57. Resultados para N = 12 dígitos
Número de Tiempo en
Computadoras Num/seg minutos
1 181 70
2 333 38
3 576 22
4 667 19
5 3168 4
80
70 70
60
Tiempo(min)
50
40 38
30 22
20 19
10
4
0
1 2 3 4 5
Computadoras
58. Resultados para N = 14 dígitos
Número de Tiempo en
Computadoras Num/seg minutos
1 345 260
2 642 140
3 1123 80
4 1284 70
5 4730 19
300
250 260
Tiempo(min)
200
150 140
100 80
70
50
19
0
1 2 3 4 5
Computadoras
59. Resultados
• Los resultados reflejan la alta escalabilidad
del sistema de procesamiento distribuido.
• Al incrementar el número de computadoras,
se disminuye el tiempo en obtener el
resultado.
• Tomar en consideración, que el número de
unidades a ser creadas debe ser mayor o
igual al número de clientes en el sistema.
60. No distribuido
N=12 N=14
Computadora
Num/seg T (min) Num/seg T (min)
1 186 68 360 249
2 186 68 393 258
3 218 64 413 230
4 232 60 457 222
5 101 138 201 505
Promedio 192 80 374 292
La ejecución se realizó en 5 distintas computadoras
independientes
64. Conclusiones
• Es una alternativa efectiva dentro de la
ESPOL, con costos de instalación y
operación bajos, y resultados bastante
aceptables.
• Puede superar en poder de procesamiento a
sistemas de súper cómputo convencionales.
• Es altamente escalable.
• Protector de pantalla con muchos gráficos,
hace que disminuya su capacidad de
procesamiento.
65. Conclusiones
• La aceleración también depende del
tiempo de comunicación con las
estaciones.
• Se pueden aprovechar de manera
efectiva los ciclos ociosos de las
computadoras, logrando contribuir en la
búsqueda de soluciones a grandes
problemas de procesamiento.
66. Recomendaciones
• Promocionar a nivel interno y externo el
servicio de computación distribuida
desarrollado.
• Brindar cursos o talleres de la
computación distribuida a los
investigadores y profesores de la ESPOL.
• Promover a la comunidad científica de la
ESPOL e investigadores externos, el
desarrollo de aplicaciones distribuidas
67. Recomendaciones
• Incorporar dentro de la materia “Sistemas
Distribuidos” el concepto de Computación
Voluntaria y desarrollar proyectos
utilizando la plataforma BOINC.
• Proponer la creación a futuro de un centro
de alto rendimiento computacional.