Amazon Elastic Compute Cloud
User Guide for Windows Instances

Storage Optimized Instances

Storage optimized instances are designed for workloads that require high sequential read and write access to very large data sets on local storage. They are optimized to deliver tens of thousands of low-latency, random I/O operations per second (IOPS) to applications.

D2 Instances

D2 instances are well suited for the following applications:

  • Massive parallel processing (MPP) data warehouse

  • MapReduce and Hadoop distributed computing

  • Log or data processing applications

I2 Instances

I2 instances are well suited for the following applications:

  • NoSQL databases

  • Clustered databases

  • Online transaction processing (OLTP) systems

I3 Instances

I3 instances are well suited for the following applications:

  • High frequency online transaction processing (OLTP) systems

  • Relational databases

  • NoSQL databases

  • Cache for in-memory databases (for example, Redis)

  • Data warehousing applications

  • Low latency Ad-Tech serving applications

Hardware Specifications

The primary data storage for D2 instances is HDD instance store volumes. The primary data storage for I2 instances is SATA SSD instance store volumes. The primary data storage for I3 instances is non-volatile memory express (NVMe) SSD instance store volumes.

Instance store volumes persist only for the life of the instance. When you stop or terminate an instance, the applications and data in its instance store volumes are erased. We recommend that you regularly back up or replicate important data in your instance store volumes. For more information, see Amazon EC2 Instance Store and SSD Instance Store Volumes.

For more information about the hardware specifications for each Amazon EC2 instance type, see Amazon EC2 Instances.

Storage Performance

For instances with NVMe instance store volumes, you must use a Linux AMI with kernel version 4.4 or later. Otherwise, your instance will not achieve the maximum IOPS performance available.

EBS-optimized instances enable you to get consistently high performance for your EBS volumes by eliminating contention between Amazon EBS I/O and other network traffic from your instance. D2 instances are EBS-optimized by default at no additional cost. You can enable EBS optimization for your I2 instances for an additional low, hourly fee. For more information, see Amazon EBS–Optimized Instances.

You can enable enhanced networking capabilities. Enhanced networking provides significantly higher packet per second (PPS) performance, lower network jitter, and lower latencies. For more information, see Enhanced Networking on Windows.

SSD I/O Performance

If you use a Linux AMI with kernel version 4.4 or later and utilize all the SSD-based instance store volumes available to your instance, you get the IOPS (4,096 byte block size) performance listed in the following table (at queue depth saturation). Otherwise, you'll get lower IOPS performance.

Instance Size 100% Random Read IOPS Write IOPS













i3.large *



i3.xlarge *










1.65 million



3.3 million


* For i3.large and i3.xlarge instances, you can get up to the specified performance.

As you fill the SSD-based instance store volumes for your instance, the number of write IOPS that you can achieve decreases. This is due to the extra work the SSD controller must do to find available space, rewrite existing data, and erase unused space so that it can be rewritten. This process of garbage collection results in internal write amplification to the SSD, expressed as the ratio of SSD write operations to user write operations. This decrease in performance is even larger if the write operations are not in multiples of 4,096 bytes or not aligned to a 4,096-byte boundary. If you write a smaller amount of bytes or bytes that are not aligned, the SSD controller must read the surrounding data and store the result in a new location. This pattern results in significantly increased write amplification, increased latency, and dramatically reduced I/O performance.

SSD controllers can use several strategies to reduce the impact of write amplification. One such strategy is to reserve space in the SSD instance storage so that the controller can more efficiently manage the space available for write operations. This is called over-provisioning. The SSD-based instance store volumes provided to an instance don't have any space reserved for over-provisioning. To reduce write amplification, we recommend that you leave 10% of the volume unpartitioned so that the SSD controller can use it for over-provisioning. This decreases the storage that you can use, but increases performance even if the disk is close to full capacity.

For instance store volumes that support TRIM, you can use the TRIM command to notify the SSD controller whenever you no longer need data that you've written. This provides the controller with more free space, which can reduce write amplification and increase performance. For more information, see Instance Store Volume TRIM Support.

Storage Instance Features

The following is a summary of features for storage optimized instances:

VPC only SSD volumes Placement group Enhanced networking



Intel 82599 VF




Intel 82599 VF






For more information, see the following:

Instance Limits

  • You must launch storage optimized instances using an HVM AMI. .

  • You must launch I3 instances using an Amazon EBS-backed AMI.

  • There is a limit on the total number of instances that you can launch in a region, and there are additional limits on some instance types. For more information, see How many instances can I run in Amazon EC2?. To request a limit increase, use the Amazon EC2 Instance Request Form.