Last Updated on January 13, 2021
In my goal to understand when the gp3 is cheaper than gp2 volumes, I need to know what each of the performance settings of each Elastic Block Store (EBS) Volume Types are.
Let’s go straight to dicussing about gp3 type IOPS.
What is the IOPS of gp3 Volumes?
From the AWS documentation the IOPS of gp3 Volumes has a minimum of 3,000 IOPS and a maximum of 16,000 IOPS.
|Minimum IOPS||3,000 IOPS|
|Maximum IOPS||16,000 IOPS|
The advantage of gp3 Volumes to gp2 is that you can set their IOPS regardless of the volume size. This is very unlike the gp2 where the IOPS and Throughput is highly dependent on the volume size.
We also no longer have to think about bursting IOPS in gp3 Volume types or having high IOPS operation for an extended period of time as long as you set your gp3 IOPS properly.
Maximum IOPS per Volume Size
You may think that whatever the volume size from 1 GiB (minimum) to 16 TiB (maximum), you can assign any IOPS as long as its between 3000 IOPS and 16,000 IOPS.
As always, AWS has a way of scattering the details of each service in different documentation pages and burying the tiny important phrases in paragraphs.
From the EBS Volume Type documentation, it says
The maximum ratio of provisioned IOPS to provisioned volume size is 500 IOPS per GiB.
What the above statement means is that we cannot create a gp3 Volume with a size of 10 GiB and a provisioned IOPS of 16,000 IOPS, because the maximum IOPS it can have is only 5,000 IOPS.
Maximum IOPS @ 10 GiB = 10 GiB * 500 IOPS/GiB Maximum IOPS @ 10 GiB = 5,000 IOPS
Here is the error in AWS Console when we try to create a 10GiB gp3 Volume with an IOPS of 16,000.
Also, since the minimum IOPS of a gp3 EBS Volume is 3,000 IOPS, you cannot create a 5 GiB gp3 Volume with a provisioned IOPS of 2,500 IOPS. The 5 GiB volume will have an IOPS of 3,000.
Maximum IOPS @ 5 GiB = 5 GiB * 500 IOPS/GiB Maximum IOPS @ 5 GiB = 2,500 IOPS Since absolute minimum gp3 IOPS = 3,000 IOPS, therefore Maximum IOPS @ 5 GiB = 3,000 IOPS
Here is the warning when you try to create an 5 GiB gp3 Volume with a provisioned IOPS of 2,500.
The breakeven point of the minimum IOPS of 3000 and the size to IOPS ratio of 1:500 limitation is 6 GiB.
Maximum IOPS @ 6 GiB = 6 GiB * 500 IOPS/GiB Maximum IOPS @ 6 GiB = 3000 IOPS which is also the absolute minimum IOPS of gp3 Volume types
There is also the absolute maximum IOPS of 16,000 for gp3 volumes. For example, we cannot create a 40 GiB gp3 volume with a provisioned IOPS of 20,000. This will always be limited by the maximum 16,000 IOPS.
Maximum IOPS @ 40 GiB = 40 GiB * 500 IOPS/GiB Maximum IOPS @ 40 GiB = 20,000 IOPS Since absolute maximum of gp3 IOPS = 16,000 IOPS, therefore Maximum IOPS @ 40 GiB = 16,000 IOPS
The breakeven point of the size to IOPS ratio of 1:500 and the maximum IOPS of 16,000 IOPS is 32 GiB.
Maximum IOPS @ 32 GiB = 32 GiB * 500 IOPS/GiB Maximum IOPS @ 32 GiB = 16,000 IOPS which is also the absolume maximum IOPS of gp3 Volume types
Now that we have the minimum and maximum IOPS, and the size to IOPS ratio of 1:500 limitation, we can now create the table on what is the IOPS per size range of the gp3 Volume.
|Size Range||Maximum Provisioned IOPS|
|1 GiB to 6 GiB||3,000 IOPS|
|6 GiB to 32 GiB||Volume Size (GiB) * 500 IOPS/GiB|
|32 GiB to 16 TiB||16,000 IOPS|
We can also show the Maximum Provisioned IOPS vs Size using the chart below.
gp3 Provisioned IOPS Pricing
If we look at the EBS Volume Pricing page, we will see that there are 3 types of pricing for gp3 Volume types.
|gp3 IOPS||3,000 IOPS free and $0.005/provisioned IOPS-month over 3,000|
|gp3 Throughput||125 MB/s free and $0.04/provisioned MB/s-month over 125|
We will be focusing on the
gp3 IOPS part of the EBS Volume pricing.
The minimum cost for the gp3 IOPS is free ($0/month) if you provision the IOPS of the gp3 volume to 3,000 IOPS.
gp3 IOPS Cost @ 3000 IOPS = ($0/month for 3000 IOPS) * $0.005/IOPS-month * (Provisioned IOPS - 3000 IOPS) gp3 IOPS Cost @ 3000 IOPS = $0/month + $0.005/IOPS-month * (3000 IOPS - 3000 IOPS) gp3 IOPS Cost @ 3000 IOPS = $0/month + $0.005/IOPS-month * (0 IOPS) gp3 IOPS Cost @ 3000 IOPS = $0/month + $0/month gp3 IOPS Cost @ 3000 IOPS = $0/month
The maximum cost for the gp3 IOPS is $65/month if you set the gp3 Volume IOPS to 16,000.
gp3 IOPS Cost @ 16000 IOPS = ($0/month for 3000 IOPS) * $0.005/IOPS-month * (Provisioned IOPS - 3000 IOPS) gp3 IOPS Cost @ 16000 IOPS = $0/month * $0.005/IOPS-month * (16000 IOPS - 3000 IOPS) gp3 IOPS Cost @ 16000 IOPS = $0/month * $0.005/IOPS-month * (13000 IOPS) gp3 IOPS Cost @ 16000 IOPS = $0/month * $65/month gp3 IOPS Cost @ 16000 IOPS = $65/month
Here is the table of the minimum and maximum cost for gp3 IOPS.
|Minimum Cost for gp3 IOPS||$0/month (Free)||3000 IOPS|
|Maximum Cost for gp3 IOPS||$65/month||16000 IOPS|
If you want to know more about gp3 performance then I suggest reading my post about gp3 Throughput.
I hope this helps you understand gp3 Performance and Cost more.