Mysql – How to calculate current IOPS usage and IOPS credit count and graph on AWS RDS

amazon-rdsamazon-web-servicesiopsMySQL

I have a running Mysql db.m3.medium RDS instance at AWS, running with 20GB SSD as in: RDS machine description

Last hour write and read operations went as following: Disk operations

It looks like max(write)+max(read) operations total around 50/second, which
means it is under the 3 * disk_capacity = 3 * 20 = 60 iops/second. So it means that every second I am getting extra 10 iops in my credit balance.

With this in mind, my current credit count is the credit count before this time period (1 hour) + sum(credit balance for each second time frame)?

Is this the correct way of calculating current IOPS usage and credit accumulation/count?

If so, there is no AWS graph that displays IOPS credit usage, as there is a CPU credit usage, correct?

Best Answer

As mentioned in How can I see my IOPS burst credits? (source):

Unfortunately there isn't a Cloudwatch Metric for the current IOPS Credit balance like there is with the CPU credits.

This has still not been implemented as of July 2016.

The AWS docs offer a pretty good introduction to IOPS burst:

Each volume receives an initial I/O credit balance of 5.4 million I/O credits, which is enough to sustain the maximum burst performance of 3,000 IOPS for 30 minutes. This initial credit balance is designed to provide a fast initial boot cycle for boot volumes and to provide a good bootstrapping experience for other applications. Volumes earn I/O credits at the baseline performance rate of 3 IOPS per GiB of volume size. For example, a 100 GiB gp2 volume has a baseline performance of 300 IOPS.

When your volume requires more than the baseline performance I/O level, it draws on I/O credits in the credit balance to burst to the required performance level, up to a maximum of 3,000 IOPS. Volumes larger than 1,000 GiB have a baseline performance that is equal or greater than the maximum burst performance, and their I/O credit balance never depletes. When your volume uses fewer I/O credits than it earns in a second, unused I/O credits are added to the I/O credit balance. The maximum I/O credit balance for a volume is equal to the initial credit balance (5.4 million I/O credits).

So taking your example, your 20 GB volume has a baseline performance of 60 IOPS. If you use an average of 50 IOPS, 10 I/O credits will be added to your credit balance every second, up to a maximum of 5.4 million I/O credits.