AWS Graviton (ARM) is the single best price-performance lever in the AWS cost stack, because for managed services — RDS, Aurora, ElastiCache, OpenSearch, Lambda, Fargate — moving to Graviton is a configuration change, not a rewrite. This page separates the flip-a-flag wins from the recompile-and-test work, gives the real per-service deltas, and walks the rollout. A vetted partner runs the migration end-to-end, frequently AWS-funded, so you bank the savings without burning your own engineering quarter.
Graviton is AWS's own line of 64-bit ARM (Arm Neoverse-based) server processors, designed by Annapurna Labs inside AWS. Because AWS designs the silicon, controls the supply chain, and runs it at hyperscale, it can price Graviton instances below the Intel and AMD equivalents while delivering more performance per watt. The discount is structural — it's baked into the on-demand rate card — not a temporary promotion that expires.
There are three generations in broad service as of 2026. Graviton2 is the mature, everywhere-available generation. Graviton3 adds roughly 25% more compute performance, higher memory bandwidth, and meaningfully better floating-point and crypto throughput than Graviton2. Graviton4 is the current top end — more cores, more memory bandwidth again, and the best price-performance of the three — rolling out across the newer instance families (the R8g, M8g, C8g and successors). When this page says "Graviton," assume you'll land on Graviton3 or Graviton4 depending on the family and Region you pick.
The headline AWS publishes is "up to 40% better price-performance versus comparable current-generation x86 instances." That is a real, repeatedly-benchmarked figure for the right workloads, but the honest framing is a range, not a guarantee: most teams see somewhere in the 20–40% band depending on how memory-bound, compute-bound, or I/O-bound the workload is. A latency-sensitive Java service that fits the cores well lands high in the band; a workload pinned on a specific x86-only native library may see no benefit until the dependency is replaced. Treat 20–40% as the planning range and confirm with a benchmark on your own traffic.
Two things make the savings compound beyond the per-hour rate. First, Graviton instances draw up to roughly 60% less energy for the same work, which AWS passes through partly as price and which matters directly if you have a carbon/sustainability mandate. Second, the per-vCPU performance is high enough that teams frequently right-size DOWN a tier when they migrate — a workload that needed an 8-vCPU x86 instance often runs comfortably on a 4- or 6-vCPU Graviton instance, stacking a right-sizing win on top of the rate win. (See the companion lever, EC2 right-sizing, for how to confirm that headroom with Compute Optimizer.)
Crucially for cost work: Graviton is not a niche. It runs the same Linux you already run (Amazon Linux 2023, Ubuntu, Debian, RHEL, AL2 all ship ARM64 builds), the same containers (multi-arch images), the same managed databases and caches. The ARM ecosystem in 2026 is mature — the days of "ARM might not have a build" are largely behind you for mainstream stacks. That maturity is exactly why Graviton has moved from "experiment" to "default first choice" in most FinOps playbooks.
Most people first meet Graviton as an EC2 instance choice. But the largest, lowest-effort savings usually come from the managed services, because AWS already did the porting work — you just pick the Graviton-backed instance class and the engine runs identically.
Here is the practical coverage map as of 2026. For each, the question to ask is "is this a flag, or a rebuild?" — and for everything except self-managed compute on EC2, it's a flag.
For most teams, RDS/Aurora + ElastiCache + OpenSearch + Lambda deliver the majority of the dollar savings and require no application recompile — they're instance-class and architecture flags with a short failover/deploy. Do those first, bank the savings, then take on the self-managed EC2 fleet on a slower, test-gated timeline.
Every credible Graviton plan sorts the estate into two buckets on day one: workloads where AWS already did the ARM port for you, and workloads where you own the binary and therefore own the rebuild. Confusing the two is how migrations stall — teams treat a one-flag RDS change like a risky platform migration, or treat a gnarly C-extension-heavy app server like a one-flag change.
The strategic takeaway for a cost program: the two buckets have completely different ROI-per-hour. Bucket 1 is near-free money — you should default new managed resources to Graviton and migrate the existing ones almost unconditionally. Bucket 2 is genuine project work, and the right answer is to prioritize the largest, longest-running, most homogeneous fleets first (a big stateless web tier behind a load balancer is the ideal first recompile target) and leave the long tail of small, weird, rarely-changed services for last — or never, if the saving doesn't justify the test burden.
What it is: RDS/Aurora, ElastiCache, MemoryDB, OpenSearch, Lambda (runtime languages), Fargate (with a multi-arch image), EMR. AWS compiled and qualified the software for ARM. You change an instance class or an architecture setting.
What the change looks like: for a database or cache, you modify the instance/node type to the equivalent *g class and apply during a maintenance window — Multi-AZ deployments fail over with seconds of interruption. For Lambda, you set Architectures: [arm64]. For Fargate, you set the CPU architecture in the task/pod spec.
Risk profile: low. The engine, query planner, and on-the-wire protocol are identical to the x86 version. Your application code, drivers, and schema are untouched. The realistic risk is operational (the failover window, a stale connection pool), not behavioral.
Effort: hours to a couple of days per service including a benchmark and a staged apply — not weeks.
What it is: your own application processes running on EC2 (or self-managed Kubernetes/ECS on EC2) — the API servers, workers, and daemons where YOU produce the binary or image.
What the change looks like: you need an arm64 build of the application and of every dependency that ships native code. For interpreted/JIT stacks (Python, Node.js, Java/JVM, Go, .NET, Ruby) the language runtime has first-class ARM64 support, so the app itself usually "just works" once rebuilt; the friction is concentrated in native extensions, vendored binaries, and a handful of agents.
Risk profile: moderate and entirely testable. The failure modes are known up front — a native library with no ARM64 wheel, a Docker base image that's amd64-only, an old monitoring agent without an arm64 package, or an x86-only third-party binary baked into the image. A dependency audit (section IV) finds these before you cut over.
Effort: the real engineering. Stand up a multi-arch build pipeline, resolve the dependency exceptions, and run a full functional + load test on ARM before shifting production traffic.
For the managed-service flags there's little to plan beyond a maintenance window. For the self-managed compute path, here is the real checklist a partner (or your team) works through — it's methodical, not heroic, and almost all of the uncertainty is removed in the first two steps.
Run these in order. Steps 1–2 are discovery and tell you the true size of the job before you commit; steps 3–5 are the build, test, and rollout.
The ARM64 ecosystem is mature: mainstream language runtimes, the popular base images, and the major observability/security agents all ship arm64 builds. In practice the dependency audit usually surfaces a short list — a stray amd64-only base image, one or two native packages, an old agent version — each with a known fix (swap the image, upgrade the agent, find the arm64 wheel, or isolate the one workload that genuinely can't move). The audit is what turns Graviton from "scary platform migration" into "a finite, schedulable task."
Graviton savings come in two parts: a lower on-demand rate for the Graviton instance, and more work per dollar (so you sometimes also right-size down). The combined effect is the 20–40% price-performance band. Below is how that tends to land service by service — directional ranges, not quotes; always confirm against current AWS pricing and your own benchmark in Cost Explorer.
Two multipliers stack on top of everything below. (1) Commitments: a Graviton instance covered by a Savings Plan or Reserved Instance discounts again on top of the Graviton rate — for steady-state managed databases, Graviton + a 1- or 3-year RI is the deepest single discount available (see aws-savings-plans and aws-reserved-instances). (2) Right-sizing down: when the Graviton instance has spare headroom, dropping a size compounds the saving. The ranges below are the architecture switch alone, before those multipliers.
| Service | x86 baseline | Graviton option | Typical effort | Representative gain |
|---|---|---|---|---|
| EC2 — stateless web/app tier | M/C/R Intel or AMD | M8g / C8g / R8g | Recompile + test (multi-arch) | 20–40% price-perf |
| RDS / Aurora | db.r6i / db.m6i | db.r7g / db.m7g (+ RI) | Flag — instance class change | ~20–35% (deeper with RI) |
| ElastiCache (Redis/Valkey) | r6/m6 nodes | r7g / m7g nodes | Flag — node type change | ~20–35% |
| OpenSearch Service | r6/m6 data nodes | r7g / m7g data nodes | Flag — instance type change | ~20–30% (large absolute $) |
| AWS Lambda | x86_64 functions | arm64 functions | Flag — one setting (runtime langs) | ~20% rate + faster duration |
| Fargate (ECS/EKS) | X86_64 tasks | ARM64 tasks | Flag once image is multi-arch | ~20% + image work |
The optimal sequence is not "migrate everything." It's "take the free money immediately, then work the recompile fleet in priority order with a rollback path." Done this way, most of the dollar savings land in the first few weeks, while the engineering-heavy work proceeds at a safe pace.
A practical four-phase rollout:
Because a multi-arch image runs on both architectures, you can run Graviton and x86 instances side by side in the same Auto Scaling group or Kubernetes node pool during the transition. You shift capacity weighting toward Graviton gradually and shift it back instantly if anything looks wrong. That single capability is what makes a Graviton rollout low-drama: there is no big-bang cutover and no one-way door.
The savings are real and durable, but the recompile path is a project, and most teams don't have a spare engineering quarter to run it cleanly. This is exactly the kind of well-scoped, measurable optimization that AWS funds through its partners — which is why a CloudRoute-matched partner is usually the fastest path to the savings, and frequently at no net cost to you.
CloudRoute routes you to a vetted AWS partner who has done Graviton migrations before. The partner runs the whole arc: a cost audit to size the prize, the dependency audit and benchmark, the multi-arch build pipeline, the staged cutover with a rollback plan, and the post-migration verification that the savings actually showed up in Cost Explorer. You get the price-performance gain without pulling your own team off the roadmap to build ARM CI and chase native-dependency exceptions.
The honest funding picture: AWS funds partner-led cost-optimization and Well-Architected engagements through its partner programs, and a Well-Architected Review can unlock remediation credits — so for qualifying, credit-eligible engagements you frequently cut the bill for $0: AWS funds the partner, the partner pays CloudRoute, and you never see an invoice. Where an engagement doesn't qualify for funding, it's a vetted-partner referral that pays for itself — a 20–40% price-performance gain on a meaningful slice of compute and database spend typically recovers the cost in the first month and compounds every month after. We won't pretend every engagement is free; we will make sure the math works before you commit.
If you want the broader cost picture, Graviton is one lever among several and works best alongside the others: commitments (aws-savings-plans, aws-reserved-instances) on the steady-state Graviton capacity, EC2 right-sizing to capture the drop-a-tier headroom, Spot for the interruptible portion of the fleet (ec2-spot-instances), and database-specific work (rds-cost-optimization). A Well-Architected Review (see /devops/aws-well-architected-review) is the usual front door, and if you're also early-stage and credit-hungry, the same partner motion overlaps with AWS credits — see /aws-credits/100k-aws-credits and the startup track at /for/startup.
The choice isn't "is Graviton cheaper" (it is, for the right workload) — it's "what does each path cost me in effort, and where does the risk sit." Here's x86 (Intel/AMD) versus Graviton across the dimensions that actually drive a migration decision.
| Dimension | x86 (Intel / AMD) | Graviton (ARM) |
|---|---|---|
| On-demand price | Baseline rate card | Lower rate — structural, not promo |
| Price-performance | Baseline | ~20–40% better (workload-dependent) |
| Energy per unit of work | Baseline | Up to ~60% less |
| Managed services (RDS/cache/OpenSearch/Lambda/Fargate) | Default class | Switch class/arch — no app changes |
| Self-managed app servers | Runs your existing binary/image | Needs arm64 build + dependency audit + test |
| Software ecosystem (2026) | Universal | Mature — mainstream stacks ship arm64 |
| Typical blocker | None (cost only) | A short list of native deps / amd64-only images |
| Stacks with RIs / Savings Plans | Yes | Yes — deepest combined discount on steady state |
| Best for | Workloads pinned to x86-only binaries | Almost everything else — default first choice |
Situation: The bill had grown ~3x in 18 months as the product scaled. The team knew Graviton was "probably worth it" but had stalled twice: no spare engineering time to build arm64 CI, and genuine nervousness about migrating the production PostgreSQL primary. A couple of native Python dependencies in the API image were the unknown that kept blocking the recompile path.
What CloudRoute did: Routed within 20 hours to a US-East partner with prior Graviton + Django experience. Partner ran a one-week benchmark + dependency audit, then sequenced it: Phase 1 flipped RDS PostgreSQL, ElastiCache, and the OpenSearch logging cluster to *g classes during maintenance windows (no app changes), and switched the runtime-language Lambdas to arm64. Phase 2 built a multi-arch image pipeline on ARM CI; the two native dependencies were resolved (one arm64 wheel existed, one base image swapped). Phase 3 moved Fargate services to ARM64 and recompiled the EC2/Fargate web tier behind a mixed-architecture rollout. The benchmark also exposed enough headroom to right-size two RDS classes down a tier. Engagement qualified for AWS partner funding via a Well-Architected Review.
Outcome: Combined compute + database spend down ~32% (RDS/cache/OpenSearch flips landed in week 2; the web-tier recompile completed by week 6). Net AWS bill dropped from ~$48K to ~$34K/month — about $168K/year — with the right-size-down stacking on top of the architecture switch. p95 latency on the API tier improved slightly post-migration. Because the work ran through an AWS-funded Well-Architected engagement, the customer paid $0 for the migration; CloudRoute's commission was paid by the partner from AWS funding.
engagement window: ~6 weeks · founder/eng time: ~12 hours · monthly saving: ~$14K (~32%) · cost to customer: $0 (AWS-funded)
CloudRoute routes you to a vetted AWS partner who runs the Graviton migration end-to-end — benchmark, multi-arch build, staged cutover, savings verified in Cost Explorer. Frequently AWS-funded, so qualifying teams cut the bill for $0.