Download Cloud_Benchmark
Document related concepts
no text concepts found
Transcript
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 ¿?