Non-Nitro EC2 Instance -- Migrate for Better Performance
What does ZopNight detect here?
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.
Signal and threshold
| Field | Value |
|---|---|
| Rule IDs | RC-187 |
| Category | rightsizing |
| Severity | low |
| Metric | none — pure configuration read |
| Source | ec2_nitro.go |
Where it applies
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 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
- Identify the Nitro equivalent in the current instance-family lineup (e.g., m4 -> m5, c4 -> c5, t2 -> t3)
- Check application compatibility with Nitro networking (ENA driver)
- Stop instance, change type, start instance
- Verify application functionality and performance