Uso de instancias y contenedores Graviton - Recomendaciones de AWS

Uso de instancias y contenedores Graviton

Descripción general

Las instancias AWS Graviton funcionan con procesadores ARM diseñados por AWS para ofrecer la mejor relación precio-rendimiento para las cargas de trabajo en la nube que se ponen en marcha en Amazon Elastic Compute Cloud (Amazon EC2), lo que incluye los contenedores activos en AWS. Actualmente hay tres generaciones de Graviton disponibles para su uso en Amazon EC2. Esta guía se centra en el uso de Graviton 2 y 3 con aplicaciones .NET, ya que supone un importante ahorro de costos si usa las versiones más recientes de Graviton. Tenga en cuenta que las instancias Graviton solo funcionan en el sistema operativo Linux. Como resultado, las instancias Graviton son una buena opción para .NET en Linux, pero no son una opción para el sistema operativo Windows ni para las aplicaciones heredadas de .NET Framework.

Graviton 3 es un 60 % más eficiente que las instancias de EC2 comparables, con un rendimiento hasta un 40 % mejor. Esta guía se centra en los beneficios económicos del uso de Graviton, pero es importante tener en cuenta que Graviton ofrece otras dos ventajas: la mejora del rendimiento y una mayor sostenibilidad ambiental.

Impacto del costo

Puede ahorrar hasta un 45 % si empieza a usar Graviton. Tras refactorizar cualquier aplicación heredada de .NET Framework para convertirla a una versión moderna de .NET, podrá utilizar instancias Graviton. La migración a Graviton es una técnica eficaz de optimización de costos para los desarrolladores de .NET.

El ejemplo de la siguiente tabla muestra las posibles mejoras de rendimiento que se pueden lograr al migrar a las instancias Graviton.

Gráfico de rendimiento de Graviton

Para obtener un desglose completo y una explicación de la estrategia de evaluación comparativa utilizada para crear los resultados del diagrama anterior, consulte Powering .NET 5 with AWS Graviton2: Benchmarks en el blog de computación de AWS.

Una de las razones de la mejora en la eficiencia es que el término vCPU tiene significados distintos en x86 y en Graviton. En la arquitectura x86, una vCPU es un núcleo lógico que se logra mediante hipersubprocesamiento. En Graviton, una vCPU equivale a un núcleo físico que permite que la vCPU se comprometa plenamente con la carga de trabajo.

El resultado con Graviton2 es una relación precio-rendimiento un 40 % superior a la de las instancias x86 o x64 comparables. Graviton3 ofrece lo siguiente en comparación con Graviton2:

  • Un perfil de rendimiento mejorado con un rendimiento hasta un 25 % mejor.

  • Hasta el doble de rendimiento en operaciones de coma flotante.

  • Un rendimiento el doble de rápido en cargas de trabajo criptográficas.

  • Un rendimiento tres veces mejor en tareas de machine learning.

Además, Graviton3 es la primera instancia en la nube que incluye memoria DDR5.

En las tablas siguientes se muestra una comparación del ahorro de costos logrado al usar instancias basadas en Graviton y al usar instancias equivalentes basadas en x86.

En esta tabla se muestra que el uso de Graviton supone un 19,20 % de ahorro.

Tipo de instancia Arquitectura vCPU Memoria (GB) Costo por hora (bajo demanda)
t4g.xlarge ARM 4 16 0,1344 USD
t3.xlarge x86 4 16 0,1664 USD

En esta tabla se muestra que el uso de Graviton supone un 14,99 % de ahorro.

Tipo de instancia Arquitectura vCPU Memoria (GB) Costo por hora (bajo demanda)
c7g.4xlarge ARM 16 32 0,5781 USD
c6i.4xlarge x86 16 32 0,6800 USD

Es importante probar el perfil de rendimiento de la aplicación si planea usar Graviton. Graviton no reemplaza la necesidad de aplicar buenas prácticas de desarrollo de software. Puede utilizar las pruebas para comprobar si está aprovechando al máximo sus recursos de computación subyacentes.

Recomendaciones de optimización de costos

Hay varias formas de aprovechar los procesadores o instancias Graviton. En esta sección, se explican los cambios necesarios para pasar de utilizar una máquina con arquitectura x86 a instancias Graviton (ARM).

Cambio de la configuración del tiempo de ejecución en Lambda

Se recomienda cambiar la configuración del tiempo de ejecución en AWS Lambda. Para obtener más información, consulte Modificación del entorno de tiempo de ejecución en la documentación de Lambda. Dado que .NET es un lenguaje compilado, debe seguir un proceso de compilación para que funcione. Para ver un ejemplo práctico, consulte NET on Graviton en GitHub.

Contenedores

En el caso de una carga de trabajo almacenada en un contenedor, cree una imagen de contenedor multiarquitectura. Para ello, especifique varias arquitecturas en el comando de compilación de Docker. Por ejemplo:

docker buildx build -t "myImageName:latest" --platform linux/amd64,linux/arm64 --push .

También puedes usar una herramienta como AWS Cloud Development Kit (AWS CDK) para orquestar la compilación. Para ver ejemplos de Docker, consulte Building Multi-Arch Images for Arm and x86 with Docker Desktops en la documentación de Docker.

Amazon EC2

Para migrar a ARM desde x86 o x64, debe centrarse en la arquitectura ARM en el paso de compilación. En Visual Studio, puede crear una CPU ARM64. Para obtener instrucciones, consulte To configure a project to target Arm64 and other platforms en la documentación de Microsoft.

Si utiliza la CLI de .NET, obtendrá una compilación válida para Graviton al poner en marcha la compilación en una máquina ARM. Para ver una demostración, vea Accelerate .NET 6 performance with Arm64 on AWS Graviton2 en YouTube. Los problemas de dependencia provocarán errores en el tiempo de compilación que luego se podrán solucionar de forma individual. Mientras haya bibliotecas ARM para cualquier dependencia, la transición debería ser relativamente sencilla.

Recursos adicionales