Last Updated on February 4, 2021
Amazon Web Services (AWS) has launched the gp3 type EBS Volume and they are saying that it is 20% cheaper compared to gp2 types. Since the gp3 has a different pricing model compared to the gp2, I decided to go down this rabbit hole to see if the statement that gp3 is 20% cheaper than gp2 is always true.
My goal here is to confidently know that moving from a gp2 to gp3 will give us significant savings without the degraded performance.
TL;DR – Most of the time gp3 is cheaper than gp2. There are scenarios where the gp3 is more expensive than the gp2.
- gp2 and gp3 EBS Pricing Models
- The 20% Cheaper Statement
- Comparing gp2 and gp3 EBS Volume Types in terms of Cost
- Converting from gp2 to gp3 Notes
- Scheduling gp3 Performance for additional cheaper cost
gp2 and gp3 EBS Pricing Models
Based on the Amazon EBS Pricing page this is the pricing of gp2 and gp3 Volumes.
gp2 Pricing
gp2 Volume Pricing | $0.10 per GB-month of provisioned storage |
gp3 Pricing
gp3 Storage Pricing | $0.08/GB-month |
gp3 IOPS Pricing | 3,000 IOPS free and $0.005/provisioned IOPS-month over 3,000 |
gp3 Throughput Pricing | 125 MB/s free and $0.04/provisioned MB/s-month over 125 |
Note: Pricing below is based on N. Virginia Region. Different regions have different pricing but the concepts and percent discount will be the same.
The 20% Cheaper Statement
If we only look at the pricing of the gp3 in terms of Storage Size ($0.08/GB-month) compared to the pricing of gp2 ($0.10/GB-month) we can definitely say that gp3 is 20% cheaper than gp2 Volumes.
In reality, if you simply just change your EBS Volume from gp2 to gp3 without configuring the IOPS and Throughput of gp3, then you will have degraded performance just like the experience of Silas Hansen.
So when shifting your gp2 volumes to gp3, you also need to consider the performance of gp2 based on its size. Then you need to configure the gp3’s IOPS and Throughput to not to experience degraded performance.
If you want to know more about the performance of gp2 and gp3 EBS Volume Types you may visit the links below.
Comparing gp2 and gp3 EBS Volume Types in terms of Cost
Since the gp2 and gp3 Volume Types have different pricing details, it was challenging to show and compare the two in terms of cost and performance.
In order to show that shifting from gp2 to gp3 will not degrade performance, I decided to set the gp3 IOPS and Throughput based on the maximum performance of the gp2, then we will compare their prices from the minimum to the maximum volume size (1 GiB to 16 TiB).
This resulted in the spreadsheet on this link, when plotted it will result on the chart below.
From the graph above, it shows that the gp3 is not always cheaper than gp2 if we match the performance settings of the gp2 volume based on its size.
Note: From this point on, whenever I compare gp2 to gp3 what it means is that ‘gp3 is configured to the maximum IOPS and maximum Throughput of the gp2 of the same size’.
If we look at the cost of the smallest sized volume of 1 GiB, the cost of gp3 is 100% higher compared to the cost of gp2 of the same size. The reason for this increase in cost is the setting of IOPS and Throughput of the gp3.
A 1 GiB gp2 volumes has a maximum IOPS of 3000 and a maximum Throughput of 128 MiB/s, which only costs $0.10/month.
gp2 Configuration
- Size: 1 GiB
- Maximum IOPS: 3000 IOPS
- Maximum Throughput: 128 MiB/s
gp2 Cost Computation
gp2 Cost = 1 GiB * $0.10/month
gp2 Cost = $0.10/month
The cost of a 1 GiB gp3 volume is $0.2/month. See computation below.
gp3 Configuration
- Size: 1 GiB
- IOPS: 3000 IOPS
- Throughput: 128 MiB/s
gp3 Cost Computation
gp3 Size Cost = 1 GiB * $0.08/GB-month
gp3 Size Cost = $0.08/month
gp3 IOPS Cost = $0/month (3000 IOPS is free)
gp3 Throughput Cost = $0/month (125 MiB/s is free) + 3 MiB/s * $0.04 MiB/s
gp3 Throughput Cost = $0.12/month
gp3 Total Cost = Size Cost + IOPS Cost + Throughput Cost
gp3 Total Cost = $0.08/month + $0/month + $0.12/month
gp3 Total Cost = $0.20/month
From the above, we can conclude that how much you can save when converting a gp2 volume to a gp3 will depend on how much IOPS and Throughput you provision for the gp3 volume.
Since most of the scenarios where the gp3 is more expensive than the gp2 are mostly concentrated on the smaller sized volumes, it is hard to see the limits with a linear x-axis (Volume Size).
Below I have recreated the same graph, but this time the x-axis is logarithmic to better see the changing Discount (%) depending on the performance based on the size of the gp2 instance.
There are 5 sections that I want to highlight on the chart based on the Volume Size because of the different movement of the Discount (%) line.
Section 1 | 1 GiB to 170 GiB |
Section 2 | 170 GiB to 171 GiB |
Section 3 | 171 GiB to 1,000 GiB |
Section 4 | 1,001 GiB to 5,333 GiB |
Section 5 | 5,334 GiB to 16 TiB |
Section 1
From 1 GiB to 170 GiB, the gp2’s maximum performance is the same regardless of the size of the volume. It has the maximum bursting performance of 3000 IOPS and 128 MiB/s.
From 1 GiB to 5 GiB, gp3 is more expensive than gp2. The breakeven point is at 6 GiB. From 6 GiB to 170 GiB, gp3 will slowly be more cheaper than gp2, peaking at a discounted rate of 19.29% at 170 GiB.
Section 2
From 170 GiB to 171 GiB, the discount suddenly falls from 19.29% (170 GiB) to -9.24% (171 GiB). The reason for this is that maximum Throughput of the gp2 when bursting will go up to its maximum Throughput, 250 MiB/s. This will increase the Throughput Cost of the gp3 volume. IOPS will still be at 3000 at this stage.
Section 3
Then from 171 Gib to 1,000 GiB, the discount will slowly rise from -9.24% (171 GiB) to 15% (1,000 GiB) since the maximum IOPS of 3000 and maximum Throughput of 250 MiB/s when gp2 is bursting will be the same regardless of the volume size in this range.
The breakeven point for this section will be at 250 GiB, where the cost of the gp2 will be the same as the gp3.
250 MiB/s is the hard maximum Throughput of the gp2 EBS Volume Type. Increasing the size of the volume will no longer affect the Throughput.
Section 4
From 1,000 GiB to 5,333 GiB, the discount will slowly go down from 15% (1,000 GiB) to 6.88% (5,333 GiB). The reason for the decline of the gp3 discount is that at this range the maximum IOPS of the gp2 is now dependent on the volume size.
From 1,000 GiB to 5,333 GiB
gp2 IOPS = Volume Size (GiB) * 3 IOPS / GiB
gp2 IOPS @ 1000 GiB = 3000 IOPS
gp2 IOPS @ 5,333 GiB = 15,999 IOPS
Since the IOPS is increasing above the gp3 free IOPS of 3000, gp3 will now have an IOPS cost ($0.005/provisions IOPS-month above 3000 IOPS).
Section 5
From 5,334 GiB to 16,384 GiB (16 TiB), the discount will slowly rise from 6.88% (5,334 GiB) to 15.73% (16 TiB). The reason for the rise of the discount is that the gp2 Volume has reached the maximum IOPS of 16,000 and the formula of gp2 IOPS = Volume Size (GiB) * 3 IOPS/GiB
is no longer applicable in this range.
gp2 IOPS = Volume Size (GiB) * 3 IOPS / GiB
gp2 IOPS @ 5,334 GiB = 5,334 GiB * 3 IOPS / GiB
gp2 IOPS @ 5,334 GiB = 16,002 IOPS
Since the maximum IOPS of gp2 is only 16,000
gp2 IOPS @ 5,334 GiB = 16,000 IOPS
In this last section the IOPS cost of gp3 volumes will no longer increase, therefore the bigger the size of the volume the bigger the discount compared to a gp2 with the same performance.
Converting from gp2 to gp3 Notes
From the above analysis, the amount of discount if you move from gp2 to gp3 EBS Volume type is highly dependent on the provisioned IOPS and provisioned Throughput that you set for the gp3.
If the performance of your gp2 volume is below 3000 IOPS and 125 MiB/s, then you can convert it to a gp3 type and just set it to the free minimum performance of the gp3. With this there will be no IOPS and Throughput cost for gp3, and you will get the full 20% cheaper rate compared to a gp2.
Now, if you want to quickly cut down your cost without the analysis of your gp2 CloudWatch Metrics, then use the guide above to configure your gp3 volume to have the same maximum performance as the gp2. Just be sure to avoid the size ranges where you will get a negative discount.
If your volume however does fall on the size where where you get a negative discount, then I suggest you check the gp2 Monitoring Metrics. Maybe your volume does not reach its gp2 maximum IOPS or maximum Throughput, and you can set gp3 volume to a lower IOPS or Throughput.
Once you have converted from gp2 to gp3, then maximize the discount by analyzing your IOPS and Throughput metrics to see if you can still lower these.
By the way, you can change your EBS Volumes from gp2 to gp3 without stopping your EC2 Instance or detaching the EBS Volume. I’ve done this lots of times.
Seriously, I advice you to quickly change your gp2 volumes to gp3.
Scheduling gp3 Performance for additional cheaper cost
Once you have converted your gp2 to gp3 EBS Volume, or change the provisioned IOPS or Throughput of the gp3, AWS does not allow it to modified until after 6 hours.
If you have a gp3 EBS Volume that has a high IOPS and high Throughput during peak hours, and low performance during off-peak hours, you can actually create a lambda script that runs on schedule to increase and decrease the IOPS and Throughput for additional savings.
I hope this post has made you confident in converting a gp2 to a gp3 EBS Volume type and made you more aware of the cost implications of gp3.
If you have comments, questions or corrections, let me know in the comments below.