Skip to main content
rightsizing · aws

EBS gp2 volumes that would cost less as gp3 after any inherited IOPS and throughput charges

resource types
1
rule IDs covered
1
severity
low

What does ZopNight detect here?

ZopNight flags EBS `gp2` volumes and prices a switch to `gp3`, which AWS lists at $0.08 per GB-month against $0.10 for gp2 in us-east-1. The storage saving is reduced by any IOPS above 3,000 or throughput above 125 MiB/s the volume would carry over, and a net result of zero or less shows nothing.

Signal and threshold

How ZopNight evaluates EBS gp2 volumes that would cost less as gp3 after any inherited IOPS and throughput charges.
Field Value
Rule IDsRC-020
Categoryrightsizing
Severitylow
Metricnone — pure configuration read
Thresholdvolume type gp2 with a positive net saving
SourceZopNight
Permissions usedec2:DescribeVolumes

gp3 charges less per GB and separates performance from size

AWS describes gp3 volumes as offering a 20 percent lower price per GiB than gp2. The EBS price data for US East (N. Virginia) shows $0.08 per GB-month for gp3 and $0.10 for gp2. Every gp3 volume includes 3,000 IOPS and 125 MiB/s in that storage price, and you can buy more, up to 80,000 IOPS and 2,000 MiB/s. gp3 does not burst: it sustains what you provision.

gp2 works the other way. Baseline IOPS are 3 per GiB, from a floor of 100 up to 16,000 at 5,334 GiB, and volumes under 1 TiB can burst to 3,000 IOPS on I/O credits. So a small gp2 volume gets better steady performance on gp3 and pays less, while a large one carries its higher IOPS across.

Listing gp2 volumes and their performance

Terminal window
aws ec2 describe-volumes --filters Name=volume-type,Values=gp2 \
--query 'Volumes[].[VolumeId,Size,Iops,State]' --output table

Anything larger than 1,000 GiB shows more than 3,000 IOPS in the Iops column; that surplus will be billed on gp3 unless you lower it.

Inputs the saving is built from

  1. The volume type is gp2.
  2. ZopNight has the gp2 and gp3 per-GB rates for the volume’s Region, and gp3 is the cheaper of the two.
  3. The volume’s current provisioned IOPS and throughput, when known. If they are not recorded, ZopNight assumes the volume fits inside the gp3 baseline, the same assumption it uses for the volume’s own cost.

Volumes that produce no recommendation

Missing rates, a Region where gp3 is not cheaper, and a net saving of zero or less all mean nothing is shown. So does a result equal to or larger than the volume’s current cost, which would imply the volume becomes free. There is no flat percentage fallback. RDS storage is a different story, because RDS bills gp2 and gp3 at the same rate; see RDS Storage Type gp2, Migrate to gp3.

Netting inherited performance out of the saving

AWS states that when you change a gp2 volume to gp3 without naming IOPS or throughput, EBS provisions whichever is higher: the gp2 volume’s equivalent performance or the gp3 baseline. ZopNight prices that carry-over:

Terminal window
storage saving = monthly cost x (1 - gp3 rate / gp2 rate)
extra cost = (IOPS above 3,000 x $0.005) + (MiB/s above 125 x $0.04)
saving = storage saving - extra cost

The $0.005 per IOPS-month and roughly $0.04 per MiB/s-month match the us-east-1 gp3 rates. A 2,000 GiB gp2 volume costs $200 a month and has 6,000 IOPS: storage drops by $40, the 3,000 extra IOPS add $15, so the saving before any throughput charge is $25.

Changing the volume type in place

  1. Take a snapshot if the data matters: aws ec2 create-snapshot --volume-id vol-0123456789abcdef0.
  2. Modify it without naming IOPS or throughput, so it keeps its current performance and the saving matches the finding: aws ec2 modify-volume --volume-id vol-0123456789abcdef0 --volume-type gp3 Set --iops or --throughput lower only after confirming the workload does not need the carried-over performance.
  3. Follow progress with aws ec2 describe-volumes-modifications. On instances that support Elastic Volumes the change happens without detaching the volume; AWS says a 1 TiB volume can take up to six hours.
  4. Watch VolumeQueueLength and latency after the change, and raise IOPS if the workload needs it.

See it fire on your bill.

Connect an account read-only. The first findings land in minutes.

472 rule families across 353 resource types on 22 platforms. Every threshold, metric, and IAM action is documented on these pages before you grant anything.

472 rule families documented
353 resource types covered
read-only default access level
Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console· Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console·