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

2020

Graviton2

Up to 40% better price-performance vs x86 (5th gen)

m6gc6gr6gt4g
2022

Graviton3

Up to 25% better than Graviton2. 2x faster crypto, 3x better ML inference.

m7gc7gr7g
2024

Graviton4

Up to 30% better than Graviton3. Largest cache, highest memory bandwidth.

m8gc8gr8g

Expected Savings

From (x86)To (Graviton)Saving
m5.largem7g.large~35%
c5.xlargec7g.xlarge~38%
r5.2xlarger7g.2xlarge~34%
t3.microt4g.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

1

Audit your dependencies

Check that your OS, language runtime, and all native dependencies have ARM64 builds. Use `uname -m` to verify architecture.

2

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 .
3

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.

4

Benchmark and validate

Run your standard load tests. Graviton typically matches or beats x86 on throughput. Watch for any regressions in specific operations.

5

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