In my PostgreSQL RDS db.t3.micro
instance with a gp3
disk with 125GB
I am seeing the metrics EBSByteBalance%
and EBSIOBalance%
dropping down.
I am expecting a baseline of 3,000 IOPS
and storage throughput of 125 MiBps
.
I am not reaching any of these:
What am I missing? Why my quotas are dropping down when I am not reaching the baseline limits of consumption?
There are two limits in play here. You are correct in that using gp3 volumes with PostgreSQL with a size of 125 GB gives you a baseline performance of 3,000 IOPS and 125 MiB/s. These apply specifically to the performance of the volume. The other limit is the performance of your instance type:
An instance's EBS performance is bounded by the instance type's performance limits, or the aggregated performance of its attached volumes, whichever is smaller. To achieve maximum EBS performance, an instance must have attached volumes that provide a combined performance equal to or greater than the maximum instance performance.
You are being limited by the performance of the selected instance type. The EBSIOBalance%
monitors the I/O burst of the instance, and the EBSBytesBalance%
monitors the throughput balance of the instance, both of which get depleted (documentation link). In an ideal scenario you should pick the instance type, or number of volumes based on which is the performance bottleneck, so that the baseline of either can support your regular workload and the burst credits handle smaller spikes.