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.
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
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
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
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
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
Recursos adicionales
-
How to build your containers for ARM and save with Graviton and Spot instances on Amazon ECS
(blog de AWS) -
AWS Lambda Functions Powered by AWS Graviton2 Processor – Run Your Functions on Arm and Get Up to 34% Better Price Performance
(blog de AWS) -
Migrating AWS Lambda functions to Arm-based AWS Graviton2 processors
(blog de AWS) -
Build and deploy .NET web applications to ARM-powered AWS Graviton 2 Amazon ECS Clusters using AWS CDK
(blog de AWS) -
Graviton Fast Start – A New Program to Help Move Your Workloads to AWS Graviton
(blog de AWS) -
Powering .NET 5 with AWS Graviton2: Benchmarks
(blog de AWS)