Upload
frascuelo-tovar
View
217
Download
0
Embed Size (px)
Citation preview
I CONGRESO ARGENTINO DE TECNOLOGIA DE LA INFORMACION Y COMUNICACIONES
“Análisis de Rendimiento para Soluciones de Cloud Computing”
Autor: Mg. Ing. Marcelo Damián Parrino
21 / 10 / 2010
Proposición Investigar algunos de los posibles algoritmos Investigar algunos de los posibles algoritmos
aplicables al análisis de rendimiento de aplicables al análisis de rendimiento de soluciones disponibles de “Cloud Computing”, soluciones disponibles de “Cloud Computing”, para poder evaluar el rendimiento comparado para poder evaluar el rendimiento comparado de cada una de ellas.de cada una de ellas.
Seleccionar el conjunto de algoritmos más Seleccionar el conjunto de algoritmos más adecuado, ajustarlo y probarlo para evaluar de adecuado, ajustarlo y probarlo para evaluar de un manera objetiva las soluciones de un manera objetiva las soluciones de “Computación en la Nube” de diferentes “Computación en la Nube” de diferentes proveedores del mercado, logrando una visión proveedores del mercado, logrando una visión más clara y objetiva de las capacidades de más clara y objetiva de las capacidades de computo provistas por cada uno de ellos.computo provistas por cada uno de ellos.
Investigación - Objetivos
Investigar puntualmente algunos de los algoritmos disponibles junto con sus posibles optimizaciones y mejoras, que permitan obtener datos objetivos para el análisis de rendimiento de las soluciones de “Cloud Computing”
Desarrollar una aplicación de software que implemente las pruebas de rendimiento planteadas, registrando los resultados para su posterior análisis y comparación
Evaluar y analizar los resultados obtenidos a partir de la implementación de las pruebas. El análisis de los resultados permitirá evaluar el desempeño y rendimiento objetivo de las soluciones disponibles de “Cloud Computing”
Computación en la Nube
Es un paradigma que permite ofrecer servicios de computación a través de Internet. Todo se ofrece como servicio
Los usuarios pueden acceder a los servicios disponibles en la nube sin la necesidad de gestionar los recursos que aquellos servicios utilizan
Ofrece una infraestructura de TI capaz de escalar prácticamente de manera ilimitada para cubrir la demanda de los usuarios
Computación en la Nube
Google App Engine
Permite ejecutar aplicaciones Web en la infraestructura de Google
Admite aplicaciones escritas en varios lenguajes de programación (Java, Python, Ruby)
Ofrece un servicio de almacenamiento de datos distribuido que incluye un motor de búsqueda y transacciones
Se puede utilizar de forma totalmente gratuita
Google App Engine
Microsoft Windows Azure
Sistema operativo basado en Cloud Services Brinda funciones que proporcionan soporte
para el desarrollo, el alojamiento de servicios remotos y la gestión del propio sistema, todo ello en la nube
Arquitectura dividida en capas Capa 0: Global Foundational Services (GFS) Capa 1: Gestión y coordinación de N máquinas Capa 2: Servicios para la creación de aplicaciones Capa 3: Aplicaciones alojadas dentro de Azure
Microsoft Windows Azure
Amazon Web Services (EC2)
AWS provee capacidad computacional virtual con posibilidad de crecimiento en la nube
Amazon EC2 permite computar dentro de la nube
Amazon S3 permite almacenar dentro de la nube
El servicio es elástico: brinda la posibilidad de incrementar o reducir la capacidad de las instancias en cuestión de minutos
Amazon Web Services
Benchmarks: Whetstone
Diseñado por Brian Wichmann Primer benchmark sintético, basado en el
análisis de 949 programas científicos Primera implementación Fortran, 1972 Mide la velocidad de ejecución de una
variedad de instrucciones de punto flotante en datos escalares o vectoriales
Intenta estimar la velocidad de la CPU con la Unidad de Punto Flotante (FPU)
Benchmarks: Dhrystone
Diseñado por Reinkol Weicker (1984) Benchmark sintético representativo de
sistemas que manejan enteros Contiene muchas instrucciones simples,
llamadas a procedimiento y condicionales, y pocas de coma flotante y bucles
Intenta medir la velocidad del sistema en cuanto a rendimiento no numérico
Benchmarks: Linpack
Desarrollado por Jack Dongarra (1976) Propósito original: resolver sistemas de
ecuaciones Uso muy intensivo de las operaciones de
coma flotante Mayor parte del tiempo ejecutando BLAS
(Subrutinas de Álgebra Lineal Básica) Describe la performance para resolver un
problema de matrices generales
Desarrollo: Framework
+execute()+getLog()+getName()+getResults()+getTotalRuns()+log()+resetLog()+run()+setStartTime()+setEndTime()
-startTime-endTime-log-runs
Benchmark
+execute()+getName()
-cycles
Whetstone
+execute()+getName()
-size
Linpack
+getName()+setAverageTime()
DummyBench
+execute()+getName()
-loops
Dhrystone
1
* +addBenchmark()+runSet()+getResults()
-aSet : Benchmark-aViewer : ResultViewer
BenchmarkSet
+getAverage()+setBenchmark()+viewLogs()+viewResults()+getMax()
-aBench : Benchmark-average
ResultViewer
-drawBar()
ResultHtmlViewer
1
1
-benchs : BenchmarkSet
CloudServlet
1
1
Desarrollo: Google App Engine
Herramientas de desarrollo Java y de estándares API comunes
SDK de Google App Engine cuenta con un plugin para el entorno de desarrollo Eclipse, permitiendo crear, probar y subir aplicaciones de App Engine desde el propio IDE
Incluye una aplicación de servidor Web que emula todos los servicios de App Engine desde el equipo local
Desarrollo: Google App Engine
Desarrollo: Microsoft Azure
SDK para Visual Studio de Windows Azure proporciona un entorno simulado para el desarrollo y prueba de servicios en el equipo local Development storage Development fabric
Azure provee soporte para diferentes lenguajes de la familia .NET Se decidió utilizar el lenguaje C# dada su
similitud con Java
Desarrollo: Microsoft Azure
Desarrollo: Amazon EC2
AWS Toolkit incluye un plugin de código abierto para Eclipse que facilita el desarrollo, la depuración e implementación de aplicaciones Java utilizando Amazon Web Services
Se decidió utilizar una Java Web Starter AMI (“Amazon Machine Image”) provista por AWS Fedora Core 8 de 32 bits, Java JDK 7, Tomcat
5.5, Apache 2.2.9 y MySQL 5.0.
Desarrollo: Amazon EC2
Ejecución: Google App Engine
Whetstone
Ejecuciones 100
Tiempo Total 30329 msegs
Tiempo Promedio 303,29 msegs
Tiempo Máximo 369 msegs
Dhrystone
Ejecuciones 100
Tiempo Total 13557 msegs
Tiempo Promedio 135,57 msegs
Tiempo Máximo 170 msegs
Linpack
Ejecuciones 100
Tiempo Total 19249 msegs
Tiempo Promedio 192,49 msegs
Tiempo Máximo 246 msegs
Resultados de los benchmarks ejecutados en Google App Engine:
Ejecución: Microsoft Azure
Whetstone
Ejecuciones 100
Tiempo Total 88602 msegs
Tiempo Promedio 886,02 msegs
Tiempo Máximo 999 msegs
Dhrystone
Ejecuciones 100
Tiempo Total 80412 msegs
Tiempo Promedio 804,12 msegs
Tiempo Máximo 890 msegs
Linpack
Ejecuciones 100
Tiempo Total 17328 msegs
Tiempo Promedio 173,28 msegs
Tiempo Máximo 296 msegs
Resultados de los benchmarks ejecutados en Microsoft Azure:
Ejecución: Amazon EC2
Whetstone
Ejecuciones 100
Tiempo Total 60590 msegs
Tiempo Promedio 605,9 msegs
Tiempo Máximo 713 msegs
Dhrystone
Ejecuciones 100
Tiempo Total 30143 msegs
Tiempo Promedio 301,43 msegs
Tiempo Máximo 349 msegs
Linpack
Ejecuciones 100
Tiempo Total 41280 msegs
Tiempo Promedio 412,8 msegs
Tiempo Máximo 682 msegs
Resultados de los benchmarks ejecutados en Amazon EC2:
Evaluación de las pruebas
Whetstone (t) Google App Engine Microsoft Azure Amazon EC2
Promedio 303,29 886,02 605,9
Máximo 369 999 713
Dhrystone (t) Google App Engine Microsoft Azure Amazon EC2
Promedio 135,57 804,12 301,43
Máximo 170 890 349
Linpack (t) Google App Engine Microsoft Azure Amazon EC2
Promedio 192,49 173,28 412,8
Máximo 246 296 682
Análisis de resultados (I)Whetstone
0
200
400
600
800
1000
1200
1 12 23 34 45 56 67 78 89 100
Ejecución
Msecs Google App Engine
Microsoft Azure
Amazon EC2
Análisis de resultados (II)Dhrystone
0
100
200
300
400
500
600
700
800
900
1000
1 12 23 34 45 56 67 78 89 100
Ejecución
Msecs
Google App Engine
Microsoft Azure
Amazon EC2
Análisis de resultados (III)Linpack
0
100
200
300
400
500
600
700
800
1 11 21 31 41 51 61 71 81 91
Ejecución
Msecs Google App Engine
Microsoft Azure
Amazon EC2
Evaluación de resultados
Google App Engine fue claramente superior a las otras dos alternativas (Amazon EC2 y Microsoft Azure) en Whetstone y Dhrystone
En el benchmark Linpack Google App Engine fue mínimamente superado en ocasiones por Microsoft Azure
Google App Engine es la mejor alternativa de cómputo en la nube mínimos tiempos de ejecución mejores tiempos máximos mejores tiempos promedios
Conclusión Se definió un conjunto de tres pruebas
ampliamente difundidas (Whetstone, Dhrystone y Linpack)
Se desarrolló un Framework de pruebas que simplificara el desarrollo de las pruebas de software planteadas
El Framework se puede aplicar a cualquier solución de Cloud Computing que permita la ejecución de un “Web Service”
Útil como puntapié inicial para la evaluación y comparación del poder computacional en soluciones de Cloud Computing
Conclusión Se realizó la evaluación de los resultados
obtenidos y se pudo comprobar las diferencias de rendimiento computacional de cada una de las “nubes”
La solución más costosa en el ámbito monetario no asegura la mejor performance a nivel de procesamiento para una aplicación en particular
No debe aplicarse para la selección de un proveedor si el núcleo de la aplicación que se ejecutará en la Nube no tiene un componente crítico de procesamiento computacional
Futuras Líneas de Investigación Extensión del Framework para soportar benchmarks
y pruebas relacionadas con el almacenamiento de datos en la nube
Optimización e incorporación de otros benchmarks reconocidos para obtener resultados mas detallados
Desarrollo de pruebas inéditas que utilicen llamadas a funciones específicas de las APIs disponibles para cada nube computacional
Implementación del Framework en otros lenguajes de programación, permitiendo comparar el rendimiento del conjunto de pruebas en una misma nube, pero en un lenguaje e intérprete diferente
Gracias
MerciGrazie
Thank You
Obrigado
Danke
Japonés
Español
Francés
Ruso
Alemán
Italiano
Inglés
Portugués
Árabe
Chino Tradicional
Chino Simplificado
Hindú
Tamil
Tailandés
Coreano
Preguntas
¿ ?