# EC2 Older Instance Family

> EC2's m5, c5 and r5 families have same-size current-generation successors (m6i, c6i and r6i) at a lower on-demand rate. ZopNight recommends the swap only for instances averaging under 10% CPU over 30 days, pricing the saving from real catalog rates and abstaining below $5 a month.

Source: https://zop.dev/integrations/aws/recommendations/ec2-older-instance-family
Updated: 2026-08-19

---

## The cheapest migration in EC2

A same-size generation swap (m5.xlarge to m6i.xlarge, c5.2xlarge to c6i.2xlarge,
r5.large to r6i.large) keeps the vCPU count, the memory and the x86 architecture,
and pays [a lower on-demand hourly rate](https://aws.amazon.com/ec2/pricing/) for newer silicon. There is no re-architecture: stop the
instance, change the type, start it. The per-instance delta is small in percentage
terms, which is exactly why the rule prices it from the real catalog instead of
waving at a marketing figure.

## Every gate between a candidate and a finding

- The instance is running and its type starts with m5, c5 or r5.
- Average CPUUtilization, [reported natively by EC2 to CloudWatch](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html), is under 10% over the
  30-day window. When the CPU series is
  missing this suppressor cannot run and the rule proceeds. CPU here is an optional
  veto against migrating a busy box, not required evidence.
- CloudWatch-agent memory data, when present, gets its own veto: high measured
  memory use blocks the recommendation, since a memory-tight box should not be
  touched on CPU evidence alone.
- A monthly cost figure exists, both SKU on-demand rates are known, the successor's
  rate is genuinely lower, and the computed saving clears $5 a month. Any gap in the
  rate data means abstain, never an estimated fraction.

## The arithmetic

```text
savings = monthly cost x (1 - successor rate / current rate)
```

Both rates are live on-demand catalog prices for the exact SKUs in the instance's
region, and the recommendation quotes them per hour.

## See your candidates

```bash
aws ec2 describe-instances \
  --filters Name=instance-state-name,Values=running \
            "Name=instance-type,Values=m5.*,c5.*,r5.*" \
  --query 'Reservations[].Instances[].[InstanceId,InstanceType]' --output table
```

## Instances it deliberately skips

- m4, c4 and r4 types: those are pre-Nitro families owned by a separate rule, so
  one instance never receives two migration findings.
- ECS-managed instances, since their priced monthly blends in a management fee that would
  overstate the saving, and the fleet is not individually resizable anyway.
- Anything whose swap would change CPU architecture: a cold resize keeps the x86
  boot volume, so Graviton targets are never suggested by this rule.
