Graviton Migration Guide
AWS Graviton processors (ARM64) deliver up to 40% better price-performance than x86. Here's how to migrate your workloads.
What is Graviton?
Graviton is AWS's custom ARM-based processor. It's not emulation — it's native ARM64 hardware designed specifically for cloud workloads. You get more compute per dollar, lower energy consumption, and the same AWS features.
Up to 40%
better price-performance
60%
less energy per chip
g suffix
m7g, c7g, r7g, t4g
Graviton Generations
Graviton2
Up to 40% better price-performance vs x86 (5th gen)
Graviton3
Up to 25% better than Graviton2. 2x faster crypto, 3x better ML inference.
Graviton4
Up to 30% better than Graviton3. Largest cache, highest memory bandwidth.
Expected Savings
| From (x86) | To (Graviton) | Saving |
|---|---|---|
| m5.large | m7g.large | ~35% |
| c5.xlarge | c7g.xlarge | ~38% |
| r5.2xlarge | r7g.2xlarge | ~34% |
| t3.micro | t4g.micro | ~20% |
Compatible Workloads
Linux-based web apps
Node.js, Python, Go, Ruby, PHP, Java — all run natively on ARM. Most frameworks have full support.
Containers (Docker/ECS/EKS)
Build multi-arch images with docker buildx. Most official images already support arm64.
Databases
PostgreSQL, MySQL, Redis, MongoDB, Elasticsearch — all have ARM builds. RDS supports Graviton natively.
Java applications
JDK 11+ has excellent ARM support. Corretto (Amazon's JDK) is optimized for Graviton.
Python / Node.js
Interpreted languages work out of the box. Native extensions (C modules) need ARM compilation.
.NET 6+
.NET 6 and later have full ARM64 support on Linux. Earlier versions are x86 only.
Watch Out For
Windows workloads
Graviton does not support Windows. Stay on Intel/AMD instances.
x86 assembly / SIMD code
Code with x86-specific instructions (SSE, AVX) needs porting to ARM NEON equivalents.
Proprietary x86-only software
Some commercial software only ships x86 binaries. Check vendor ARM support before migrating.
Old .NET Framework
.NET Framework (not .NET Core/6+) is Windows-only and won't run on Graviton.
Migration Steps
Audit your dependencies
Check that your OS, language runtime, and all native dependencies have ARM64 builds. Use `uname -m` to verify architecture.
Build ARM images
For containers: use `docker buildx build --platform linux/arm64`. For AMIs: launch a Graviton instance and build your AMI there.
docker buildx build --platform linux/arm64,linux/amd64 -t myapp:latest --push .Test in parallel
Run the Graviton instance alongside your existing x86 instance. Route a small percentage of traffic to it and compare performance, errors, and latency.
Benchmark and validate
Run your standard load tests. Graviton typically matches or beats x86 on throughput. Watch for any regressions in specific operations.
Switch over
Update your Auto Scaling group, ECS task definition, or deployment config to use the Graviton instance type. Roll back is just changing the instance type back.
Tips
Use multi-arch Docker images
Build for both amd64 and arm64 with buildx. This lets you run the same image on either architecture during migration.
Start with non-production
Migrate dev/test environments first. Low risk, immediate savings, and you'll catch compatibility issues early.
Compare prices in our calculator
Select any instance and compare the x86 vs Graviton variant side by side with real-time pricing.
Open calculator →Use latest Graviton generation
Each generation brings significant improvements. Prefer Graviton4 (8g) > Graviton3 (7g) > Graviton2 (6g).
Compare x86 vs Graviton prices
See exactly how much you'd save by switching to Graviton — on-demand, reserved instances, savings plans, and spot, all in one view.
Open Calculator