What Happens When EC2 Usage Drops Below Savings Plan Rates?
When your actual hourly Amazon EC2 usage falls below your committed AWS Savings Plan hourly rate, you are still billed for the full committed amount for that specific hour. AWS Savings Plans operate on a strict use-it-or-lose-it hourly basis, meaning any unused portion of your commitment expires at the end of the hour and cannot be rolled over or credited to future billing periods. This article explains how AWS calculates hourly commitment utilization, the financial impact of underutilization, how commitment sharing across consolidated billing accounts can absorb excess capacity, and practical strategies to monitor and prevent wasted cloud spend.
Understanding the Hourly Commitment Model
An AWS Savings Plan is a flexible pricing model that offers lower prices on compute usage in exchange for a commitment to a consistent amount of usage, measured in dollars per hour, for a one-year or three-year term. Unlike On-Demand pricing, where you pay strictly for the compute capacity you consume down to the second, a Savings Plan establishes a baseline financial obligation for every single hour of the term.
To understand how AWS evaluates your usage against your commitment, it helps to examine the underlying billing formula. Let \(C\) represent your fixed hourly Savings Plan commitment in dollars, and let \(U\) represent your eligible compute usage during a given hour, calculated at the discounted Savings Plan rate. Your total hourly cost \(T\) for that compute usage is determined by:
\[T = C + \max(0, U - C)_{\text{On-Demand}}\]
There are two primary scenarios that occur each hour based on this relationship:
- Usage Exceeds Commitment (\(U > C\)): Your Savings Plan covers your usage up to the value of \(C\) at the discounted Savings Plan rate. Any excess usage beyond \(C\) is billed at standard On-Demand rates (or covered by other active discounts like Reserved Instances).
- Usage Drops Below Commitment (\(U < C\)): Your Savings Plan covers 100% of your eligible usage \(U\), so you incur zero On-Demand charges for eligible resources. However, you still pay the full committed amount \(C\).
The difference between what you committed to spend and what you actually consumed is the unused commitment, which can be expressed as:
\[W = \max(0, C - U)\]
Where \(W\) represents the wasted commitment in dollars for that hour. For example, if you have a commitment of \(C = \$10.00\) per hour, and during an off-peak maintenance window your discounted EC2 usage drops to \(U = \$6.50\) for that hour, you are still billed \(\$10.00\). The remaining \(W = \$3.50\) of unused commitment is forfeited.
Why Unused Commitments Do Not Roll Over
A common misconception among cloud architects and finance teams is that a Savings Plan commitment is evaluated on a monthly or annual average. In reality, the evaluation window is strictly sixty minutes, running from the top of the hour to the end of the hour.
If your usage drops below your commitment at 2:00 AM, leaving \(\$3.50\) of unused capacity, and then spikes above your commitment at 2:00 PM, resulting in \(\$5.00\) of On-Demand overages, the unused morning commitment cannot be applied to offset the afternoon spike. Each hour is reconciled independently in the AWS billing engine. Once the clock strikes the next hour, any unallocated commitment from the previous hour is permanently lost.
How AWS Minimizes Waste Automatically
Before any commitment is marked as unused during a low-usage hour, the AWS billing engine automatically attempts to maximize the value of your commitment across your environment using two mechanisms: highest-discount prioritization and organizational sharing.
Highest Discount Application
Within the single account that owns the Savings Plan, AWS evaluates all eligible running usage for that hour and applies the Savings Plan commitment to the resources that offer the highest discount percentage compared to On-Demand rates first. If your primary production EC2 instances scale down, the freed-up commitment will automatically trickle down to cover other eligible compute workloads that have smaller discount percentages, which might otherwise have been running at On-Demand rates.
Consolidated Billing and AWS Organizations
If your AWS account is part of an AWS Organization with consolidated billing enabled and Savings Plan sharing turned on, your commitment is not trapped inside a single account.
- Owning Account Priority: AWS first applies the hourly commitment to eligible usage within the account that purchased the Savings Plan.
- Organization-Wide Overflow: If the owning account's usage drops below the committed hourly rate, the leftover commitment automatically floats to other member accounts within the AWS Organization that have eligible compute usage running during that exact same hour.
Because of this sharing mechanism, a drop in usage within one specific project or account does not necessarily result in wasted spend for the business as a whole, provided another department or environment has uncovered On-Demand usage during that same hour to absorb the excess commitment.
The Role of Savings Plan Types in Underutilization
The likelihood of your usage dropping below your committed rate depends heavily on the type of Savings Plan you purchase:
- EC2 Instance Savings Plans: These offer the deepest
discounts (up to 72%) but are restricted to a specific instance family
(such as
m6iorc7g) within a single AWS Region. If you scale down anm6icluster inus-east-1and spin up workloads inus-west-2or migrate tor6iinstances, the EC2 Instance Savings Plan cannot follow that usage. Your eligible usage drops, and the commitment goes unused. - Compute Savings Plans: These offer slightly lower discounts (up to 66%) but apply broadly across any EC2 instance family, size, operating system, tenancy, and AWS Region, as well as AWS Fargate and AWS Lambda usage. If your EC2 usage drops at night, a Compute Savings Plan can automatically shift to cover overnight batch processing jobs running on AWS Fargate or serverless functions executing in AWS Lambda, significantly reducing the risk of falling below your committed hourly rate.
How to Monitor and Prevent Unused Commitments
While occasional hourly dips may still result in net savings over standard On-Demand pricing—since discounts often range from 30% to 72%—frequent underutilization erodes your effective savings rate. You can track and mitigate this using built-in AWS tools and architectural practices.
Track Utilization in AWS Cost Explorer
AWS Cost Explorer provides a dedicated Savings Plans Utilization Report. In this report, utilization percentage for a given hour is calculated as:
\[\text{Utilization (\%)} = \left( \frac{U}{C} \right) \times 100\]
When your actual usage drops below your commitment, your utilization falls below 100%. The Utilization Report explicitly highlights your Total Commitment, Used Commitment, and Unused Commitment in dollars, allowing you to pinpoint the exact hours or days of the week where capacity is being wasted.
Configure AWS Budgets for Utilization Alerts
Instead of discovering unused commitments at the end of the month, you can configure AWS Budgets to create a Savings Plans Utilization Budget. By setting a utilization threshold—for example, alerting your FinOps or engineering team whenever average daily utilization drops below 90%—you can investigate whether an application was decommissioned, migrated to an unsupported instance family, or scaled down permanently.
Right-Size Commitments to Your Baseline
To prevent hourly usage from dropping below your committed rate, avoid sizing your Savings Plan to match your average or peak usage. Instead, analyze your historical hourly usage graphs and commit only to your minimum baseline usage (often referred to as the "waterline"). By sizing your commitment \(C\) so that it sits at or slightly below your lowest off-peak hourly usage, you ensure 100% utilization around the clock, while handling diurnal traffic spikes with flexible On-Demand or Spot Instances.