
¿Qué proveedor proporciona el mejor rendimiento en máquinas virtuales? Hemos hecho una comparativa entre Microsoft Azure, Amazon Web Services (AWS) y Jotelulu.
En Jotelulu lo cuestionamos todo, y estamos obsesionados con ofrecer el mejor servicio, lo que impulsa una estrategia de innovación y mejora continua. Con esta estrategia en mente, estamos continuamente comprobando las funcionalidades y optimizaciones del resto de actores del sector cloud lo que en muchos casos desemboca en análisis y comparativas como la plasmada en este blog post.
Dicho esto, se van a exponer los datos obtenidos generados en un test de rendimiento de máquinas virtuales Microsoft Windows Server en distintos proveedores de servicios cloud:
NOTA: dejamos el detalle y análisis de cada una de las herramientas utilizadas en un Anexo al final del presente artículo (Tras las conclusiones).
Tras presentar las bases del análisis y la forma en que vamos a trabajar, veamos los resultados en cada una de las pruebas realizadas.
Para las pruebas de transferencias de datos en discos se va a usar AS SSD Benchmark que nos permitirá comprobar el rendimiento tanto de lectura como de escritura del disco, tanto de modo secuencial como aleatoria.
Se han realizado distintas pruebas con distintos volúmenes de datos:
Y dentro de cada uno de ellos se han medido, tal como se ha comentado previamente:
En base a todos estos datos, se establece un “score” (puntuación) para lectura, escritura y media.
En nuestro caso, valoraremos especialmente el “score” ya que nos da esa puntuación media en base a cada uno de estos puntos tratados.
Los resultados en todas las pruebas con distintos volúmenes de datos son muy similares, presentando ligeras variaciones, pero comportándose de igual forma en líneas generales, motivo por el que vamos a exponer únicamente los datos de las pruebas de 5GB, para así ahorrar tiempo al lector.
Al igual que en el resto de pruebas, en la comparativa de funcionamiento con transferencias de 5 GB, podríamos describir un ranking en el que Jotelulu (1) sale ganando en rendimiento con 339 puntos de media frente a los 173 de Azure (2) y los 15 de AWS (3).
Imagen. Comparativa de transferencia de discos para 5GB
Si ponemos foco en la imagen donde se pueden ver las medidas tomadas, se podrá observar que los tiempos de acceso de Jotelulu son cinco veces más rápidos (x5) a los de Azure y doce veces superiores (x2) a los de AWS, que ha dado unos rendimientos muy pobres en todas las pruebas de movimiento de datos.
5GB | Tipo de Prueba | JOTELULU | AWS | AZURE | Unidades |
Read | Seq | 540,23 | 41,51 | 199,17 | MB/s |
4K | 11,46 | 0,7 | 27,53 | MB/s | |
4K-64Thrd | 74,84 | 0,69 | 31,63 | MB/s | |
Acc.Time | 0,411 | 5,583 | 2,125 | ms | |
Score | 140 | 6 | 79 | pts | |
Write | Seq | 449,45 | 46,25 | 164,02 | MB/s |
4K | 11,66 | 0,7 | 9,95 | MB/s | |
4K-64Thrd | 71,01 | 0,7 | 15,6 | MB/s | |
Acc.Time | 1,692 | 27,932 | 1,883 | ms | |
Score | 128 | 6 | 42 | pts | |
Media | Score | 339 | 15 | 173 | pts |
Tabla. Comparativa de transferencia de discos para 5 GB
Tal como se ha comentado previamente, para comprobar el rendimiento del procesador para Jotelulu, AWS y Azure, haremos uso de CineBench, que arroja resultados bastante reveladores.
Imagen. Comparativa de valores de ejecución de CineBench para máquinas virtuales
En la ejecución de las pruebas en formato CPU (Multicore), o lo que es lo mismo, haciendo uso de todo el procesador con la potencia de todos sus núcleos, se observa que Jotelulu da el mejor rendimiento (1), seguido por AWS (2) y por último por Azure (3).
JOTELULU | AWS | AZURE | |
CPU (Multi Core) | 2497 pts | 2445 pts | 1892 pts |
Tabla. Comparativa de rendimiento CPU (Multi Core)
Repitiendo la prueba en formato monoprocesador (Single Core) cambia radicalmente la situación. En este caso, Azure (1) muestra una clara ventaja sobre Jotelulu (2) y AWS (3) queda en tercera posición.
JOTELULU | AWS | AZURE | |
CPU (Single Core) | 664 pts | 640 pts | 746 pts |
Tabla. Comparativa de rendimiento CPU (Single Core)
Sin embargo, podemos ver que en lo que respecta al factor MP Ratio, que es una relación entre el rendimiento de los modos monoprocesador y multiprocesador, AWS (1) queda posicionado ligeramente por delante de Jotelulu (2) y que Azure (3) queda muy por detrás de ambos.
JOTELULU | AWS | AZURE | |
MP Ratio | 3.76 x | 3.82 x | 2.54 x |
Tabla. Comparativa de MP Ratio
En base a esto, se puede decir que AWS da un rendimiento ligeramente superior a Jotelulu en la media, pero que Jotelulu da un mejor rendimiento en operativas que impliquen hacer un uso completo de las funcionalidades de la CPU.
El siguiente punto es medir la velocidad de movimiento de datos a través de la red, para ello se usará la herramienta LAN Speed Test que permite medir la transferencia a través de distintos medios (discos duros, USB y tarjetas de red).
NOTA: La aplicación de test permite trabajar con mínimos, máximos y medias, siendo esta última la que se ha tomado para este benchmarking.
Para la segunda prueba se ha decidido hacer el movimiento de datos a una unidad de disco remoto (Unidad Z) ubicada fuera de las tres infraestructuras para así evitar que se falseen los datos.
En la prueba se escriben datos aleatorios en un fichero de 2 GB para posteriormente leer los datos, tomando mediciones de las tasas de transferencia.
Imagen. Comparativa de transferencia de 2GB en unidad remota
En esta nueva tanda de pruebas, Jotelulu no ha salido tan bien parada, ya que para la escritura Azure (1) ha quedado la primera, ocupando Jotelulu (2) el segundo lugar y por detrás AWS (3).
Al realizar la prueba de lectura, Azure (1) ha quedado la primera, AWS (2) la segunda y Jotelulu (3) la tercera, generándose una diferencia de aproximadamente un 10% entre la primera y la segunda y de un 30% entre la primera y la tercera.
Dato medido | JOTELULU | AWS | AZURE | |
Writing (Upload) | Packet Size (Bytes) | 2000000000 | 2000000000 | 2000000000 |
Time / Packet | 224,0857 | 402,0651 | 176,4262 | |
Time to complete | 224,0857 | 402,0651 | 176,4262 | |
Bytes per second | 8925157 | 4974319 | 11336185 | |
Bits per second | 71401254 | 39794551 | 90689478 | |
Mbps (Default) | 71,4 | 39,79 | 90,69 | |
Reading (Download) | Packet Size (Bytes) | 2000000000 | 2000000000 | 2000000000 |
Time / Packet | 9,3373 | 6,4145 | 5,6562 | |
Time to complete | 9,3373 | 6,4145 | 5,6562 | |
Bytes per second | 214194911 | 311791746 | 353591410 | |
Bits per second | 1713559288 | 2494333965 | 2828731282 | |
Mbps (Default) | 1713,56 | 2494,33 | 2828,73 |
Tabla. Comparativa de transferencia de 2 GB en unidad remota
En este pequeño artículo, se ha hecho la presentación de una serie de herramientas dedicadas al benchmarking, que en nuestro caso se han seleccionado para poder testear algunos de los puntos clave de nuestras máquinas virtuales, confrontando los datos con los resultantes de las mismas pruebas en las plataformas cloud de Microsoft Azure y Amazon Web Services (AWS).
Es importante señalar que, para estas pruebas, se han desplegado máquinas virtuales con las mismas características en los tres proveedores de servicios cloud para de esta manera jugar en igualdad de condiciones.
Así mismo, se debe decir que se han observado mediciones diferentes en cada una de las ejecuciones de las herramientas de benchmarking por lo que se decidió ejecutarlas varias veces y seleccionar la medición más cercana a la media de todos los valores, para de esta manera, ser lo más fiel posible a la verdad.
Tras observar los resultados de todas las pruebas se puede determinar que los servidores de Jotelulu quedan bien posicionados, presentando unos resultados bastante correctos.
Jotelulu queda muy por encima en transferencia de datos en disco, quedando AWS en mal lugar y presentando, al menos en nuestras pruebas, algunos problemas de comportamiento. Respecto a la operación de la CPU, hay que decir que Jotelulu queda primero en operación Multi Core, pero en segundo puesto en comportamiento Single Core, con un desempeño total ligeramente inferior a Azure. Por último, en el caso de la transferencia de datos en red, Jotelulu queda por detrás de Azure con aproximadamente un 15% de rendimiento inferior a este.
Esperamos que este análisis arroje algo de luz y os oriente a la hora de llevar a cabo vuestros propios análisis.
**Dejamos aquí la descripción y detalle de las herramientas utilizadas para el análisis.
AS SSD Benchmark permite probar el rendimiento tanto de lectura como de escritura del disco tanto de modo secuencial como aleatoria, y además lo hace bloqueando el uso de la memoria caché, lo que permite saber a ciencia cierta las tasas de IOP que proporciona el disco.
Para realizar estas mediciones, AS SSD Benchmark escribe y lee un archivo de un tamaño dado (partiendo de 1 GB) con bloques de 4K elegidos al azar. Para ello realiza las pruebas utilizando uno o sesenta y cuatro hilos, realizando mediciones mientras lo realiza y obteniendo de esta manera el tiempo de acceso al SSD.
Imagen. Ejecución de AS SSD Benchmark en una instancia de AWS
En la batería de pruebas adicionales, se realiza la copia de algunos archivos grandes, así como muchos archivos pequeños; una combinación de tamaños de archivo, así como la compresión de datos para, de esta manera, examinar el comportamiento de la unidad.
El programa realiza varias pasadas:
En base a todos estos datos, se establece un “score” (puntuación) para lectura, escritura y media.
Las mediciones se pueden realizar con movimientos de datos de:
NOTA: Si el lector quiere hacer estas pruebas sobre máquinas, se deberá tener en cuenta que pueden tomar mucho tiempo.
CineBench es uno de los programas de referencia para la evaluación de las capacidades de hardware de todo tipo de equipos. Este software se suele usar en benchmarking de sistemas para establecer comparativas, por ejemplo, durante la escritura de reportes de revistas y webs especializadas, así como por los administradores para la optimización de sus sistemas o la evaluación de nuevos sistemas antes de la compra.
Imagen. Ejecución de CineBench sobre una VM
Mediante una serie de tests, este software explota las capacidades generales de la CPU haciendo tareas de renderizado, permitiendo tomar mediciones y aprovechando las capacidades de múltiples núcleos de CPU, así como de las funciones de procesador modernas.
El software básicamente pone a prueba la CPU mediante la producción de una sola imagen utilizando las últimas técnicas de trazado. Con este trabajo, el programa analiza cómo está realizando la CPU la administración de los hilos y la memoria.
CineBench permite trabajar en modo multiprocesador y monoprocesador, y en estas pruebas realizamos ambos métodos para obtener unas conclusiones más extensas, que incluirán el “MP Ratio”, una relación del rendimiento en modo multiprocesador y monoprocesador.
La herramienta LAN Speed Test es una herramienta diseñada para medir la transferencia a través de distintos medios como pueden ser los discos duros, las unidades USB y las tarjetas de red LAN, tanto cableada como inalámbrica.
Para realizar estas mediciones, se debe seleccionar una carpeta de destino, que puede ser local o remota, siendo necesario que sea remota (como por ejemplo una carpeta compartida) para realizar las pruebas de red.
Cuando se ha seleccionado el destino, el programa crea un archivo en la memoria. Luego lo transfiere en ambos sentidos, anulando además el uso de la caché del sistema operativo para evitar el falseo de datos.
Imagen. Ejecución de test Lan sobre una VM
En origen, estuvimos valorando el uso de otras herramientas de Benchmarking como Sandra, pero finalmente tuvimos que descartar esa idea porque las herramientas de Benchmarking suelen incluir baterías de pruebas que estresan la máquina, lo que hace que los sistemas hipervisores de los proveedores cloud desconectaran las instancias para evitar problemas.