Running m5, c5 and r5 EC2 instances whose same-size m6i, c6i or r6i successor costs less
What does ZopNight detect here?
ZopNight flags running `m5`, `c5` and `r5` EC2 instances when the same-size `m6i`, `c6i` or `r6i` successor has a lower On-Demand rate in the instance's Region. The saving is that rate gap applied to the instance's monthly cost, shown only above $5, and instances averaging 10% CPU or more over 30 days are left alone.
Signal and threshold
| Field | Value |
|---|---|
| Rule IDs | RC-092 |
| Category | rightsizing |
| Severity | low |
| Metric | CPUUtilization |
| Threshold | successor rate lower, CPU < 10% or unmeasured |
| Evaluation window | 30d |
| Source | ZopNight |
| Permissions used | ec2:DescribeInstances · cloudwatch:GetMetricStatistics |
Where it applies
Newer Intel families give more for the same or less
AWS says M6i instances deliver up to 15% better price performance than M5,
and makes the same claim for
C6i against C5 and
R6i against R5. The sizes line up one for one:
an m6i.xlarge has the same 4 vCPUs and 16 GiB as an m5.xlarge, on the same x86 architecture.
Whether the hourly price drops depends on the Region. In US East (N. Virginia) the current On-Demand
Linux rates are identical for both generations: m5.large and m6i.large are both $0.096 an hour,
and c5.large and c6i.large both $0.085. There the move buys performance, not a lower bill, and
this rule stays silent. It reports a saving only where the successor is listed cheaper.
Listing m5, c5 and r5 instances
aws ec2 describe-instances \ --filters Name=instance-state-name,Values=running Name=instance-type,Values='m5.*','c5.*','r5.*' \ --query 'Reservations[].Instances[].[InstanceId,InstanceType,Placement.AvailabilityZone]' \ --output tableThen compare the two rates for your Region on the On-Demand pricing page.
When an instance qualifies
- The instance is running and its type is exactly an
m5,c5orr5size. Variants such asm5a,m5dorr5nare not matched. - It is not capacity launched and managed by Amazon ECS Managed Instances.
- If ZopNight has CPU data, the 30-day average is below 10%. Instances with no CPU data still qualify.
- Memory from the CloudWatch agent does not show heavy use; high memory blocks the change.
- Both On-Demand rates are known, the successor’s is lower, and the saving is at least $5 a month.
Instances outside this rule
Busier instances, at 10% average CPU or more, are not flagged here. Older pre-Nitro families such as
m4, c4 and r4 belong to
Non-Nitro EC2 Instance, Migrate for Better Performance,
and a move to ARM is priced by
Graviton Migration Opportunity.
The successor rate as the saving
saving = monthly cost x (1 - successor hourly rate / current hourly rate)Both rates are live On-Demand catalog prices for the same size. No assumed percentage is used, so an equal price means no finding.
Moving to the newer family
- Check any Reserved Instances or Savings Plans that the current family relies on.
- Stop the instance; AWS requires a stop to change the type, and a non-Elastic public IPv4 address is released.
- Change the type:
aws ec2 modify-instance-attribute --instance-id i-0123456789abcdef0 --instance-type Value=m6i.xlarge - Start it and watch the application for 48 hours.