# Non-Nitro EC2 Instance -- Migrate for Better Performance

> Pre-Nitro EC2 families like m4, c4, t2, and non-metal i3 run on Xen virtualization with a documented Nitro successor available. ZopNight prices the migration at the genuine catalog delta: cost times (1 minus destination/source rate). The rule abstains when the successor isn't strictly cheaper; the inflated 0.20 fallback is gone.

Source: https://zop.dev/integrations/aws/recommendations/non-nitro-ec2-instance-migrate-for-better-performance
Updated: 2026-08-19

---

## Pre-Nitro families with a named successor

- resource.Status: running
- InstanceType in preNitroFamilies (read directly from the instance type). i3 is in preNitroFamilies (2026-07 fix): per AWS's "Instances built on the AWS Nitro System" docs, only i3.metal (and i3en) run on Nitro; plain (non-metal) i3.* sizes are still Xen-virtualized, matching nitroMap's own i3 → i4i entry. The rule special-cases the .metal size (not the family) to abstain on i3.metal since it already runs on Nitro.
- a concrete Nitro successor must exist (skuladder.NitroEquivalent ≠ "", and f1/h1/p2 have no published replacement → abstain, no target to name or price). p2 was removed from nitroMap (2026-07 fix): its natural successor p3 is not itself Nitro-based (only p3dn is), so mapping p2→p3 made the "migrate to Nitro" rationale false for the target.
- cost basis (PricingForUID > 0) + SKU rates for both the current type and the Nitro target (the rule implements TargetSKUCandidates so fetchSKURates pre-fetches the upsize family swap)

## The catalog rate delta to the successor SKU

the saving is the genuine catalog delta between the current SKU's [on-demand rate](https://aws.amazon.com/ec2/pricing/) and the Nitro successor's: savings = cost × (1 − dstRate/srcRate). model.DeriveCatalogDiffSavings now emits the real small delta instead of inflating to the old 0.20 fallback (was up to 5× over on same-arch swaps). Abstains when either rate is missing or the successor is not strictly cheaper (dstRate ≥ srcRate), and never falls back to a flat fraction of cost under the rightsizing category.

## Stopping, retyping, restarting

1. Identify the Nitro equivalent in [the current instance-family lineup](https://aws.amazon.com/ec2/instance-types/) (e.g., m4 -> m5, c4 -> c5, t2 -> t3)
2. Check application compatibility with Nitro networking (ENA driver)
3. Stop instance, change type, start instance
4. Verify application functionality and performance
