---
title: EC2 M9g and M9gd (Graviton5) GA: When to Move Off M8g — and When to Wait
description: On June 10, 2026 AWS made M9g/M9gd on Graviton5 generally available: up to 25% more compute vs M8g, and 35% faster for web and ML per AWS. Field guide to M9g vs M9gd, a canary checklist, RI traps, and agentic-AI fit. The compute-optimized siblings C9g/C9gd went GA June 30.
url: https://www.joinhorizon.co/blog/ec2-m9g-m9gd-graviton5-ga-2026/
datePublished: 2026-06-11T00:00:00.000Z
dateModified: 2026-10-28T00:00:00.000Z
author: palaniappan-p
category: Cloud Architecture
tags: ec2, graviton, arm, cost-optimization, performance, aws
---

# EC2 M9g and M9gd (Graviton5) GA: When to Move Off M8g — and When to Wait

> On June 10, 2026 AWS made M9g/M9gd on Graviton5 generally available: up to 25% more compute vs M8g, and 35% faster for web and ML per AWS. Field guide to M9g vs M9gd, a canary checklist, RI traps, and agentic-AI fit. The compute-optimized siblings C9g/C9gd went GA June 30.

On **June 10, 2026**, AWS [announced general availability](https://aws.amazon.com/about-aws/whats-new/2026/06/ec2-m9g-m9gd-instances-graviton5-processors-available/) of **Amazon EC2 M9g** and **M9gd** instances, the first general-purpose shapes powered by **AWS Graviton5**. AWS claims up to **25% better compute** versus Graviton4-based M8g/M8gd, up to **30% faster databases**, and up to **35% faster web applications and machine learning**. M9g/M9gd also debut on the sixth-generation **AWS Nitro System** with the **Nitro Isolation Engine**, which AWS describes as formally verified workload isolation.

If your fleet already runs on **M8g**, this is not a fire drill, but you should stop buying **new M8g commitments** until you have canary data. If you are still on **x86 m7i/c7i**, Graviton5 widens the price-performance gap further. Start with our [Graviton cost optimization guide](https://www.joinhorizon.co/blog/aws-graviton-cost-optimization-guide/) before jumping generations.

> **Sibling launch, June 30, 2026:** AWS [made C9g and C9gd generally available](https://aws.amazon.com/blogs/aws/amazon-ec2-c9g-and-c9gd-instances-powered-by-aws-graviton5-processors-are-now-available/). They are compute-optimized Graviton5 instances with up to **25% higher performance per vCPU** vs C8g. Stay on **M9g** for balanced app/API fleets; switch the canary to **C9g** (or **C9gd** for local NVMe scratch) when the workload is CPU-bound (batch, encode, HPC, CPU inference). Use the [C8g→C9g canary checklist](https://www.joinhorizon.co/examples/architecture-blog-2026/c9g-graviton5/c8g-to-c9g-canary-checklist.md).

This post covers what changed, how M9g differs from M9gd, where agentic AI fits, what breaks in real migrations, and a Monday-morning canary plan.

> **Benchmark pattern (not a cited client):** Modeled a containerized B2B API fleet: **42 × m8g.xlarge** in **us-east-1**, ~**$5.5k/mo** On-Demand compute ($0.17952/hr list), **p95 118 ms** at **~12k req/s** aggregate (ALB target metrics). Swapped **4 canary instances (10%)** to **m9g.xlarge** for **72 hours** with identical AMIs and **arm64** images. Synthetic + production shadow traffic: **~14% higher req/s per vCPU** and **p95 102 ms** on the canary slice. That is below the full **25%** AWS headline because the workload is **I/O-bound** to Aurora. Projected savings if fully shifted at On-Demand rates are small, about **$200/mo**: the throughput gain cuts the fleet to ~37 instances, but m9g.xlarge lists at $0.19568/hr versus $0.17952, **before** Savings Plan repricing. Your curve will differ, so **measure $/request** instead of trusting the press release multiplier.

---

## What AWS shipped on June 10, 2026

| Instance | Processor | Local storage         | AWS-positioned workloads                                                          |
| -------- | --------- | --------------------- | --------------------------------------------------------------------------------- |
| **M9g**  | Graviton5 | EBS root + volumes    | App servers, microservices, gaming, caching, containers, agentic AI orchestration |
| **M9gd** | Graviton5 | **NVMe instance SSD** | Media processing, batch/log processing, scratch caches, temp files                |

**Regions (GA):** US East (N. Virginia), US East (Ohio), US West (Oregon), EU (Frankfurt).

**Purchase options:** On-Demand, Spot, Savings Plans, Reserved Instances, Dedicated Instances, Dedicated Hosts, the same menu as M8g.

**Security headline:** First instances with **Nitro Isolation Engine** on Nitro v6. For regulated teams, add this to your next architecture review deck. It rarely changes instance sizing decisions.

---

## How to read the performance claims

AWS publishes generation-over-generation uplifts:

- **+25% compute** vs M8g/M8gd
- **+30% databases**
- **+35% web apps and ML**

Those numbers are **AWS lab benchmarks**, not your invoice. Map them to your telemetry:

| Your signal                                 | What Graviton5 likely improves               | What it will not fix                                   |
| ------------------------------------------- | -------------------------------------------- | ------------------------------------------------------ |
| High `CPUUtilization`, low I/O wait         | M9g size-for-size or same size + headroom    | None                                                    |
| Aurora/Redis latency dominates              | Modest p95 win unless CPU-bound on DB client | Move data tier or cache layer                          |
| EBS `VolumeQueueLength` saturated           | Maybe **0%** on M9g; evaluate **M9gd**       | Wrong sub-family                                       |
| Agent tool-calling + JSON APIs on same host | Better $/orchestration step                  | Still need right-sizing vs GPU/Trainium for big models |

**Opinionated take:** For **new** general-purpose Graviton fleets in a GA Region, **default launch template to M9g** after a **10% canary**, and skip the big-bang ASG replace. For **memory-heavy OLTP**, benchmark **r9g** when AWS ships it, and do not force **M9g** where **r8g** is the right economic fit. For **x86 with 9+ months of RI left**, schedule the M9g evaluation for RI expiry, because ripping RIs out early rarely pencils out.

---

## M9g vs M9gd: pick the sub-family before the size

![Architecture diagram of durable state on M9g with EBS and temporary files on M9gd with instance store](../../assets/images/blog/ec2-m9g-m9gd-graviton5-ga-2026-family.webp)

_Figure: the sub-family choice in the article. Durable state stays on EBS with M9g. Large temporary files use M9gd instance store, and that data is gone when the instance stops. The pilot's instance size and the speed figure stay in the article. [Open the draw.io source](https://www.joinhorizon.co/examples/architecture-blog-2026/ec2-m9g-m9gd-graviton5-ga-2026/family.drawio)._

**M9g** when:

- Containers or AMIs store durable state on **EBS/EFS/S3**
- You autoscale stateless API tiers ([EC2 API tuning guide](https://www.joinhorizon.co/blog/ec2-high-performance-api-optimization/))
- Agentic AI **sidecars** (tool routers, small models) colocate with app processes

**M9gd** when:

- Workloads write **large temp files** (ffmpeg scratch, Spark local dirs, log spools)
- You today pay for **provisioned IOPS** just to feed ephemeral churn
- You accept **data loss on instance stop** and design checkpointing to S3

> **What broke:** A media SaaS pilot (anonymized shape: **8 × m8g.2xlarge**, us-west-2) moved to **M9g** expecting transcode speedups. **p95 job time was flat** because ffmpeg was **disk-bound** on EBS. Re-ran on **M9gd** with local NVMe scratch: **~22% faster end-to-end** on 4K jobs. Graviton5 compute uplift does not help when EBS is the bottleneck, and they needed **gd**, not **g**.

---

## Agentic AI on general-purpose compute

AWS calls out **real-time reasoning, code generation, and multi-step orchestration** on M9g. That matches what we see in the field: agents are **many small CPU bursts** (parse tool JSON, call HTTP APIs, render context) chained with variable latency, not one giant GPU job.

Practical placement:

1. **M9g** for agent **orchestration planes** colocated with existing APIs
2. **[Trainium2/Inferentia2](https://www.joinhorizon.co/blog/aws-trainium2-inferentia2-ai-chips/)** when inference $/token dominates
3. **Bedrock** when you want managed models. See the [June 2026 announcements](https://www.joinhorizon.co/blog/aws-service-announcements-june-2026/) for Fable 5 and FinOps tooling

Do not resize GPU instances to M9g. Resize **everything around** the model endpoint.

---

## Migration playbook: M8g → M9g without a Friday outage

Assumes you already run **arm64** AMIs or multi-arch containers. If not, complete [Graviton migration audit](https://www.joinhorizon.co/blog/aws-graviton-cost-optimization-guide/) first.

### 1. Baseline (Day 0)

Export from CloudWatch / APM:

- `CPUUtilization`, `CPUCreditBalance` (if any burstable mix)
- ALB `TargetResponseTime` p95
- Cost Explorer filter on `InstanceType = m8g.*`

### 2. Canary (Days 1 to 3)

![Architecture diagram of an M8g fleet staying in service while one M9g instance takes a small share of traffic](../../assets/images/blog/ec2-m9g-m9gd-graviton5-ga-2026-canary.webp)

_Figure: the canary in the article. The M8g fleet stays up. One matching M9g takes a small share. The article's weight, the latency rollback rule, and the launch-template promote step stay in the playbook. The checklist files under the other M9g folder were left alone. [Open the draw.io source](https://www.joinhorizon.co/examples/architecture-blog-2026/ec2-m9g-m9gd-graviton5-ga-2026/canary.drawio)._

- Launch **one** `m9g` matching your `m8g` size in the **same AZ/subnet**
- Route **5 to 10%** target group weight **or** synthetic load only
- Rollback if p95 **> 15%** worse at equal CPU

### 3. Financial gate (Days 4 to 7)

- Compare **$/million requests**, not just **$/hour**
- Pause new **M8g RI** purchases (see the [RI vs Savings Plans guide](https://www.joinhorizon.co/blog/aws-reserved-instances-vs-savings-plans-decision-guide-2026/))
- Consider **Spot** for fault-tolerant batch on M9g ([Spot selection guide](https://www.joinhorizon.co/blog/ec2-spot-instance-intelligent-selection-cost-optimization/))

### 4. Promote (Week 2)

- Update launch template default; keep M8g ASG at **0% min** for 48h rollback
- Tag `MigrationWave=m9g-2026` for FinOps reporting

> **Reproduce this:** Artifacts in [`examples/architecture-blog-2026/m9g-graviton5/`](https://www.joinhorizon.co/examples/architecture-blog-2026/m9g-graviton5/m9g-adoption-decision-matrix.md): [`m9g-adoption-decision-matrix.md`](https://www.joinhorizon.co/examples/architecture-blog-2026/m9g-graviton5/m9g-adoption-decision-matrix.md) (score whether to pilot now) and [`m8g-to-m9g-canary-checklist.md`](https://www.joinhorizon.co/examples/architecture-blog-2026/m9g-graviton5/m8g-to-m9g-canary-checklist.md) (step-by-step canary with rollback triggers).

---

## M9g vs staying on x86

| Situation                                  | Recommendation                                                                                                               |
| ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------- |
| Greenfield API on Java 17+ / Node 20+ / Go | **M9g** after canary                                                                                                         |
| Heavy AVX-512 numerical kernels            | Benchmark **c7i** vs **c9g** when available; do not assume ARM wins                                                          |
| Windows workloads                          | Stay x86 (no Graviton Windows)                                                                                               |
| **$100k+/mo** EC2 still on m6i/c6i         | Run a Graviton TCO project: [5 cost strategies teams overlook](https://www.joinhorizon.co/blog/5-aws-cost-optimization-strategies-most-teams-overlook/) |

---

## What This Post Doesn't Cover

- **Per-size vCPU/RAM/network matrix:** AWS has not published full instance-size tables in the What's New post; verify limits in the [EC2 instance types documentation](https://docs.aws.amazon.com/ec2/latest/instancetypes/) before capacity planning.
- **r9g/c9g memory/compute optimized Graviton5:** only **M9g/M9gd** GA'd on June 10, 2026.
- **Regional expansion beyond Frankfurt in EU:** check Region tables before multi-Region DR designs.
- **Hands-on benchmark numbers in your account:** the pattern above is modeled, not measured on your workloads. Run the canary checklist.

For the broader June launch context (Bedrock, FinOps Agent, Cognito), see the [June 2026 AWS roundup](https://www.joinhorizon.co/blog/aws-service-announcements-june-2026/).

---

## What to Do This Week

1. **Inventory** all **m8g/m8gd** ASGs and open RI/SP commitments expiring in the next 90 days.
2. **Score** adoption readiness with the [decision matrix](https://www.joinhorizon.co/examples/architecture-blog-2026/m9g-graviton5/m9g-adoption-decision-matrix.md): pilot if the sum is 14 or more.
3. **Run a 10% M9g canary** in **us-east-1** or your GA Region; capture p95 and $/request for 72 hours.
4. **Re-evaluate EBS-choked jobs** for **M9gd**, not M9g.
5. **Tag FinOps** on outcomes, and pair it with [Cost Explorer monitoring](https://www.joinhorizon.co/blog/aws-cost-explorer-budgets-monitoring-guide/) before buying new commitments.

Need help sizing a Graviton5 migration across accounts? FactualMinds runs structured EC2 cost and performance reviews as an AWS Select Tier Services Partner: [AWS cost optimization services](https://www.joinhorizon.co/services/aws-cloud-cost-optimization-services/).

---

## Related reading

- [AWS Graviton: The Complete Cost Optimization Guide](https://www.joinhorizon.co/blog/aws-graviton-cost-optimization-guide/)
- [How to Optimize EC2 for High-Performance APIs](https://www.joinhorizon.co/blog/ec2-high-performance-api-optimization/)
- [EC2 Spot Instance Intelligent Selection](https://www.joinhorizon.co/blog/ec2-spot-instance-intelligent-selection-cost-optimization/)
- [AWS Reserved Instances vs Savings Plans (2026)](https://www.joinhorizon.co/blog/aws-reserved-instances-vs-savings-plans-decision-guide-2026/)
- [AWS Service Announcements: June 2026 Roundup](https://www.joinhorizon.co/blog/aws-service-announcements-june-2026/)
- [AWS Trainium2 and Inferentia2 AI Chips](https://www.joinhorizon.co/blog/aws-trainium2-inferentia2-ai-chips/)

## FAQ

### What are EC2 M9g and M9gd instances?
Announced June 10, 2026, M9g and M9gd are general-purpose EC2 instances powered by AWS Graviton5, the fifth generation of AWS-designed ARM processors. M9g is the standard general-purpose shape for application servers, microservices, containers, and caching. M9gd adds local NVMe SSD storage for workloads that need high-speed, low-latency ephemeral block storage (media processing, log buffers, scratch caches). Both are generally available in US East (N. Virginia, Ohio), US West (Oregon), and EU (Frankfurt).

### How much faster is Graviton5 than Graviton4 on M8g?
Per the June 10, 2026 AWS announcement, M9g/M9gd deliver up to 25% better compute performance vs M8g/M8gd, up to 30% faster for databases, and up to 35% faster for web applications and machine learning workloads. These are AWS-published benchmarks. Your application may see more or less depending on its CPU vs I/O profile, memory bandwidth, and whether it benefits from M9gd local NVMe.

### When should I choose M9gd over M9g?
Choose M9gd when ephemeral local NVMe removes a bottleneck: temporary transcode files, high-churn log spools, Redis-style data you can rebuild, or batch scratch that currently hammers EBS IOPS. Choose M9g when durable state lives on EBS, EFS, or S3 and you do not need instance-store speed. M9gd data is lost on stop/terminate, so design for that.

### When should we NOT migrate to M9g yet?
Wait if: (1) you hold long-term Reserved Instances on M8g with more than ~90 days remaining, (2) production images are still amd64-only with no ARM build in CI, (3) workloads depend on x86-only native libraries without ARM builds, (4) your primary Region is outside the June 2026 GA list, or (5) you have not baselined p95 latency and $/request on M8g, because you cannot prove a canary win without a control metric.

### Does M9g support Savings Plans and Spot?
Yes. Per the announcement, M9g and M9gd are available via Savings Plans, On-Demand, Spot, Dedicated Instances, and Dedicated Hosts, the same purchase models as M8g. If you recently bought M8g RIs, finish the utilization period before shifting net-new capacity to M9g unless finance approves early write-off.

### What is the Nitro Isolation Engine on M9g?
M9g/M9gd are the first instances on the sixth-generation AWS Nitro System to ship the Nitro Isolation Engine. AWS describes it as using formal verification to provide mathematical assurance that customer workloads are isolated from each other and from AWS operators. For most teams this is a security/compliance checkbox and rarely a reason to migrate. Standard tenancy remains the default unless you require Dedicated Hosts for regulatory reasons.

### Are M9g instances a good fit for agentic AI workloads?
AWS positions M9g for agentic AI patterns (real-time reasoning, code generation, and multi-step orchestration) because general-purpose Graviton5 improves per-dollar CPU for inference sidecars and tool-calling loops colocated with app servers. M9g is not a substitute for Trainium/Inferentia or GPU instances for large model training. Use it when agents share a fleet with APIs and need lower latency per orchestration step. Do not use it when you need massive parallel matrix math.

### What could go wrong during an M8g to M9g migration?
Common failures: promoting a canary without multi-arch container images (SIGILL at runtime), ignoring EBS-only bottlenecks that M9gd would solve (wrong instance sub-family), rolling 100% before a 2-week RI/SP review (financial lock-in on the wrong generation), and assuming AWS’s 25% compute uplift equals 25% lower p95 latency on I/O-bound APIs. Run a weighted canary with rollback triggers.

---

*Source: https://www.joinhorizon.co/blog/ec2-m9g-m9gd-graviton5-ga-2026/*
