---
title: Amazon EC2 Cost Optimization
description: Amazon EC2 cost optimization: Savings Plans and Reserved Instance strategy, Spot fleets, Graviton migration, Compute Optimizer rightsizing, and gp2 to gp3 EBS migration.
url: https://www.factualminds.com/services/aws-ec2-cost-optimization/
category: cloud
updated: 2026-10-24
---

# Amazon EC2 Cost Optimization

> Most EC2 bills carry three kinds of waste: oversized instances, On-Demand rates on steady workloads, and commitments bought before rightsizing. We fix them in that order, so you never lock in a discount on capacity you do not need.

## Why EC2 Bills Stay High

EC2 is usually the largest line on an AWS bill, and the waste in it has a predictable shape. Instances are sized for a launch-day guess and never revisited. Steady workloads stay on On-Demand rates for years. Commitments get bought against the oversized fleet, which turns a temporary problem into a three-year contract. And EBS volumes created before gp3 existed are still paying gp2 rates.

We work the problem in a fixed order because each step changes the baseline for the next one.

## Step 1: Measure and Rightsize

Rightsizing starts with [AWS Compute Optimizer](https://aws.amazon.com/compute-optimizer/) recommendations, but we do not apply them blind. Compute Optimizer needs the CloudWatch agent to see memory, and an instance that looks idle on CPU can be memory-bound. For each candidate we check:

- **p99 CPU and memory**, not averages, over at least 14 days
- **Burst patterns** such as nightly batch or month-end jobs that a short window misses
- **Instance generation**, since moving from m5 to m7g or m8g often beats a size change

The [rightsizing playbook](https://www.factualminds.com/blog/aws-rightsizing-compute-optimizer-playbook-2026/) covers the method in detail, and the [rightsizing savings calculator](https://www.factualminds.com/tools/aws-rightsizing-savings-calculator/) gives a first estimate from your instance list.

## Step 2: Change the Architecture Where It Pays

**Graviton.** Arm64 instances list below their x86 equivalents: in our pricing data an m7g.large is $0.0816/hr against $0.1008/hr for an m7i.large. We rebuild container images as multi-arch, benchmark each service on Graviton, and move the ones that hold their throughput. See the [Graviton cost optimization guide](https://www.factualminds.com/blog/aws-graviton-cost-optimization-guide/).

**Spot.** For stateless and fault-tolerant capacity, Spot runs at up to 90% off On-Demand. Safe Spot use needs diversified instance types, the price-capacity-optimized allocation strategy, Capacity Rebalancing, and a shutdown handler for the two-minute notice. On EKS, Karpenter handles most of this. The [Spot selection guide](https://www.factualminds.com/blog/ec2-spot-instance-intelligent-selection-cost-optimization/) and the [Spot instance advisor](https://www.factualminds.com/tools/aws-spot-instance-advisor/) help pick pools.

**EBS gp2 to gp3.** gp3 is 20% cheaper per GiB-month than gp2 and decouples IOPS from size. We convert in place and set IOPS and throughput explicitly for any volume whose gp2 baseline was above 3,000 IOPS.

## Step 3: Commit Against the Smaller Baseline

Only after the fleet is rightsized and the architecture changes are in flight do we buy commitments:

| Commitment | Discount vs On-Demand | Flexibility | Best fit |
| --- | --- | --- | --- |
| Compute Savings Plans | Up to 66% | Any family, size, Region, OS; also Fargate and Lambda | Spend that will move, including Graviton migrations in progress |
| EC2 Instance Savings Plans | Up to 72% | Any size and OS within one family in one Region | Stable families you will not migrate |
| Standard Reserved Instances | Up to 72% | Fixed family; Regional RIs allow size flexibility | Existing RI processes, or capacity reservations in a zone |

Discount figures are AWS's published maximums. The [RI vs Savings Plans decision guide](https://www.factualminds.com/blog/aws-reserved-instances-vs-savings-plans-decision-guide-2026/) walks through the trade-offs, and the [Savings Plans calculator](https://www.factualminds.com/tools/aws-savings-plans-calculator/) models coverage at your spend level.

## Step 4: Keep the Savings

Savings decay without guardrails. We set up AWS Budgets, Cost Anomaly Detection, and alerts on Savings Plans coverage and utilization, and hand over a monthly review checklist. For a full FinOps operating model beyond EC2, see [FinOps consulting](https://www.factualminds.com/services/finops-consulting/) and [AWS cost optimization services](https://www.factualminds.com/services/aws-cloud-cost-optimization-services/).

## Price It Yourself First

Before an engagement, run your fleet through the [EC2 pricing calculator](https://www.factualminds.com/tools/aws-ec2-pricing-calculator/) to compare On-Demand, Spot, and Reserved rates by instance type, and read the [EC2 On-Demand pricing breakdown](https://www.factualminds.com/blog/amazon-ec2-on-demand-pricing-instance-families-2026/) for family-level rates and regional multipliers. For a published example of the full process, see our [SaaS cost optimization case study](https://www.factualminds.com/case-study/saas-cost-optimization-30-percent-reduction/), which took a monthly bill from $85k to $58k.

## Features

### Compute Optimizer Rightsizing
Instance-level recommendations from AWS Compute Optimizer, checked against CloudWatch memory and p99 CPU before anything is resized, so a cheaper instance does not become a latency incident.

### Savings Plans and RI Portfolio
A commitment mix sized to your post-rightsizing baseline: Compute Savings Plans where workloads move between families or to Fargate and Lambda, EC2 Instance Savings Plans or Standard RIs where a family is stable.

### Spot Fleets
Spot for stateless, fault-tolerant capacity with diversified instance pools, price-capacity-optimized allocation, Capacity Rebalancing, and two-minute interruption handling built into the deploy path.

### Graviton Migration
Arm64 builds, multi-arch container images, and a per-service benchmark so the Graviton move is measured on your workload, not on a vendor slide.

### EBS gp2 to gp3 Migration
In-place gp2 to gp3 volume modification with explicit IOPS and throughput settings, so volumes that relied on gp2 burst behavior keep their performance.

### Guardrails That Keep Savings
Budgets, Cost Anomaly Detection, and Savings Plans coverage and utilization alerts, so the bill does not drift back after the engagement ends.

## Why FactualMinds

### Rightsize Before You Commit
Commitments are bought against the fleet after rightsizing, not before. Reserving an oversized instance locks in waste for one to three years.

### Published Results
Our cost-optimization engagements average 35% AWS cost reduction. One SaaS client went from $85k to $58k per month (32%), and that case study is published in full.

### AWS Select Tier Services Partner
AWS Select Tier Services Partner with 50+ AWS certifications on staff.

### Free Tools You Can Check Us With
Our EC2 pricing, Savings Plans, rightsizing, and Spot calculators are public. Run the numbers yourself before you talk to us.

## FAQ

### How does EC2 billing work? Is there a minimum billing time?
EC2 bills only while an instance is running. Amazon Linux, Windows, RHEL, Ubuntu, and Ubuntu Pro instances are billed per second with a 60-second minimum each time an instance starts. SUSE Linux Enterprise Server instances bill each partial hour as a full hour. Per-second billing applies across On-Demand, Spot, and Reserved purchase options.

### Should we buy Compute Savings Plans, EC2 Instance Savings Plans, or Reserved Instances?
Compute Savings Plans save up to 66% off On-Demand and apply across instance families, sizes, Regions, operating systems, Fargate, and Lambda. EC2 Instance Savings Plans and Standard RIs save up to 72% but are tied to one instance family in one Region. Use Compute Savings Plans for the share of spend you expect to move (for example a Graviton migration in progress) and Instance Savings Plans for families that will not change. Neither type reserves capacity; pair them with On-Demand Capacity Reservations when you need guaranteed capacity.

### Which workloads are safe to run on Spot?
Spot Instances run at up to 90% off On-Demand, but EC2 can reclaim them with a two-minute notice. They suit stateless web tiers behind a load balancer, batch and CI jobs, containers on EKS or ECS with multiple instance types allowed, and big-data workers that checkpoint. Keep databases, single-instance stateful services, and anything without a graceful shutdown path on On-Demand or committed capacity.

### How much does a Graviton migration save?
On list price alone, an m7g.large (Graviton3) is $0.0816/hr in us-east-1 against $0.1008/hr for an m7i.large with the same 2 vCPU and 8 GiB, about 19% lower per hour. Whether it saves more than that depends on your workload throughput per instance, which is why we benchmark each service before migrating it. Interpreted and JVM workloads usually move with a rebuild; native dependencies without arm64 builds are the usual blocker.

### Is gp2 to gp3 migration risky?
gp3 costs 20% less per GiB-month than gp2 and includes 3,000 IOPS and 125 MiB/s regardless of size. The change is an in-place volume modification with no detach. The risk is performance, not data: a large gp2 volume earns 3 IOPS per GiB, so a 2 TiB gp2 volume has 6,000 baseline IOPS and needs those IOPS provisioned explicitly on gp3 to stay equivalent.

### What could go wrong in an EC2 cost project?
The common failures are buying three-year commitments before rightsizing, resizing on average CPU while ignoring memory pressure and p99 latency, moving stateful services to Spot, and converting gp2 volumes without matching their burst IOPS. We sequence the work to avoid each one: measure, rightsize, migrate architecture, then commit.

---

*Source: https://www.factualminds.com/services/aws-ec2-cost-optimization/*
