# M9g / M9gd adoption decision matrix

Use after reading the [EC2 M9g Graviton5 GA field guide](https://www.factualminds.com/blog/ec2-m9g-m9gd-graviton5-ga-2026/). Score each row **0–2** (no / partial / yes). Sum ≥ 14 → pilot M9g in non-production this sprint. Sum 8–13 → queue for next RI/Savings Plan renewal. Sum &lt; 8 → stay on current family until a blocker clears.

| # | Question | 0 | 1 | 2 |
|---|----------|---|---|---|
| 1 | Workload runs on Graviton4 (m8g/c8g/r8g) or container images already publish `linux/arm64`? | x86-only binaries | Mixed arch in CI | Full arm64 in prod |
| 2 | Instance family is general-purpose (app servers, APIs, microservices, moderate DB)? | Memory-heavy OLTP needing r8g | Mixed | m8g-class fit |
| 3 | Need local NVMe scratch (caches, batch temp, log buffers)? | EBS-only OK | Some temp I/O | High local IOPS (→ M9gd) |
| 4 | Region available? (us-east-1, us-east-2, us-west-2, eu-central-1 per Jun 2026 GA) | Wrong region | DR region only | Primary in GA region |
| 5 | No active 1y/3y RI on M8g for this fleet? | RI lock-in &gt; 6 mo | RI expires &lt; 90d | On-Demand / SP |
| 6 | Autoscaling group or ASG launch template can roll 10% canary? | Fixed single instance | Manual only | ASG + health checks |
| 7 | Observability baseline exists (p95 latency, CPU, credit balance if any)? | No metrics | Dashboard only | Alarms + load test |
| 8 | Compliance reviewed Nitro Isolation Engine / shared tenancy needs? | Dedicated Host required unreviewed | Standard tenancy OK | Security signed off |
| 9 | Agentic AI or bursty inference on same fleet (reasoning, codegen)? | Batch only | Some LLM sidecars | Real-time agent loops |
| 10 | FinOps owner will compare $/req after 2-week canary? | No owner | Ad-hoc | Tagged canary + CE report |

**M9g vs M9gd quick rule:** Choose **M9gd** when ephemeral local NVMe removes EBS chatter or latency (media transcode scratch, log aggregation buffers, Redis-style persistence you accept losing on stop). Choose **M9g** when all durable data lives on EBS, EFS, or S3.
