Blog de Amazon Web Services (AWS)

Comparando el desempeño de las instancias Amazon EC2: AWS Graviton2, Intel X64 y AMD EPYC

Por Javier Huerta, Well-Architected Solutions Architect de AWS

Introducción

Como hemos visto en anteriores entregas,  el  Well-Architected Framework ayuda a nuestros clientes a crear diseños basados en las mejores prácticas, utilizando un conjunto de pilares como base para la revisión.  Estos son: Excelencia Operacional, Seguridad, Confiabilidad, Eficiencia en el Desempeño, y Optimización de Costos.

Una característica fundamental de una revisión de Well-Architected es el hallazgo de áreas de oportunidad en las cargas de trabajo de nuestros clientes, los cuales dan lugar a mejoras focalizadas en las áreas relacionadas con los pilares de nuestras Mejores Prácticas, a través de nuestros principios de liderazgo: Pasión por el Cliente y Ganar la Confianza de los Demás.

Ahora, es importante reconocer que uno de los pilares más solicitados es aún el de la Optimización de Costos. El día de hoy nos enfocaremos a una de sus prácticas más recurridas: El uso de recursos de TI eficientes en costo. Y, que mejor que platicar acerca de un desarrollo 100% de AWS: el procesador AWS Graviton2, comparándolo con arquitecturas más conocidas en el mercado: Intel Xeon, y AMD EPYC.

 

Conoce AWS Graviton2

Los procesadores AWS Graviton están construidos a la medida por Amazon Web Services, utilizando núcleos de 64 bits Arm Neoverse. Fueron diseñados para proveer el mejor balance de precio y desempeño en cargas ejecutándose en Amazon EC2, añadiendo aún más opciones para que nuestros clientes puedan optimizar su eficiencia dentro de sus arquitecturas.

La segunda generación de AWS Graviton (AWS Graviton2) provee avances significativos sobre la primera (la cual estaba enfocada en cargas tipo scale-out,  como servidores Web, microservicios en contenedores, procesamiento de archivos y otras, que funcionan fácilmente en núcleos pequeños y cantidades de memoria limitadas). AWS Graviton2 provee servicios en instancias de propósito general (R6g, R6gd, T4g), optimizadas en memoria (R6g, R6gd, X2gd) y optimizadas en cómputo (C6g, C6gd, C6gn). AWS Graviton2 puede ejecutar una gran variedad de cargas de trabajo, incluyendo servidores de aplicación, microservicios, cómputo de alto desempeño, inferencia para procesos de ML, codificación de video, bases de datos de código abierto, y caches en memoria. Comparado con AWS Graviton, proveen 7 veces más desempeño, 4 veces más núcleos, 5 veces más velocidad de memoria, y cachés del doble de tamaño.

AWS Graviton2 utiliza un diseño de servidor de 64 cores monolítico, derivado de núcleos móviles Cortex-A76, y un sistema de interconexión Arm CMN-600. Los núcleos corren a una velocidad de 2.5 GHZ, con 32 MB de cache L3. Cuenta con controladores de memoria DDR3200, y 64 líneas de PCIe4, construido en 7nm.

Esta arquitectura es soportada por distribuciones de Linux populares, como Amazon Linux 2, Red Hat, SUSE, y Ubuntu. Existen múltiples aplicaciones y servicios de AWS que soportan instancias Graviton2, incluyendo Amazon ECS, Amazon EKS, Amazon ECR, Amazon CodeBuild, Amazon CodeCommit, Amazon CodePipeline, Amazon CodeDeploy, Amazon CloudWatch, Crowdstrike, Datadog, Docker, Drone, Dynatrace, GitLab, Jenkins, NGINX, Rancher, Qualsys, Rapid7, Tenable y Travis, además de aquellas aplicaciones que pueda compilar nativamente para la arquitectura.

 

¿Cómo comparar el desempeño vs precio de AWS Graviton2?

Una vez que comprobamos que la aplicación que deseamos ejecutar funciona sin problemas en AWS Graviton2, existen dos parámetros significativos mediante los cuales podemos comparar AWS Graviton2 con Intel Xeon y AMD EPYC: costo y desempeño.

Es necesario que, por cada carga de trabajo, se haga un comparativo por cada una de las arquitecturas, para poder tener la certeza de que las cargas de trabajo que comparamos se hagan en el entorno adecuado, y con los parámetros operativos que den certeza del resultado. Sin embargo, y a efectos de mostrar un ejemplo de cómo cada chip tiene áreas particulares de fortaleza, hemos realizado un análisis sobre un conjunto de nuestras instancias, en familias equivalentes, para mostrar el comportamiento promedio de aplicaciones usualmente ejecutadas.

