Performance - AWS Storage Services Overview

Performance

As described previously, Amazon EBS provides a range of volume types that are divided into two major categories: SSD-backed storage volumes and HDD-backed storage volumes. SSD-backed storage volumes offer great price/performance characteristics for random small block workloads, such as transactional applications, whereas HDD-backed storage volumes offer the best price/performance characteristics for large block sequential workloads. You can attach and stripe data across multiple volumes of any type to increase the I/O performance available to your Amazon EC2 applications. The following table presents the storage characteristics of the current generation volume types.

SSD-Backed Provisioned IOPS (io1) SSD-Backed General Purpose (gp2)* HDD-Backed Throughput Optimized (st1) HDD-Backed Cold (sc1)

Use

Cases

I/O-intensive NoSQL and relational databases Boot volumes, low-latency interactive apps, dev & test Big data, data warehouse, log processing Colder data requiring fewer scans per day
Volume Size 4 GiB – 16 TiB 1 GiB – 16 TiB 500 GiB – 16 TiB 500 GiB – 16 TiB
Max IOPS** per Volume 20,000 10,000 500 250
Max Throughput per Volume 320 MiB/s 160 MiB/s 500 MiB/s 250 MiB/s
Max IOPS per Instance 65,000 65,000 65,000 65,000
Max Throughput per Instance 1,250 MiB/s 1,250 MiB/s 1,250 MiB/s 1,250 MiB/s
Dominant Performance Attribute IOPS IOPS MiB/s MiB/s

*Default volume type

**io1/gp2 based on 16 KiB I/O; st1/sc1 based on 1 MiB I/O

General Purpose SSD (gp2) volumes offer cost-effective storage that is ideal for a broad range of workloads. These volumes deliver single-digit millisecond latencies, the ability to burst to 3,000 IOPS for extended periods of time, and a baseline performance of 3 IOPS/GiB up to a maximum of 10,000 IOPS (at 3,334 GiB). The gp2 volumes can range in size from 1 GiB to 16 TiB. These volumes have a throughput limit range of 128 MiB/second for volumes less than or equal to 170 GiB; for volumes over 170 GiB, this limit increases at the rate of 768 KiB/second per GiB to a maximum of 160 MiB/second (at 214 GiB and larger). You can see the percentage of I/O credits remaining in the burst buckets for gp2 volumes by viewing the BurstBalance metric in Amazon CloudWatch.

Provisioned IOPS SSD (io1) volumes are designed to deliver predictable high performance for I/O-intensive workloads with small I/O size where the dominant performance attribute is IOPS, such as database workloads that are sensitive to storage performance and consistency in random access I/O throughput. You specify an IOPS rate when creating a volume, and then Amazon EBS delivers within 10 percent of the provisioned IOPS performance 99.9 percent of the time over a given year, when attached to an EBS-optimized instance. The io1 volumes can range in size from 4 GiB to 16 TiB, and you can provision up to 20,000 IOPS per volume. The ratio of IOPS provisioned to the volume size requested can be a maximum of 50. For example, a volume with 5,000 IOPS must be at least 100 GB in size.

Throughput Optimized HDD (st1) volumes are ideal for frequently accessed, throughput-intensive workloads with large datasets and large I/O sizes, where the dominant performance attribute is throughput (MiB/s), such as streaming workloads, big data, data warehouse, log processing, and ETL workloads. These volumes deliver performance in terms of throughput, measured in MiB/s, and include the ability to burst up to 250MiB/s per TiB, with a baseline throughput of 40MiB/s per TiB and a maximum throughput of 500MiB/s per volume. The st1 volumes are designed to deliver the expected throughput performance 99 percent of the time and has enough I/O credits to support a full-volume scan at the burst rate. The st1 volumes can’t be used as boot volumes. You can see the throughput credits remaining in the burst bucket for st1 volumes by viewing the BurstBalance metric in Amazon CloudWatch.

Cold HDD (sc1) volumes provide the lowest cost per GiB of all EBS volume types. These are ideal for infrequently accessed workloads with large, cold datasets with large I/O sizes, where the dominant performance attribute is throughput (MiB/s). Similarly to st1, sc1 volumes provide a burst model and can burst up to 80 MiB/s per TiB, with a baseline throughput of 12 MiB/s per TiB and a maximum throughput of 250 MB/s per volume. The sc1 volumes are designed to deliver the expected throughput performance 99 percent of the time and have enough I/O credits to support a full-volume scan at the burst rate. The sc1 volumes can’t be used as boot volumes. You can see the throughput credits remaining in the burst bucket for sc1 volumes by viewing the BurstBalance metric in CloudWatch.

Because all EBS volumes are network-attached devices, other network I/O performed by an EC2 instance, as well as the total load on the shared network, can affect the performance of individual EBS volumes. To enable your EC2 instances to maximize the performance of EBS volumes, you can launch selected EC2 instance types as EBS-optimized instances. Most of the latest generation EC2 instances (m4, c4, x1, and p2) are EBS-optimized by default. EBS-optimized instances deliver dedicated throughput between Amazon EC2 and Amazon EBS, with speeds between 500 Mbps and 10,000 Mbps depending on the instance type. When attached to EBS-optimized instances, provisioned IOPS volumes are designed to deliver within 10 percent of the provisioned IOPS performance 99.9 percent of the time within a given year. Newly created EBS volumes receive their maximum performance the moment they are available, and they don’t require initialization (formerly known as prewarming). However, you must initialize the storage blocks on volumes that were restored from snapshots before you can access the block.

Using Amazon EC2 with Amazon EBS, you can take advantage of many of the same disk performance optimization techniques that you do with on-premises servers and storage. For example, by attaching multiple EBS volumes to a single EC2 instance, you can partition the total application I/O load by allocating one volume for database log data, one or more volumes for database file storage, and other volumes for file system data. Each separate EBS volume can be configured as EBS General Purpose (SSD), Provisioned IOPS (SSD), Throughput Optimized (HDD), or Cold (HDD) as needed. Some of the best price/performance balanced workloads take advantage of different volume types on a single EC2 instance. For example, Cassandra using General Purpose (SSD) volumes for data but Throughput Optimized (HDD) volumes for logs, or Hadoop using General Purpose (SSD) volumes for both data and logs. Alternatively, you can stripe your data across multiple similarly provisioned EBS volumes using RAID 0 (disk striping) or logical volume manager software, thus aggregating available IOPS, total volume throughput, and total volume size.