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 (for example, Cassandra and MongoDB)
Clustered databases
Online transaction processing (OLTP) systems
Contents
Hardware Specifications
The primary data storage for D2 instances is HDD-based instance store volumes. The primary data storage for I2 instances is SSD-based 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
To ensure the best disk throughput performance from your instance on Linux, we recommend that you use the most recent version of the Amazon Linux AMI, or another Linux AMI with a kernel version of 3.8 or later. If you do not use a Linux AMI with a kernel version of 3.8 or later, your instance will not achieve the maximum IOPS performance available.
D2 instances provide the best disk performance when you use a Linux kernel that supports persistent grants, an extension to the Xen block ring protocol that significantly improves disk throughput and scalability. For more information about persistent grants, see this article in the Xen Project Blog.
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 Linux.
The d2.8xlarge instance type provides the ability to control processor
C-states and P-states on Linux. C-states control the sleep levels that a core can
enter when it is inactive, while P-states control the desired performance (in CPU frequency)
from a core. For more information, see Processor State Control for Your EC2 Instance.
SSD I/O Performance
If you use a Linux AMI with kernel version 3.8 or later and utilize all the SSD-based instance store volumes available to your I2 instance, you can get at least the minimum random IOPS (4,096 byte block size) listed in the following table. Otherwise, you'll get lower IOPS performance than what is shown in the table.
| Instance Size | Read IOPS | First Write IOPS |
|---|---|---|
|
|
35,000 |
35,000 |
|
|
75,000 |
75,000 |
|
|
175,000 |
155,000 |
|
|
365,000 |
315,000 |
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 I2 instance don't have any space reserved for over-provisioning. To reduce write amplification, you should 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.
I2 instance store volumes 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 | EBS only | SSD volumes | Placement group | Enhanced networking | |
|---|---|---|---|---|---|
|
D2 |
Yes |
Intel 82599 VF | |||
|
I2 |
Yes |
Yes |
Intel 82599 VF |
For more information, see the following:
Support for vCPUs
The d2.8xlarge instance type provides 36 vCPUs, which might cause
launch issues in some Linux operating systems that have a vCPU limit of 32.
We strongly recommend that you use the latest AMIs when you launch
d2.8xlarge instances.
The following Linux AMIs support launching d2.8xlarge instances
with 36 vCPUs:
Amazon Linux AMI 2016.09 (HVM)
Ubuntu Server 14.04 LTS (HVM)
Red Hat Enterprise Linux 7.1 (HVM)
SUSE Linux Enterprise Server 12 (HVM)
If you must use a different AMI for your application, and your d2.8xlarge
instance launch does not complete successfully (for example, if your instance status
changes to stopped during launch with a Client.InstanceInitiatedShutdown
state transition reason), modify your instance as described in the following procedure to support
more than 32 vCPUs so that you can use the d2.8xlarge instance type.
To update an instance to support more than 32 vCPUs
Launch a D2 instance using your AMI, choosing any D2 instance type other than
d2.8xlarge.Update the kernel to the latest version by following your operating system-specific instructions. For example, for RHEL 6, use the following command:
sudo yum update -y kernelStop the instance.
(Optional) Create an AMI from the instance that you can use to launch any additional
d2.8xlargeinstances that you need in the future.Change the instance type of your stopped instance to
d2.8xlarge(choose Actions, Instance Settings, Change Instance Type, and then follow the directions).Start the instance. If the instance launches properly, you are done. If the instance still does not boot properly, proceed to the next step.
(Optional) If the instance still does not boot properly, the kernel on your instance may not support more than 32 vCPUs. However, you may be able to boot the instance if you limit the vCPUs.
Change the instance type of your stopped instance to any D2 instance type other than
d2.8xlarge(choose Actions, Instance Settings, Change Instance Type, and then follow the directions).Add the
maxcpus=32option to your boot kernel parameters by following your operating system-specific instructions. For example, for RHEL 6, edit the/boot/grub/menu.lstfile and add the following option to the most recent and activekernelentry:default=0 timeout=1 splashimage=(hd0,0)/boot/grub/splash.xpm.gz hiddenmenu title Red Hat Enterprise Linux Server (2.6.32-504.3.3.el6.x86_64) root (hd0,0) kernel /boot/vmlinuz-2.6.32-504.3.3.el6.x86_64maxcpus=32console=ttyS0 ro root=UUID=9996863e-b964-47d3-a33b-3920974fdbd9 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us LANG=en_US.UTF-8 xen_blkfront.sda_is_xvda=1 console=ttyS0,115200n8 console=tty0 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_NO_LVM rd_NO_DM initrd /boot/initramfs-2.6.32-504.3.3.el6.x86_64.imgStop the instance.
(Optional) Create an AMI from the instance that you can use to launch any additional
d2.8xlargeinstances that you need in the future.Change the instance type of your stopped instance to
d2.8xlarge(choose Actions, Instance Settings, Change Instance Type, and then follow the directions).Start the instance.
Instance Limits
You must launch an storage optimized instances using an HVM AMI. For more information, see Linux AMI Virtualization Types.
The
d2.8xlargeinstance type has 36 vCPUs, which might cause launch issues in some Linux operating systems that have a vCPU limit of 32. For more information, see Support for vCPUs.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.

