AWS Graviton Migration · Cost Savings Guide

AWS Graviton Migration: 20–40% Savings, Minimal Effort

AWS Graviton delivers 20–40% better price-performance than x86. Most workloads migrate with a single instance type change - no code changes, no downtime, no migration risk. It’s the most overlooked cost optimization in AWS.

20–40% cheaper than equivalent x86
No code changes for interpreted runtimes
Graviton3 available for EC2, RDS, ElastiCache
Lambda arm64: 20% cheaper AND faster

Graviton vs. x86 Pricing (us-east-1)

ComparisonGraviton pricex86 priceSaving
m7g.large vs. m5.large$0.0768/hr$0.096/hr20%
c7g.xlarge vs. c5.xlarge$0.1440/hr$0.170/hr15%
r7g.2xlarge vs. r5.2xlarge$0.4032/hr$0.504/hr20%
Lambda arm64 vs. x86 (GB-sec)$0.0000133334$0.000016666720%

Graviton Compatibility by Workload

Web applications & API servers

Node.js, Python, Ruby, Go, Java - all run natively on arm64. No code changes for interpreted/JVM runtimes.

Instance type change only

Containerized workloads (ECS/EKS)

Rebuild Docker images with --platform linux/arm64. Multi-arch images (linux/amd64,linux/arm64) run on both architectures.

Rebuild container image

Lambda functions

Set Architectures: [arm64] in function configuration. Node.js, Python, Java, Go, .NET - no code changes.

Config change only

RDS databases

Graviton-based RDS (r7g, m7g) available for MySQL, PostgreSQL, MariaDB. Standard modify operation with maintenance window reboot.

Instance type modification

ElastiCache clusters

Graviton available for all ElastiCache node families. Rolling replacement maintains availability during migration.

Node type modification
~

C/C++ compiled binaries (x86-specific)

Code using x86-specific SIMD intrinsics (SSE, AVX) requires recompilation with arm64 equivalents (NEON). Assess code first.

Code changes required

Migration Steps by Resource Type

Start with Lambda - it’s a 1-line config change with immediate 20% savings.

1

Identify Graviton-eligible workloads in your account

1–2 hours

AWS Compute Optimizer provides Graviton migration recommendations for EC2, Lambda, and ECS. Start there to get a prioritized list of instances where migrating to Graviton would reduce cost.

Steps

  1. AWS Compute Optimizer → EC2 instances → filter by Graviton migration recommendations
  2. Lambda → Functions → filter by Graviton (arm64) migration recommendations
  3. Alternatively: list all x86 instances and check against the Graviton compatibility list
  4. Prioritize by monthly spend - migrate expensive instances first for fastest payback
  5. Note any compiled code or native extensions that may need recompilation

Note: Compute Optimizer Graviton recommendations show estimated cost savings before you migrate. This is the easiest way to quantify your potential Graviton savings.

2

Migrate EC2 instances

30 minutes per instance type

EC2 migration requires stopping the instance and changing the instance type. No storage migration needed - the EBS volumes stay attached. For x86→arm64, the OS and most application software works without changes.

Steps

  1. Launch a new Graviton instance of the equivalent size (m5.large → m7g.large, c5.xlarge → c7g.xlarge)
  2. For AMIs: AWS provides Graviton-compatible AMIs for Amazon Linux 2023, Ubuntu 22.04, and most major distributions
  3. Test on a non-production instance first - run your test suite against the Graviton instance
  4. In production: stop the x86 instance, change instance type to Graviton equivalent, start
  5. Verify application performance metrics for 48 hours after migration

Note: For Auto Scaling Groups: update the launch template to the Graviton instance type. ASG will replace x86 instances with Graviton as they cycle through health checks and scale events.

3

Rebuild Docker images for arm64

1–2 hours per image

Container images are architecture-specific. To run on Graviton, build your images for linux/arm64. Multi-architecture images work on both x86 and arm64 ECS/EKS clusters, making the migration gradual.

Steps

  1. Use Docker Buildx for multi-platform builds: docker buildx build --platform linux/amd64,linux/arm64 -t myimage:latest --push .
  2. ECR stores multi-arch images automatically - push once, pull on any architecture
  3. In ECS task definitions: no change needed if using multi-arch images
  4. In EKS: Karpenter with arm64 NodePool will schedule pods on Graviton nodes; ensure images support arm64
  5. For CI/CD: add arm64 runners (GitHub Actions: runs-on: buildjet-2vcpu-ubuntu-2204-arm) for native arm64 builds

Note: QEMU emulation (building arm64 images on x86) is 5–10× slower than native arm64 builds. Use AWS Graviton CodeBuild or GitHub Actions arm64 runners for production CI/CD pipelines.

4

Migrate Lambda to arm64

15 minutes

Lambda arm64 (Graviton2) is the simplest Graviton migration - a single configuration change with no code or image rebuild required for interpreted runtimes. Apply to all eligible functions immediately.

Steps

  1. In your Lambda Terraform or SAM template: add architectures = ['arm64'] to each function resource
  2. For Lambda container images: rebuild with --platform linux/arm64 (as above)
  3. For compiled runtimes (Go, Rust, C++): rebuild for arm64 target
  4. Deploy and verify: Lambda arm64 functions behave identically to x86 for all supported runtimes
  5. Monitor duration in CloudWatch for 24 hours - Graviton2 is typically 10–20% faster for CPU-bound functions

Note: Lambda arm64 is 20% cheaper per GB-second than x86 AND often runs faster. This makes it one of the few AWS optimizations where you simultaneously reduce cost and improve performance.

Frequently Asked Questions

What is AWS Graviton?

AWS Graviton is Amazon’s custom ARM-based processor (64-bit ARM architecture). Graviton2 (second generation) and Graviton3 (third generation) instances deliver 20–40% better price-performance than comparable x86 Intel/AMD instances for most workloads. All major AWS services support Graviton: EC2, ECS, EKS, Lambda, RDS, ElastiCache.

Does my application code need to change to run on Graviton?

For interpreted languages (Python, Node.js, Ruby, PHP) and JVM languages (Java, Kotlin, Scala): no code changes. For compiled languages (Go, Rust, C++): recompile for arm64. For Docker containers: rebuild the image for linux/arm64. 90%+ of typical startup workloads migrate with no code changes.

Is Graviton performance the same as x86?

For most workloads, Graviton is equivalent or faster per dollar - not just cheaper. Graviton3 (m7g, c7g, r7g) delivers up to 25% better compute performance than Graviton2 and 40% better price-performance than comparable x86. For memory-intensive workloads, Graviton’s LPDDR5 memory also provides higher bandwidth.

How do I check if my RDS database is Graviton-eligible?

All RDS for MySQL 8.0+, PostgreSQL 12+, and MariaDB 10.4+ support Graviton2 (r6g, m6g) and Graviton3 (r7g, m7g) instance classes. Aurora MySQL and Aurora PostgreSQL also support Graviton. Modify your DB instance class in the RDS console - it applies during the next maintenance window.

What is the Graviton Savings Dashboard?

AWS provides a Graviton Savings Dashboard in the EC2 console that shows how much you’ve saved from Graviton migrations vs. equivalent x86 instances. It tracks savings automatically based on instance type selection. Available under EC2 → Savings Recommendations → Graviton.

Fixed-price · Risk-free · 3× ROI guarantee

How much could Graviton save your account specifically?

The audit identifies all x86 instances eligible for Graviton migration and estimates the exact savings. Prioritized by effort vs. impact. Report in 1 week.

Start the Audit →

No call needed · Accept agreements · Run one script · Done

Prefer to talk first? Free 30-min call available →