I want my Amazon Elastic Block Store (Amazon EBS) Provisioned IOPS volumes to deliver optimal levels of input and output performance on a consistent basis.
Resolution
To improve the performance for your Provisioned IOPS (SSD) (io1) volumes, complete the following tasks.
Review your volume's limitations
Each volume type has different considerations, such as burstable performance and max provisioned throughput per volume size. For more information, see Amazon EBS volume types.
Initialize your restored EBS volumes
New EBS volumes don't require initialization (pre-warming). Before you can access storage blocks on volumes that are restored from snapshots, you must initialize them. You can use the fio or dd command to initialization a volume that you create from a snapshot. Because it allows multi-threaded reads, fio is faster. For more information, see Initialize 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 provision. If I/O latency is high, then check the average queue length to be sure that your application isn't driving more IOPS than you provision. If the IOPS is higher than you provisioned and the application is latency sensitive, then use a Provisioned IOPS (SSD) volume with more Provisioned IOPS. For more information, see Amazon EBS-optimized instances and I/O characteristics and monitoring.
Make sure that the size of your I/O operations doesn't limit Provisioned IOPS
The size of I/O operations affects IOPS. If the I/O chunks are large, then you might get fewer IOPS than you provision because of the 500 MiB/s per volume throughput limit. For more information, see I/O characteristics and monitoring and Provisioned IOPS SSD (io1 and io2) volumes. If your I/O size is consistently large, then join multiple Provisioned IOPS (SSD) volumes together in a RAID 0 configuration to increase available throughput. For more information, see RAID configuration on Linux.
Review your use of EBS snapshots to avoid unnecessary charges
It's a best practice to optimize your snapshot frequency and retention settings so that you don't incur unnecessary EBS snapshot charges. For more information, see AWS Ops Automator.
Use CloudWatch to analyze and view EBS performance metrics
The Amazon CloudWatch console shows status checks to help monitor the health of your volumes. Volumes must 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, 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. The check lets you find Provisioned IOPS (SSD) volumes that are attached to an Amazon Elastic Compute Cloud (Amazon EC2) instance that's not EBS optimized. Provisioned IOPS volumes deliver expected performance only when they're attached to an EBS-optimized instance. For more information, see Amazon EBS Provisioned IOPS (SSD) Volume Attachment Configuration. 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 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.
Related information
Monitor the status of your volumes
Amazon EBS features