Amazon RDS: Understanding IOPS Provisioning

amazon-rdsiops

We run a Multi-AZ r4.2xlarge Mysql RDS instance and we provision 2000 IOPS (which costs $400 per month extra). When I check the CloudWatch charts I can see large periods where the Write IOPS are more than the 2000 that we pay for:

enter image description here

(during weekdays UK working hours the IOPS are higher than 2000)

There's also Read IOPS occurring on top of this which also count towards the Provisioned limit according to the documentation:

Total IOPS is the sum of the read and write IOPS. Typical values for IOPS range from zero to tens of thousands per second.

Is there an explanation for why I get more IOPS than I provisioned?

Things I considered:

  • Maybe AWS allow IOPS bursting even for RDS instances with Provisioned IOPS? I think not because I don't see the BurstBalance metric in Cloudwatch for my instance like I do for non-provisioned IOPS RDS instances.
  • Maybe AWS add additional IOPS credits depending on how big a disk the RDS has? We have a 500G disk which would give 1500 IOPS baseline performance if we were using General Purpose SSD. I don't see this mentioned in the docs though.
  • Maybe AWS limit your IOPS based on a average over 24 hours rather than a hard limit?

Best Answer

Provisioned IOPS is a guarantee that you will get at least than many IOPS but AWS may allow the instance to use more if the host has the spare capacity. If you are unlucky, you may have a "noisy neighbour" on the same instance as you and they may prevent you from using over your Provisioned amount.


Source of data: I raised a AWS support ticket and they told me:

depending on AWS resource availability you will be able to move beyond the IOPS that have been provisioned. Eventually as resource availability becomes more constrained, the amount of WriteIOPs will even out to the amount that was provisioned, as this is the guaranteed limit for the volume as provisioned.

(They also suggested to enable Enhanced Monitoring to see the metrics of the underlying operating system. I didn't do it so not sure how it helps...)

Related Topic