Una de las dudas que más plantea la migración de nuestras aplicaciones a máquinas virtuales en Azure es el rendimiento.
Y para eliminar las principales dudas he realizado un pequeño estudio sobre las prestaciones de estas máquinas virtuales, llevándome una sorpresa que -supongo- compartiras conmigo.
El contexto y la prueba
La primera dificultad es encontrar un aplicación de benchmark que me pueda valer para las máquinas virtuales. Lo cual no es trivial.
Estas máquinas no se plasman de forma «normal«, y la aplicación no consigue detectar el tipo de tarjeta gráfica sobre la que poder correr los test de GPU.
También el procesador es raruno, la memoria, y hasta los discos duros son de marca irreconocible.
De perdidos al río, he escogido la aplicación Performance Test de la casa PassMark porque… leí en algún sitio que la habían usado para hacer pruebas similares a las que quiero hacer, y porque el diseño gráfico de los resultados es limpio y bonito.
No es el mejor motivo del mundo, pero me vale para comparar casi todo. Y las pruebas no están nada mal.
Resultados
A continuación pongo los resultados ordenados por la máquina con menos puntuación a la que más ha conseguido; y finalmente muestro el resultado de la máquina de control con las que he comparado a todas.
NA. Las estadísticas están escritas dentro del texto alternativo de las imágenes para que puedas ser accesibles.
D8s_V3 – 8 nucleos – 32Gb Ram – SSD Standar de 127 Gb. – 295€/mes
Curiosamente, esta es mi máquina de desarrollo; la que utilizo para las formaciones; y corre Docker, Service Fabric y el SDK de Azure al completo, además de tener varios Visual Studio y decenas de aplicaciones. Y es la peor, la más lenta y la de peor prestaciones/coste.
B20ms – 20 núcleos – 80Gb RAM – SSD Premium 127Gb – 615€/mes
Voy a subir la apuesta subiendo el número de núcleos, la velocidad del disco duro, pero conteniendo los costes. Donde más le gano es en procesador. Lo malo es que hay que recordar que las series B funcionan en un modo ráfaga, por lo cual esta potencia realmente la voy a tener durante un tiempo muy limitado.
D64s_V3 – 64 núcleos – 256Gb RAM – SSD PRemium 127Gb. – 2166€/mes
Compruebo cuanto mejora mi máquina de desarrollo si la llevo al límite que me permite mi suscripción. Observando que el incremento en cálculo es muy importante, seguido por la velocidad del disco duro al pasar a un SKU Premium.
F16s_V2 – 16 nucleos – 32Gb RAM – SSD Premium 127Gb – 502 €
Me voy a probar otra familia de máquinas optimizadas para computación y cálculos. Y parece que es así, porque con 16 núcleos consigue casi la mitad de puntuación que la máquina anterior que tenía 64 núcleos. Lamentáblemente las prisas y los límites naturales de las suscripciones, me han impedido poder probar con una F64. Curioso el incremento en el rendimiento en 2D, que es el que hace que la puntuación global supere a la máquina anterior.
NV12 – 12 núcleos GPU – 112Gb RAM – SSD Standard 127Gb – 1681€/mes
Salto hacia las máquinas de hipercomputación, y he seleccionado una serie N, que utiliza la GPU de Nvidia para hacer cálculos, en la búsqueda de una mayor prestación de los gráficos, como ha sido. Sin embargo el mayor impacto está en la capacidad de cálculo con apenas 12 núcleos (el menor número de la comparativa a excepción de la máquina de control) y en un brillante comportamiento de un disco duro que no debiera ser tan rápido ¿?
E20ds_V4 – 20 núcleos – 160Gb RAM – SSD Premium 127Gb. – 1065€/mes
Y hete aquí la máquina virtual más cara que puedo configurar. Una serie E pensada para trabajo en memoria y que realmente sobresale en la velocidad del SSD Premium; tanto en memoria como en CPU también mejora en comparación con las de tamaño similar.
Como se puede observar, estoy haciendo el panolí, porque podría pasar de la peor a la mejor máquina que puedo configurar con mis límites actuales en la suscripción casi por el mismo coste mensual.
Otra solución es pedir un aumento de núcleos en las series F, porque es la que más potencia parece que dá junto con las series N y sus GPU, y eso me saldría aún más barato.
Una bofetada con la realidad
¿Y cual es la máquina de control que he utilizado para comparar las máquinas virtuales en Azure?
Pues mi máquina de Gamer de serie media:
- AMD Ryzen 3600 con 6 núcleos
- 32Gb de RAM a 3200 en Dual Channel
- 1 SSD de 256 Gb. (el más barato que encontré). Bueno, hay más, pero eso no los cuento.
- RTX2070, aunque podemos descartar las pruebas 3D del todo porque ninguna VM lo ha soportado.
- Un coste total de unos 1400€ tirando por lo alto y contando todos los SSD.
Y el resultado hace que pensar…
Como se puede observar, para conseguir la misma potencia en Azure me tengo que gastar cada mes casi el coste de una máquina nueva!!
Tres cosas me han llamado poderosamente la atención:
- Mis SSD son leentos en comparación con lo que me pueden ofrecer las VM en Azure, y eso que no he probado las familias que están pensadas específicamente para almacenamiento.
- Las interminables capas de abstracción dejan la computación en la nube al nivel del barro. Que mi máquina on-premise solo tiene 6 nucleos y es un solo procesador, y se pasa por la piedra a máquinas con más del doble.
- Es obvio que mi RTX va a ser mucho más rápida que una tarjeta gráfica emulada en una máquina virtual… pero es que el día a día está basado en los gráficos 2D.
Otra cosa es que tengo que tener MUY en cuenta lo que me ha enseñado esta comparativa cuando diseñe arquitectura.
Es crítico hacer un piloto con la aplicación que vamos a desplegar en la VM, que no solo vale la teoría; hay que pegarse una paliza buscando el mejor equilibro prestaciones/coste.
Y, como conclusión, creo que necesitamos que el Cloud ofrezca más capacidades por cada euro de coste… he de reconocer que me ha defraudado un poquito, a mi que soy un apasionado.
Espero que sea de utilidad.
2 comentarios
No creo que usar esa métrica para comparar «servidores» con «ordenadores personales» diga mucho.
Te recomiendo conectar 1000 usuarios a tu portátil personal a ver que tal rinde y cuanto te gastas al año de conexión para dar buen servicio. Y que explicación das a los usuarios si se te estropea el disco sin tener un sistema de replicación
Tienes toda la razón, te recomiendo hacer las pruebas y compartir los resultados que es muy sencillico (tres horitas de nada).
Por otro lado estas pruebas -muy simples y en un número demasiado pequeño- comparan la capacidad de computo y velocidad de los componentes para tener una referencia de lo que las capas de abstracción penalizan el rendimiento del Cloud.
Indudablemente la nube es imbatible en aspectos de escalabilidad, disponibilidad, confiabilidad, capacidad de cómputo, conectividad, etc. Pero no es nada de eso el objetivo de esta mínima prueba, que me causaba tanta curiosidad y que tantas veces me han preguntado mis alumnos.