Además, se incluye en el análisis el costo por hora On Demand por cada instancia, con lo que podemos, además, obtener la relación costo – desempeño necesaria para tomar decisiones basándonos en el pilar de Optimización de Costos de Well-Architected.

 

Condiciones de la prueba

Instancias Graviton2: Familia R6g

Las instancias Amazon EC2 R6g están diseñadas para cargas que hacen uso intensivo de memoria, usando nuestro CPU AWS Graviton2.

Instancias Intel: Familia R5

Las instancias Amazon EC2 R5 están diseñadas par procesar grandes cantidades de datos en memoria.

Las instancias R5 cuentan con procesadores 1ª o 2ª generación Intel Xeon Platinum 8000 (SkylakeSP o Cascade Lake)  con una velocidad sostenida Turbo de hasta 3.1 GHz.

Instancias AMD: Familia R5a

Las instancias Amazon EC2 R5a están diseñadas para procesar grandes cantidades de datos en memoria.

Las instancias R5a cuentan con procesadores AMD EPYC 7000, con una velocidad sostenida Turbo de hasta 2.5 GHz.

Protocolo de prueba.

Para poder comparar de manera clara todas las familias e instancias posibles, utilizaremos la aplicación Geekbench 5, un benchmark multiplataforma que puede ser compilado para arquitecturas x64 y Arm.

Las pruebas simulan distintos tipos de aplicaciones, como Machine Learning, Realidad Aumentada, interpretación de HTML5, edición de imágenes,y otras. Evalúa el desempeño de un núcleo independiente y múltiples núcleos. Está diseñado para hacer comparaciones a nivel arquitectura en múltiples plataformas, dispositivos, sistemas operativos y arquitecturas de procesamiento.

Geekbench 5.1 está compilado usando Clang 9.0 en Linux, por lo que no existen diferencias en desempeño por el tipo de compilador usado.

Para ejecutar Geekbench en las versiones correctas, por cada instancia, de cada familia, se iniciará con el siguiente instance user data:

Para AMD e Intel:

yum update -y
wget https://cdn.geekbench.com/Geekbench-5.4.1-Linux.tar.gz
tar -zxf Geekbench-5.4.1-Linux.tar.gz
cd Geekbench-5.4.1-Linux/geekbench
./geekbench5 –upload
shutdown

Para Graviton2:

wget https://cdn.geekbench.com/Geekbench-5.4.0-LinuxARMPreview.tar.gz
tar -zxf Geekbench-5.4.0-LinuxARMPreview.tar.gz
cd Geekbench-5.4.0-LinuxARMPreview.tar.gz
./geekbench5 –upload
shutdown

Este script descargará Geekbench 5 en cada equipo, lo ejecutará, y subirá los resultados a una cuenta. Esta actividad la realizaremos cinco veces por cada instancia, y obtendremos el promedio de desempeño de las ejecuciones, para eliminar cualquier variable que pudiera afectar las métricas.  De esta forma, obtendremos la tabla de desempeño por familia, y por instancia.

Familias a evaluarse.

La siguiente es la lista para evaluar arquitecturas uno a uno, con las mismas características de capacidad.

Características AWS Graviton2 Intel Xeon AMD EPYC
2 vCPUs, 8 GB RAM R6g.large R5.large R5a.large
4 vCPUs, 16 GB RAM R6g.xlarge R5.xlarge R5a.xlarge
8 vCPUs, 32 GB RAM R6g.2xlarge R5.2xlarge R5a.2xlarge
16 vCPUs, 64 GB RAM R6g.4xlarge R5.4xlarge R5a.4xlarge
32 vCPUs, 128 GB RAM R6g.8xlarge R5.8xlarge R5a.8xlarge
48 vCPUs, 192 GB RAM R6g.12xlarge R5.12xlarge R5a.12xlarge

Los costos de cada familia se presentan a continuación (Agosto 2021)

  AWS Graviton2 Intel Xeon AMD EPYC
Instancia Precio / hora Precio / hora Precio / hora
*.large $0.1008 $0.126 $0.113
*.xlarge $0.2016 $0.252 $0.226
*.2xlarge $0.4032 $0.504 $0.452
*.4xlarge $0.8064 $1.008 $0.904
*.8xlarge $1.6128 $2.016 $1.808
*.12xlarge $2.4192 $3.024 $2.712

