Skip to content

What does RDS "under-provisioned for system IOPS capacity" mean?

0

I have a t4g.xlarge PostgreSQL db in RDS that uses gp3 storage and has 400gb storage. This also means it should have 12k IOPS and 500 MiBps storage throughput. However, on my recommendations page in RDS dashboard I see

1 instance is under-provisioned for system IOPS capacity

and also:

We recommend tuning the database workload to reduce IOPS or scale up the DB instance to a type with a higher default IOPS limit. The current DB instance can’t support the Provisioned IOPS, or the database workload has high IOPS utilization.

And then it says the criteria for this recommendation is:

Under-provisioned instance class: RDS evaluates a "Yes" or "No" value if the Provisioned IOPS is greater than the supported instance class IOPS and the average database load is greater than 0.1 over the detection period.

Does this mean my t4g.xlarge can't support 12k of IOPS? Also I don't see anywhere in the documentation where it lists the IOPS limits of each instance. Can someone point me to where I can see the supported IOPS for each RDS instance type? In my performance insights dashboard I have seen IOPS reach 6k-9k during peak loads.

1 Answer
-1

When you see "under-provisioned for system IOPS capacity" in your RDS recommendations, it means that your database instance type (t4g.xlarge) may not be able to fully utilize the 12,000 IOPS you've provisioned with your gp3 storage.

This recommendation occurs when the provisioned IOPS for your storage exceeds what the DB instance class can effectively support, and your database is experiencing high IOPS utilization (as indicated by your 6k-9k IOPS during peak loads).

Each RDS instance type has its own IOPS capacity limits, regardless of the storage type you choose. While your gp3 storage is configured for 12,000 IOPS, your t4g.xlarge instance may have a lower IOPS limit, creating a bottleneck. When your workload demands high I/O operations, the instance itself becomes the limiting factor rather than the storage.

The recommendation suggests two options:

  1. Tune your database workload to reduce IOPS requirements
  2. Scale up to a larger instance type that can support higher IOPS

This is a common issue when there's a mismatch between storage configuration and instance capabilities. Even though you've provisioned sufficient storage IOPS, the instance class itself may be the limiting factor in your I/O performance. This can lead to degraded performance, especially during peak loads when your database is trying to perform many I/O operations simultaneously.

To resolve this, you could either optimize your workload to reduce I/O demands or upgrade to a larger instance class that can better handle your provisioned IOPS.
Sources
Recommendations from Amazon RDS reference - Amazon Relational Database Service
Capture and diagnose I/O bottlenecks on Amazon RDS for SQL Server | AWS Database Blog
Best practices for Amazon RDS - Amazon Relational Database Service
Community | Troubleshoot slow performance after moving to AWS RDS

answered 3 months ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.