How to evaluate GP2 to GP3 migration savings
Migrating Amazon EBS volumes from GP2 to GP3 is one of the safest large savings in AWS: GP3 offers up to 20% lower per-GB pricing, the conversion runs while instances keep working, and in one real account it was worth $18,890 per month. This guide shows how to measure the opportunity in your account with CloudPouch and what to check before converting.
Why GP2 volumes overpay
Section titled “Why GP2 volumes overpay”AWS introduced GP3 in December 2020 with lower per-GB pricing than GP2 and performance you configure independently of volume size (GP2 couples IOPS to gigabytes, which forces oversizing). Every account created before then — and every account whose infrastructure-as-code still defaults to gp2 — keeps paying the old rate for no benefit. Nothing is broken, so nothing gets flagged; the money just leaks through the volume type.
In the account behind our GP2-to-GP3 case study (analyzed in late 2021), that leak was around 17,000 GP2 volumes totaling 944,875 GB and roughly $100,000 per month under the EBS:VolumeUsage.gp2 usage type. CloudPouch estimated a 20% saving — $18,890 per month, almost a quarter of a million dollars a year — from the type change alone.
Measure your own opportunity
Section titled “Measure your own opportunity”- Open CloudPouch in the Current month view.
- Scroll to the AWS Services table and select the EC2 - Other row. AWS books EBS volume charges here, not under a service called “EBS” — this is why GP2 spend hides so well.
- Open the UsageType cost chart and look for
EBS:VolumeUsage.gp2. That line is your monthly GP2 spend. - Click Check Cost Insights. CloudPouch connects to AWS, inspects the deployed volumes, and shows the estimated GP3 saving.
Since v1.48.0, GP2-to-GP3 recommendations appear as part of the EBS Volume Type Advisor, which evaluates all attached volumes against real CloudWatch usage — so alongside the GP3 conversions you may also see cheaper options the flat migration would miss, such as moving idle volumes to Cold HDD (sc1). GP2-to-GP3 savings are shown even before CloudWatch data is available.
The same run also flags unattached volumes and volumes attached to stopped instances — worth reviewing while you are there.
Your percentage will differ from 20%: it depends on regions, volume sizes, and performance settings. Check current EBS pricing for your regions before quoting a number.
Before you migrate
Section titled “Before you migrate”Review the candidate list rather than converting everything blindly:
- Provisioned IOPS and throughput settings. GP2 volumes over 1 TB have baseline IOPS that a default GP3 configuration might not match — carry performance settings over deliberately. CloudPouch’s savings estimate is the flat per-GB price difference; it does not add the cost of extra GP3 IOPS or throughput such volumes may need.
- Latency-sensitive production workloads. Migrate a low-risk batch first and watch it.
- Volumes managed by infrastructure-as-code. Change the template too, or your next deployment recreates GP2 volumes.
How the migration works
Section titled “How the migration works”The conversion uses Amazon EBS Elastic Volumes and does not require stopping or detaching anything — instances keep running throughout. For a handful of volumes, the console or aws ec2 modify-volume is enough. At scale, automate with two EC2 API calls: DescribeVolumes to list and filter GP2 candidates, then ModifyVolume to convert each one to GP3.
Two useful properties of the process:
ModifyVolumereturns immediately and migrates asynchronously; a large volume can take up to about 6 hours to finish.- GP3 pricing applies from the start of the migration, not the end — the saving begins the moment you call the API.
In the case-study account, nearly 1 PB of volumes was converted at the end of 2021 with no EBS or EC2 issues afterwards.
Keep the saving from drifting back
Section titled “Keep the saving from drifting back”If you cannot control how new EC2 instances and volumes are deployed, new GP2 volumes will keep appearing after your migration pass. A small scheduled Lambda function that finds and converts newly created GP2 volumes keeps the account clean. Re-run CloudPouch after a month to confirm EBS:VolumeUsage.gp2 is trending to zero.