EBS gp2 volumes that would cost less as gp3 after any inherited IOPS and throughput charges
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
| Field | Value |
|---|---|
| Rule IDs | RC-020 |
| Category | rightsizing |
| Severity | low |
| Metric | none — pure configuration read |
| Threshold | volume type gp2 with a positive net saving |
| Source | ZopNight |
| Permissions used | ec2:DescribeVolumes |
Where it applies
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
aws ec2 describe-volumes --filters Name=volume-type,Values=gp2 \ --query 'Volumes[].[VolumeId,Size,Iops,State]' --output tableAnything 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
- The volume type is
gp2. - ZopNight has the gp2 and gp3 per-GB rates for the volume’s Region, and gp3 is the cheaper of the two.
- 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:
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 costThe $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
- Take a snapshot if the data matters:
aws ec2 create-snapshot --volume-id vol-0123456789abcdef0. - 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 gp3Set--iopsor--throughputlower only after confirming the workload does not need the carried-over performance. - 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. - Watch
VolumeQueueLengthand latency after the change, and raise IOPS if the workload needs it.