Skip to main content

Amazon EBS (Storage) Performance Limitation

I have mentioned before that standard EBS storage in AWS runs on a credit system. Credits build up while a volume sits idle and are spent whenever the requested I/O rate rises above a predefined baseline. The details are covered in the AWS documentation. This limitation caught me off guard during the failed project I had worked on 18 months ago.

A few days ago I got the same problem while syncing data between 2 volumes, so I decided to capture what happened and share it here for anyone following this blog.

The CloudWatch read throughput graph (metric name: VolumeReadOps) looked like this during the sync:

Volume Performance

I have marked the three areas that need explaining:

  1. Credit consumption. The volume was in “Credit Consumption” mode here. While credits lasted, performance stayed close to the maximum Amazon allows for this instance and volume type.

  2. Credits exhausted. Once credits ran out, this volume dropped back to its low baseline of 3 IOPS per GB, which works out to 150 for this 50GB volume.

  3. Short idle period. A brief pause let some credits accrue, which allowed a small burst before performance fell back to the low baseline again. Here it is in more detail:

Volume Performance, detail

Conclusion? Plan your AWS workloads carefully. Always monitor your CloudWatch metrics, and be ready to move to Provisioned IOPS volumes if needed.


Note: This post was written by an AWS Certified Solutions Architect (Associate). Please always work with an expert when setting up production environments.