Skip to main content

EC2 Cost Optimization

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.

  1. The EC2 bill is broken down by family, purchase option, and owner.
  2. Rightsizing comes first, from Compute Optimizer data.
  3. Graviton, Spot, and gp3 cut the unit rate.
  4. Savings Plans or RIs cover the steady base that is left.
  5. Commitments wait until rightsizing has settled.
  6. The result is a lower run rate you can attribute.

Last updated:

Built forAWS Solutions for DevOps & Platform EngineersFor CTOs
Industries servedSaaSStartups
Ask AI:ChatGPTClaudePerplexityGemini

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 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 covers the method in detail, and the 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.

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 and the 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:

CommitmentDiscount vs On-DemandFlexibilityBest fit
Compute Savings PlansUp to 66%Any family, size, Region, OS; also Fargate and LambdaSpend that will move, including Graviton migrations in progress
EC2 Instance Savings PlansUp to 72%Any size and OS within one family in one RegionStable families you will not migrate
Standard Reserved InstancesUp to 72%Fixed family; Regional RIs allow size flexibilityExisting RI processes, or capacity reservations in a zone

Discount figures are AWS’s published maximums. The RI vs Savings Plans decision guide walks through the trade-offs, and the 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 and AWS cost optimization services.

Price It Yourself First

Before an engagement, run your fleet through the EC2 pricing calculator to compare On-Demand, Spot, and Reserved rates by instance type, and read the EC2 On-Demand pricing breakdown for family-level rates and regional multipliers. For a published example of the full process, see our SaaS cost optimization case study, which took a monthly bill from $85k to $58k.

Key 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 Choose 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.

Step-by-Step Guides

Implementation guides for this service from our team of AWS experts.

AWS Rightsizing with Compute Optimizer: 32-Day Lookback, Performance Risk, and the Order of Operations (2026)

Compute Optimizer added 32-day lookback for cyclic workloads in 2025 — critical for monthly batch jobs that looked oversized on 14-day windows. In a June 2026 audit of a $48k/mo account, rightsizing recommendations alone modeled $11k/mo savings at low performance risk.

Read guide

AWS Graviton: The Complete Cost Optimization Guide for Production Workloads

AWS Graviton processors deliver 20-40% cost savings and better performance-per-watt. Complete guide: migration path, performance benchmarks, and production deployment patterns.

Read guide

EC2 Spot Instance Selection: A Data-Driven Approach to 60–90% Cost Reduction

Cheapest Spot pool is often the unstable one. July 2026: price-capacity-optimized + attribute-based selection, stability scoring, interruption hygiene — before you chase $/hr.

Read guide

Reserved Instances vs Savings Plans on AWS (2026): The Three-Way Choice, the 22-Month Break-Even, and When to Skip Commitment Entirely

Most "RI vs Savings Plan" content treats them as peers. In mid-2026 they are not. A 3-year All-Upfront Compute Savings Plan saves a composite ~$60k/mo SaaS roughly $864k over 3 years vs a 1-year No-Upfront plan—but breaks even at ~22 months and locks instance-family flexibility. Buy the wrong commitment and a Graviton migration strands the discount. Here is the decision tree we use.

Read guide

Amazon EC2 On-Demand Pricing: Instance Families, Regional Multipliers, and the Graviton Crossover (2026)

EC2 On-Demand is a matrix of family, size, OS, tenancy, and region. In us-east-1 (June 2026) a m7g.large Linux runs $0.0816/hr vs a g5.xlarge GPU at $1.006/hr. Graviton5 M9g/C9g now GA for new fleets.

Read guide

From Our Blog

In-depth guides and best practices from our certified AWS architects.

Frequently Asked Questions

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.

Find Out What Your EC2 Fleet Should Cost

Share a Cost Explorer export or read-only access and we will map rightsizing, Graviton, Spot, and commitment opportunities with dollar estimates.