Resultados de las pruebas

A continuación, mostraremos algunos resultados derivados de nuestro análisis.

1. Comparativo núcleo sencillo (cargas generales).

El análisis de “cargas generales” consiste en una media aritmética de 3 subsecciones principales: criptografía, manejo de números enteros y manejo de punto flotante. Los números más altos indican un desempeño mayor, en una escala lineal.

Podemos ver que, para todas las instancias, el desempeño de un solo núcleo no varía significativamente (por la naturaleza de las arquitecturas). Sin embargo, es posible afirmar que, en desempeño de núcleo sencillo, Intel Xeon es la arquitectura con mejor desempeño.

El resto de nuestros análisis se realizará usando la modalidad de múltiples núcleos.

2. Comparativo núcleos múltiples (cargas generales).

 

Al ver los resultados en núcleos múltiples, vemos un cambio significativo en el análisis, en el cual, por ejemplo,  para AWS Graviton2, en la instancia 12xLarge, tenemos un desempeño 37.5% superior a Intel Xeon, y 90% superior a AMD EPYC.

3. Comparativo núcleos múltiples, costo vs. rendimiento (cargas generales).

Para este análisis, incluiremos los costos on-demand para cada una de las instancias. Dividiremos el desempeño por núcleo entre el costo en dólares por hora, para tener una medida costo vs. rendimiento comparable a través de las arquitecturas.

 

 

Esta gráfica muestra la relación costo vs. rendimiento al momento de comparar arquitecturas con múltiples núcleos (a mayor número de procesadores, mayor costo vs. rendimiento obtenido); podemos ver también que la arquitectura Intel Xeon tiene un menor impacto al momento de escalar en número de núcleos comparado con AMD EPYC o AWS Graviton2; sin embargo, también es aparente que la arquitectura con mejor relación costo vs. rendimiento en cargas generales, independientemente del número de núcleos, es AWS Graviton2.

4. Comparativo N-Body Simulation.

En física y astronomía, una Simulación de N-Cuerpos (N-Body Simulation) consiste en simular un sistema dinámico de partículas, bajo la influencia de fuerzas físicas (como la gravedad).  Es un análisis de punto flotante, utilizando el método de Barnes-Hut, el cual calcula la fuerza gravitacional de 16,384 cuerpos en una “galaxia” con un agujero negro en el centro.

 

 

En este caso, vemos a AMD EPYC con un desempeño similar en servidores xLarge y 2xLarge con AWS Graviton2; sin embargo, Intel Xeon tiene mejores parámetros de desempeño que ambos en equipos 4xLarge, y superiores. 12x.Large es indiscutiblemente superior, por 13%, sobre AWS Graviton2, y 46% sobre AMD EPYC. En este caso, es posible elegir el desempeño basado en la familia, pues en xLarge y 2xLarge, AMD EPYC o AWS Graviton2 son opciones viables.

5. Comparativo Gaussian Blur.

El suavizado de Gauss (Gaussian Blur) es el resultado de suavizar una imagen a través de la función de Gauss, generalmente usada para reducir el ruido en una imagen. Es usado también en etapas de preprocesamiento en algoritmos de visión computacional para mejorar la detección de estructuras a diferentes escalas. En este ejercicio, se usa un suavizado de gauss en una imagen de 24 megapixeles, con un diámetro de filtrado de 25 x 25 pixeles.

 

Más allá del mejor desempeño de AWS Graviton2, podemos ver que Intel Xeon y AMD EPYC tienen tiempos de ejecución básicamente iguales en instancias Large, xLarge y 2xLarge, por lo que si consideramos el tema de costos, en caso que deban procesarse este tipo de cargas en sistemas operativos no soportados por AWS Graviton2, la elección de un procesador AMD EPYC puede tener ahorros significativos.

6. Comparativo Speech Recognition

El reconocimiento de voz es una prueba que lleva a cabo el reconocimiento de un texto aleatorio en inglés utilizando la librería PocketSphinx, utilizando HMM (Modelos de Markov Ocultos, o Hidden Markov Models).

 

En este escenario, AWS Graviton2, con instancias 12x.Large, es 277% más rápido que AMD EPYC, y 137% más rápido que la instancia equivalente de Intel Xeon.

Para ejemplificar el impacto del costo por unidad de desempeño, podemos incluir los precios on-demand por hora, para obtener la siguiente gráfica:

 

