How do I optimize the performance of my Amazon EBS Provisioned IOPS volumes?

Last updated: 2020-03-31

I want my Amazon Elastic Block Store (Amazon EBS) Provisioned IOPS volumes to deliver optimal levels of input/output performance on a consistent basis. How can I set this up?

Resolution

To improve the performance for your provisioned IOPS (SSD) (io1) volumes, check the following:

Initialize your restored EBS volumes

While new EBS volumes do not require initialization (pre-warming), storage blocks on volumes restored from snapshots must be initialized before you can access them. For more information, see Initializing Amazon EBS Volumes.

Confirm the workload demand, average queue length, and IOPS rate

Match the workload demand on the volume to the IOPS that you provisioned. If I/O latency is high, check the average queue length to be sure that your application is not trying to drive more IOPS than you provisioned. If the IOPS is higher than what you provisioned and the application is latency sensitive, consider using a Provisioned IOPS (SSD) volume with more provisioned IOPS. For more information, see Amazon EBS-Optimized Instances.

For information on optimal volume queue length, see the Volume Queue Length and Latency section in I/O Characteristics and Monitoring.

Make sure the size of your I/O operations aren't limiting provisioned IOPS

The size of I/O operations affects IOPS. For example, if the I/O chunks are very large, you might get fewer IOPS than you provisioned because of the 500 MiB/s per volume throughput limit. For more information, see I/O Characteristics and Monitoring and Provisioned IOPS SSD (io1) Volumes. If your I/O size is consistently large, consider joining multiple Provisioned IOPS (SSD) volumes together in a RAID 0 configuration to increase available throughput. For more information, see RAID Configuration on Linux.

Avoid unnecessary charges by reviewing your use of EBS snapshots

EBS snapshots provide enhanced data durability, and it's a best practice to consider your snapshot frequency and retention settings to avoid incurring unnecessary EBS snapshot charges. For more information, see AWS Ops Automator.

Use Amazon CloudWatch to analyze and view EBS performance metrics

The CloudWatch console shows status checks to help monitor the health of your volumes. Volumes should maintain an average queue length of one per minute (rounded up to the nearest whole number) for every 1,000 provisioned IOPS. Use the CloudWatch metric volumequeuelength to determine average queue length.
For more information about using CloudWatch, see Amazon CloudWatch Metrics for Amazon EBS.

Follow AWS Trusted Advisor performance best practices

Run the Amazon EBS Provisioned IOPS (SSD) Volume Attachment Configuration check to find Provisioned IOPS (SSD) volumes that are attached to an Amazon Elastic Compute Cloud (Amazon EC2) instance which is not EBS-optimized. Provisioned IOPS volumes deliver expected performance only when they are attached to an EBS-optimized instance. For more information about this check, see AWS Trusted Advisor Best Practice Checks - Performance. Be sure that the EBS-optimized instance type supports enough IOPS and throughput for all the attached EBS volumes.

Note: The Amazon EBS Provisioned IOPS (SSD) Volume Attachment Configuration best practice check is available to customers enrolled in Business or Enterprise support plans.

Test the performance of your Provisioned IOPS (SSD) volume

Simulate workloads that are similar to your application. For more information, see Benchmark EBS Volumes.