Cloud_Benchmark

Report
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
aplicables al análisis de rendimiento de
soluciones disponibles de “Cloud Computing”,
para poder evaluar el rendimiento comparado
de cada una de ellas.
Seleccionar el conjunto de algoritmos más
adecuado, ajustarlo y probarlo para evaluar de
un manera objetiva las soluciones de
“Computación en la Nube” de diferentes
proveedores del mercado, logrando una visión
más clara y objetiva de las capacidades de
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
1
1
BenchmarkSet
1
CloudServlet
*
-benchs : BenchmarkSet
-aSet : Benchmark
-aViewer : ResultViewer
+addBenchmark()
+runSet()
+getResults()
1
Benchmark
-startTime
-endTime
-log
-runs
+execute()
+getLog()
+getName()
+getResults()
+getTotalRuns()
+log()
+resetLog()
+run()
+setStartTime()
+setEndTime()
Dhrystone
Whetstone
1
ResultViewer
-aBench : Benchmark
-average
+getAverage()
+setBenchmark()
+viewLogs()
+viewResults()
+getMax()
Linpack
-loops
-cycles
-size
+execute()
+getName()
+execute()
+getName()
+execute()
+getName()
DummyBench
+getName()
+setAverageTime()
ResultHtmlViewer
-drawBar()
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

Resultados de los
benchmarks ejecutados
en Google App Engine:
Whetstone
Ejecuciones
100
Tiempo Total
30329 msegs
Tiempo Promedio
303,29 msegs
Tiempo Máximo
Dhrystone
369 msegs
Linpack
Ejecuciones
100
Ejecuciones
100
Tiempo Total
13557 msegs
Tiempo Total
19249 msegs
Tiempo Promedio
135,57 msegs
Tiempo Promedio
192,49 msegs
Tiempo Máximo
170 msegs
Tiempo Máximo
246 msegs
Ejecución: Microsoft Azure

Resultados de los
benchmarks ejecutados
en Microsoft Azure:
Whetstone
Ejecuciones
100
Tiempo Total
88602 msegs
Tiempo Promedio
886,02 msegs
Tiempo Máximo
Dhrystone
999 msegs
Linpack
Ejecuciones
100
Ejecuciones
100
Tiempo Total
80412 msegs
Tiempo Total
17328 msegs
Tiempo Promedio
804,12 msegs
Tiempo Promedio
173,28 msegs
Tiempo Máximo
890 msegs
Tiempo Máximo
296 msegs
Ejecución: Amazon EC2

Resultados de los
benchmarks ejecutados
en Amazon EC2:
Whetstone
Ejecuciones
100
Tiempo Total
60590 msegs
Tiempo Promedio
605,9 msegs
Tiempo Máximo
Dhrystone
713 msegs
Linpack
Ejecuciones
100
Ejecuciones
100
Tiempo Total
30143 msegs
Tiempo Total
41280 msegs
Tiempo Promedio
301,43 msegs
Tiempo Promedio
412,8 msegs
Tiempo Máximo
349 msegs
Tiempo Máximo
682 msegs
Evaluación de las pruebas
Whetstone (t)
Promedio
Máximo
Dhrystone (t)
Promedio
Máximo
Linpack (t)
Promedio
Máximo
Google App Engine
Microsoft Azure
Amazon EC2
303,29
886,02
605,9
369
999
713
Google App Engine
Microsoft Azure
Amazon EC2
135,57
804,12
301,43
170
890
349
Google App Engine
Microsoft Azure
Amazon EC2
192,49
173,28
412,8
246
296
682
Análisis de resultados (I)
Whetstone
1200
1000
Msecs
800
Google App Engine
600
Microsoft Azure
Amazon EC2
400
200
0
1
12
23
34
45
56
Ejecución
67
78
89
100
Análisis de resultados (II)
Dhrystone
1000
900
800
700
Msecs
600
Google App Engine
500
Microsoft Azure
Amazon EC2
400
300
200
100
0
1
12
23
34
45
56
Ejecución
67
78
89
100
Análisis de resultados (III)
Linpack
800
700
600
Msecs
500
Google App Engine
400
Microsoft Azure
Amazon EC2
300
200
100
0
1
11
21
31
41
51
61
Ejecución
71
81
91
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
Hindú
Tailandés
Chino Tradicional
Thank You
Inglés
Ruso
Gracias
Obrigado
Español
Portugués
Árabe
Danke
Alemán
Grazie
Italiano
Tamil
Merci
Francés
Chino Simplificado
Japonés
Coreano
Preguntas
¿?

similar documents