Podemos ver que, en términos de costo por unidad de desempeño, aunque AMD EPYC tiene un costo aproximadamente 10% inferior a Intel Xeon, su desempeño por unidad de costo es inferior, comparándolo instancia contra instancia, con el de la oferta de Intel.

Si desea ver la totalidad de los resultados, puede descargarlos desde esta liga.

 

Conclusiones

En este artículo, hemos analizado múltiples métricas en las cuales se muestra el desempeño, en pruebas sintéticas, de las 3 familias de procesadores que existen en Amazon EC2.  A continuación, y a manera de resumen, incluimos varias observaciones, las cuales puede aplicar al momento de considerar una arquitectura sobre otra.

La primera: puede considerar AWS Graviton2 como una excelente opción para sus cargas de trabajo, tanto por factores de desempeño, como de costo. Sin embargo, es necesario tener en cuenta los siguientes puntos:

  1. AWS Graviton2 sólo puede ejecutarse con distribuciones Linux (Amazon Linux 2, Ubuntu 16.04, 18.04 y más recientes, Red Hat Enterprise Linux 7.6 y 8.0, SUSE, Fedora, Debian, FreeBSD, NetBSD).
  2. Se requiere que las aplicaciones estén compiladas para procesadores Arm.
  3. En caso alterno, que las aplicaciones puedan ser compiladas por el usuario en ambiente Arm.
  4. Las instancias tipo “T”, al ser usadas al 100% de su capacidad de cómputo, serán más costosas que instancias comparables con clases M y R.
  5. AWS Graviton2 no está certificado por SAP para ejecutar sus soluciones.

También es conveniente tener en cuenta las consideraciones generales para la optimización de costos en arquitecturas de cómputo.

  1. Considere la escalabilidad de su aplicación, y de la arquitectura computacional en múltiples núcleos, al momento de elegir una instancia.
  2. Determine la factibilidad de usar múltiples recursos (instancias xLarge, 2xLarge, y otras) al momento de crear su arquitectura, en lugar de usar instancias únicas de gran tamaño (es una mejor práctica desde el punto de vista de Confiabilidad y Optimización de Costos).
  3. Evalúe múltiples puntos de vista al momento de determinar la arquitectura y la instancia a utilizarse. Centrarse en el diferencial de costo de AMD EPYC, por ejemplo, puede traer costos más elevados a corto, mediano y largo plazo, si la carga de trabajo requiere de un mayor número de recursos. Puede realizar análisis como los mostramos en algunas de las pruebas anteriores.
  4. Es posible usar instancias AWS Graviton2 en conjunto con Intel Xeon y AMD EPYC, optimizando el funcionamiento de sus cartas de trabajo.
  5. Utilice nuestros datos como una base, para realizar su propio análisis de desempeño y costo-beneficio.

Por último, también es conveniente recalcar que cada arquitectura tiene distintos comportamientos, especialmente en el área de manejo de memoria, dada la cantidad de memoria tipo L3 (caché), por lo que es importante recalcar que nuestras pruebas deben ser tomadas como un análisis sintético, y que la evaluación más importante es la que usted realice con su carga de trabajo real.

En conclusión, lo invitamos a evaluar sus requerimientos carga por carga, y que considere que, para aquellas aplicaciones intensivas en el uso de memoria y núcleos de procesamiento, analice la viabilidad de todas nuestras ofertas de procesamiento.

Y como siempre, lo invitamos a seguir construyendo, con AWS

 

Recursos:

Optimización de costos en AWS usando nuestro marco de mejores prácticas.

AWS Graviton2

AWS y AMD

AWS e Intel


Sobre el autor

Javier Huerta es Arquitecto de Soluciones especializado en Mejores Prácticas (Well-Architected)  para Latinoamérica.  Ha sido Arquitecto  de Soluciones, Service Delivery Manager, Gerente de Cumplimiento Normativo, y  Director de Innovación Tecnológica a lo largo de 25 años de carrera  profesional. Es  también miembro de la  Comunidad Técnica de Campo (TFC) de Media y Entretenimiento.  Por el momento, sigue construyendo el que considera será su último par de bocinas.

 
 
 

Sobre los revisores

Hans Hahn es Arquitecto de Soluciones Sr. para Partners, especializado en SAP.

 
 
 
 
 
 

Roberto García es Arquitecto de Soluciones Sr. para Partners, especializado en ISVs.