Why doesn’t my SC1 or ST1 EBS volume achieve the rated throughput performance?

3 minute read
0

My ST1 or SC1 Amazon Elastic Block Store (Amazon EBS) volume doesn’t reach the throughput performance that’s listed in the AWS documentation.

Short description

If you use HDD Amazon EBS volumes, such as SC1 and ST1, review the following points:

  • These volumes always use a 1024 KiB I/O token regardless of the actual I/O size that's used by the workload on the instance. If the actual I/O size of the application workload is set to 16 KiB, then the volume still uses the entire 1024 KiB size of the I/O token. Doing this wastes most of the token's space. To maximize efficiency, fill the entire 1024 KiB.
  • When the I/O size of a sequential workload is greater than 32 KiB, Amazon EBS always merges the I/Os into a single I/O operation of 1024 KiB. This merging fills the entire token size.
  • When the I/O size is smaller than 32 KiB or if the workload is random, Amazon EBS doesn't merge the I/Os to 1024 KiB. However, Amazon EBS still uses the entire 1024 KiB token size. This leaves most of the space inside the token empty. Because the I/Os aren't merged, the instance uses more IOPS to send the same amount of data to the volume. This reduces the burst balance even though the throughput is less than its baseline value.

Resolution

To allow your ST1 and SC1 EBS volumes to reach their maximum rated throughput, follow these steps:

  • Set up your application to use an I/O size greater than 32 KiB.
  • Verify that your application uses sequential workload.

Example

When you calculate throughput, use the following formula:

Throughput = I/Osize * IOPS

If the I/O size is smaller than 32 KiB, then the volume hits its IOPS limit and throttles the throughput. When this happens, the volume never achieves its rated throughput performance.

For example, suppose you set the I/O size to 16 KiB and send 3 MiB/s of data:

3MiB/s/16KiB = 192 IOPS

When you set the I/O size to 32 KiB with a sequential/contiguous workload, Amazon EBS will merge up to 1024 KiB. Amazon sends only 3 IOPS in this case, as shown in the following calculation:

3 MiB/s/1024 KiB = 3 IOPS

But suppose you use 0.5 TiB (500 GiB) of an ST1 volume. In this case, the volume ideally provides a baseline throughput performance of 20 MiB/s and can burst up to 125 MiB/s.

If the volume bursts at 125 MiB/s and the applications I/O size is 1024 KiB, then the maximum theoretical IOPS equals 125 IOPS.

Throughput / IOsize = 125 MiB/s / 1024 KiB = 125 IOPS.

However, if the application uses an I/O size of 16 KiB, then sending 3 MiB of data uses 192 IOPS. Because the volume achieves only a theoretical maximum of 125 IOPS, the application can't push 192 IOPS. In this case, the volume throttles IOPS to 125:

Actual throughput = 16 KiB * 125 = 1.95 MiB/s

As the preceding calculations show, IOPS is throttled to 125 IOPS and Amazon EBS throttles the throughput to 1.95 MiB/s. This throttling occurs even though the burstable theoretical throughput for the volume is 125 IOPS given that the application used 1024 KiB I/O size.

Related information

I/O characteristics and monitoring

Amazon EBS volume types

AWS OFFICIAL
AWS OFFICIALUpdated 7 months ago
No comments