Category: Amazon EC2

Choosing the Right EC2 Instance Type for Your Application

Over the past six or seven years I have had the opportunity to see customers of all sizes use Amazon EC2 to power their applications, including high traffic web sites, Genome analysis platforms, and SAP applications. I have learned that the developers of the most successful applications and services use a rigorous performance testing and optimization process to choose the right instance type(s) for their application.

In order to help you to do this for your own applications, I’d like to review some important EC2 concepts and then take a look at each of the instance types that make up the EC2 instance family.

Important Concepts
Let’s start with some concepts, just to make sure that we are all on the same page.

An Amazon Machine Image (AMI) is a template that defines your operating environment, including the operating system. A single AMI can be used to launch one or thousands of instances.

Instances provide compute power and are the fundamental building blocks. Instances are created by launching an Amazon Machine Image (AMI) on a particular instance type. You can scale the number of instances you are running up or down on demand, either manually or automatically, using Auto Scaling.

Instance Types comprise various combinations of CPU, memory, storage, and networking capacity and give you the flexibility to choose the appropriate mix of resources for your applications. Each instance type has one or more size options that address different workload sizes. For the best experience, you should launch on instance types that are the best fit for your applications.

Instance Families are collections of instance types designed to meet a common goal. To make it easier for you to select the best option for your applications, Amazon EC2 instance types are grouped together into families based on target application profiles.

A vCPU is a virtual Central Processing Unit (CPU). A multicore processor has two or more vCPUs.

Meet the Family
Today, Amazon EC2 gives you the option of choosing between 10 different instance types, distributed across 6 instance families. You have the flexibility to choose the combination of instance types and sizes most appropriate for your application today, and you can always change the type you use later as your business and application needs change. So what are the available instance families and instance types?

General-Purpose. This family includes the M1 and M3 instance types, both of which provide a balance of CPU, memory, and network resources making them a good choice for many applications. For many of you, this family is often the first choice, with sizes ranging from 1 vCPU with 2 GiB of RAM to 8 vCPUs with 30 GiB of RAM. The balance of resources makes them ideal for running small and mid-size databases, more memory-hungry data processing tasks, caching fleets, and backend servers for SAP, Microsoft SharePoint, and other enterprise applications.

M3 instances are the newest generation of general-purpose instances, and give you the option of a larger number of virtual CPUs (vCPUs) that provide higher performance. M3 instances are recommended if you are seeking general-purpose instances with demanding CPU requirements. M1 instances are the original family of general-purpose instances and provide the lowest cost options for running your applications. M1 instances are a great option if you want smaller instance sizes with moderate CPU performance, and a lower overall price.

Compute-Optimized. This family includes the C1 and CC2 instance types, and is geared towards applications that benefit from high compute power.

Compute-optimized instances have a higher ratio of vCPUs to memory than other families and the lowest cost per vCPU of all the Amazon EC2 instance types. If you are running any CPU-bound scale-out applications, you should look at compute-optimized instances first. Examples of such applications include front end fleets for high-traffic web sites, on-demand batch processing, distributed analytics, web servers, video encoding, and high performance science and engineering applications like genome analysis, high-energy physics, or computational fluid dynamics.

CC2 instances are the latest generation of compute-optimized instances and provide the lowest cost for CPU performance for all Amazon EC2 instance types. In addition, CC2 instances provide a number of advanced capabilities: Intel Xeon E5-2670 processors; high core count (32 vCPUs); and support for cluster networking. These capabilities allowed us to create a cluster of 1064 CC2 instances that achieved a Linpack score of 240.09 Teraflops, good for an entry at number 42 in the November 2011 Top500 supercomputer list.

C1 instances are the first generation of compute-optimized instances. They are available in smaller sizes and are ideal for massively scaled-out applications at massive scale. Most examples of customers launching 1000s of instances to transcode videos or for virtual drug design are likely to take advantage of C1 instances.

Memory-Optimized. This family includes the M2 and CR1 instance types and is designed for memory-intensive applications. Instances in this family have the lowest cost per GiB of RAM of all Amazon EC2 instance types. If your application is memory-bound, you should use these instances. Examples include high performance databases and distributed cache, in-memory analytics, genome assembly, and larger deployments of SAP, Microsoft SharePoint, and other enterprise applications. In general, if you are running a performance-sensitive database you should first look at this family.

CR1 instances are the latest generation of memory-optimized instances and provide more memory (244 GiB), faster CPU (Intel Xeon E5-2670) compared to M2 instances. CR1 instances also support cluster networking for bandwidth intensive applications.

M2 instances are available in smaller sizes, and are an excellent option for many memory-bound applications.

Storage-Optimized. This family includes the HI1 and HS1 instance types, and provides you with direct-attached storage options optimized for applications with specific disk I/O and storage capacity requirements. Currently there are two types of storage-optimized instances.

HI1 instances are optimized for very high random I/O performance and low cost per IOPS. These instances can deliver over 120,000 4k random read IOPS making them ideal for transactional applications. In particular, we designed these instances to be the best platform for large deployments of NoSQL databases like Cassandra and MongoDB.

HS1 instances are optimized for very high storage density, low storage cost, and high sequential I/O performance. HS1 instances give 48 TB of storage capacity across 24 hard disk drives, high network performance, and are capable of supporting throughput performance of as much as 2.6 GBps. These instances are designed for large-scale data warehouses, large always-on Hadoop clusters, and for cluster file systems. Indeed, HS1 instances are the underlying instance type for our petabyte-scale data warehousing service, Amazon Redshift.

Micro Instances. Micro, or T1, instances are a very low-cost instance option providing a small amount of CPU resources. Micro instances may opportunistically increase CPU capacity in short bursts when additional cycles are available. They are well suited for lower throughput applications like bastion hosts or administrative applications, or for low-traffic websites that require additional compute cycles from time to time.

Micro instances are available in the AWS Free Usage Tier to allow you to explore EC2 functionality at no charge. Due to the opportunistic scheduling used by Micro instances, you should not use them for applications that require sustained CPU performance. You can learn more about the characteristics of Micro instances and appropriate workload characteristics in the Amazon EC2 documentation.

GPU Instances. This family includes the CG1 instance type, and allows you to take advantage of the parallel performance of NVidia Tesla GPUs using the CUDA or OpenCL programming models for GPGPU computing. GPU instances also provide high CPU capabilities and support cluster networking. For applications like AMBER, a molecular dynamics application, you can get 4-5x improvement in performance compared to CC2 instances. Many of you are running computational chemistry, rendering, and financial analysis applications on CG1 instances today to take advantage of the speedup you can get from GPGUs.

Your Choice
I hope that this classification will help you to select the instance type that best fits your application. Because you can launch and terminate instances as desired, profiling and load testing across a variety of instance types is simple and cost effective. Unlike a traditional environment where you are locked in to a particular hardware configuration for an extended period of time, you can easily change instance types as your needs change. You can even profile multiple instance types as part of your Continuous Integration process and use a different set of instance types for each minor release.

The availability of multiple instance types, combined with features like EBS-optimization, and cluster networking allow applications to be optimized for increased performance, improved application resilience, and lower costs.

In particular, you should evaluate the most important performance metrics for your application. For applications that benefit from a low cost per CPU, you should try compute-optimized instances (C1 or CC2) first. For applications that require the lowest cost per GiB of memory, we recommend memory-optimized instances (M2 or CR1). If you are running a database, you should also take advantage of EBS-optimization or instances that support cluster networking. For applications with high inter-node network requirements, you should choose instances that support cluster networking. You can get all the detailed specifications for Amazon EC2 instances types on the EC2 Instance Types Table.

Our goal is to continue to provide you with instance types that address the needs of a broad swath of applications and we welcome feedback on how the currently available instance types are addressing those needs. Post a message in the EC2 forum and we’ll make sure that the team sees it.

Hopefully the information provided in this post will help you get your applications revved up right away.

 — Jeff (with help from Deepak Singh and Paul Duffy);

AWS Management Pack for Microsoft System Center

Tom Rizzo is back with another Windows Wednesday post, announcing a new feature that will make it even easier for you to monitor your EC2 instances running Windows.

— Jeff;

With our continuing investment in making AWS the best place to run Windows and Windows workloads, we are making an announcement today that makes running and managing Windows even easier in the AWS environment: The AWS Management Pack for Microsoft System Center.

By using the AWS Management Pack with Microsoft System Center Operations Manager, you can view and monitor your on-premises and AWS resources together in a single console. The management pack lets you monitor EC2 instances (Windows and Linux), Elastic Block Store (EBS) volumes, Elastic Load Balancing, CloudFormation stacks, Auto Scaling groups, and Elastic Beanstalk applications. With the built-in CloudWatch integration, you can watch performance counters and get alerts when your AWS resources exceed alarm thresholds.  In addition, you can view and monitor applications running inside your EC2 Windows instances such as Microsoft SQL Server, Microsoft SharePoint Server, or Microsoft Exchange Server.  Because the management pack surfaces EC2 tags, you can filter and search across AWS regions for your AWS resources. Finally, your resources are mapped to your AWS Availability Zones so you know which resources are in which zones to make understanding your high availability and disaster recovery easier.

Use the management pack as your single pane of glass to view and monitor your resources whether on-premises or in the AWS cloud.

To help you get started, we have put together a quick introduction video:

Download the AWS Management Pack and get started today. Here’s a sample of what you’ll be able to see:

Tom Rizzo, General Manager, Amazon EC2 Windows Team.

Provision Up to 4,000 IOPS per EBS Volume, New Marketplace Support

I am happy to announce that EBS Provisioned IOPS volumes now support up to 4,000 IOPS. This represents a fourfold increase from the original Provisioned IOPS volume performance since last year’s launch. You can now dial it up to 4,000 IOPS and up to 1 TB of storage per Provisioned IOPS volume. You no longer need to stripe (aka RAID 0) multiple volumes to reach the 4,000 IOPS performance level. However, if you do need even more performance, you can create multiple EBS volumes, each with Provisioned IOPS, and then stripe across them.

We are also introducing support for Provisioned IOPS in the AWS Marketplace with new products from 10Gen, NuoDB, and Omnibond. With this new support, you can now find, compare, and start the software that you need with 1-click, while specifying the desired level of performance. For more information, visit the new AWS Marketplace Provisioned IOPS page. Here are some initial reactions to this new feature:

  • On the MongoDB blog, Jared Rosoff talks about the effect of storage configuration on MongoDB performance. He notes that many issues that they encounter in the field turn out to be related to misconfigured or under-provisioned storage, and then goes on to introduce the new MongoDB AMIs. Jared says that the new AMIs remove the need for guess work and help to ensure a great out-of-the-box experience with MongoDB on EC2. The new AMIs are available in 1,000, 2,000, and 4,000 IOPS configurations and are based on the Amazon Linux AMI. They include a pre-tuned filesystem and OS configuration, and separate volumes for data, journal, and log storage.
  • On the PalominoDB blog, Jay Edwards and Emanuel Calvo of PalominDB benchmarked PostgreSQL 9.2 using pgbench using EBS volumes provisioned for 4,000 IOPS. The post provides a lot of information about their system configuration, benchmarking tools, methodology. Just to make things interesting, the database servers were run on EC2 spot instances. Jay and Emanuel tested an instance that was equipped with a single EBS volume and another  that was equipped with a four volume RAID 0 array. They used pgbench as the test driver, with a simulated load that ranged from 16 to 96 clients, and 100 to 1000 transactions per client. They measured 600-700 transactions/second on the first instance and up to 2200 transactions/second on the second one.

To recap, last year we introduced the Provisioned IOPS feature to give you the power to dial in the amount of performance (measured in I/O Operations Per Second or IOPS), with an initial maximum of 1,000 IOPS per volume. We raised the performance to 2,000 IOPS later in the year to give you more power and more flexibility. With 4,000 IOPS per volume, we have taken this to the next performance level.

Provisioned IOPS volumes are designed to deliver predictable, high performance for I/O intensive workloads such as databases, business applications and enterprise applications. You can set the level of performance you need and EBS will consistently deliver it over the lifetime of the volume.

To take full advantage of high performance Provisioned IOPS volumes, we recommend the use of EBS-Optimized EC2 instances. Available for our m1.large, m1.xlarge, m2.2xlarge, m2.4xlarge, m3.xlarge, m3.2xlarge, c1.xlarge and instance types, these instances feature dedicated throughput between EC2 and EBS.

Amazon EBS Provisioned IOPS volumes, EBS-optimized instances and AWS Marketplace products are now supported in all AWS regions except GovCloud.

— Jeff;

Amazon Coins – Virtual Currency for App and In-App Purchases

Amazon Coins are a new virtual currency that will be made available to Kindle Fire users this coming May. They can be used to pay for apps and for most in-app purchases.

If your app runs on the Kindle Fire, it is eligible for Amazon Coins with no further work on your part. If it runs on another Android device and is already in the Amazon Appstore for Android, you’ll need to review the Kindle Fire Best Practices and then re-submit your app with the appropriate Kindle Fire devices checked in the Device Support section of the submission form.

For more information about how to use Amazon Coins in your app, read our new blog post, Taking Advantage of Amazon Coins.

I would also like to encourage you to take a look at some other AWS services that you can use to build and host mobile apps of all types:

  • The AWS SDK for Android lets you build Android apps that access and take advantage of AWS services.
  • Amazon EC2 makes a great, scalable host for your application’s backend processing and logic.
  • Amazon S3 is perfect for storing application assets, for low-latency worldwide distribution via Amazon CloudFront.
  • Amazon DynamoDB is a fully managed NoSQL service that can scale to any desired level of throughput.

You can also visit our Web, Mobile, and Social Apps page to get some ideas and to see how your competitors are already using these services!

— Jeff;


Now Available on Amazon EC2: Red Hat Enterprise Linux 6.4 AMIs

Version 6.4 of Red Hat Enterprise Linux (RHEL) is now available as an Amazon Machine Image (AMI) for use on all EC2 instance types in all AWS Regions.

With this release, AMIs are available for 32 and 64-bit PVM (paravirtualized) and 64-bit HVM (hardware-assisted virtualization). The new HVM support means that you can now run RHEL on a wider variety of EC2 instance types including the Cluster Compute (cc), High Memory Cluster Compute (cr), Cluster GPU (cg), High Storage (hs), and High I/O (hi) families (availability of instance types varies by Region).

RHEL 6.4 now includes support for the popular CloudInit package. You can use CloudInit to customize your instances at boot time by using EC2’s user data feature to pass an include file, a script, an Upstart job, a bootstrap hook to the instance. This mechanism can be used to create and modify files, install and configure packages, generate SSH keys, set the host name, and so forth.

This release also changes the default user login from “root” to “ec2-user”.

More information on the availability of Red Hat Enterprise Linux, including a global list of AMI IDs for all versions of RHEL can be found on the Red Hat Partner Page.

Support for these AMIs is available through AWS Premium Support and Red Hat Global Support.

— Jeff;


AWS Elastic Beanstalk for .NET now Supports VPC, RDS, and Configuration Files

AWS Elastic Beanstalk for .NET now supports the Amazon Virtual Private Cloud (VPC), seamlessly integrates with the Amazon Relational Database Service (RDS), and can be customized using configuration files.

Elastic Beanstalk allows you to easily deploy and manage .NET applications on AWS. Because Elastic Beanstalk leverages Windows Server 2008 R2 and Windows Server 2012, you can run .NET applications with minimal changes.

VPC Integration
With Amazon VPC, you can set up your own virtual network and you can configure Elastic Beanstalk to run your .NET applications inside of this logically isolated section of the AWS cloud. For example, you can create a private subnet where you host your Elastic Beanstalk backend services and then expose the public-facing web application in a public subnet. Visit the AWS Elastic Beanstalk Developer Guide to learn more about Using AWS Elastic Beanstalk with Amazon VPC.

RDS Integration
If your application relies on a relational database, you can easily configure an Amazon RDS DB Instance for your Elastic Beanstalk .NET application. Using the AWS Toolkit for Visual Studio or the AWS Management Console, you can add an RDS DB Instance with just a few clicks. The connection information is automatically exposed to your application through a connection string. Visit Using Amazon RDS in the AWS Elastic Beanstalk Developer Guide.

Configuration Files
Elastic Beanstalk configuration files are YAML text files that allow you to customize your environment in two ways:

  1. You can customize the software running inside your environment by downloading files, running commands, installing agents and packages, and setting environment variables.
  2. You can provision and configure additional resources such as DynamoDB tables, SQS queues, and CloudWatch alarms.

For example, if your application requires write permissions to app_data, you can grant it these permissions using the following configuration file:

container_commands :
   01 changeperm :
     command : icacls “C:/inetpub/wwwroot/myapp/App_Data” /grant DefaultAppPool : (OI ) (CI )F > log. txt 2 >& 1
     cwd : “C:/inetpub/wwwroot/myapp”

Visit Customizing and Configuring AWS Elastic Beanstalk Environments in the AWS Elastic Beanstalk Developer Guide to learn more about configuration files and for additional examples.

— Jeff + Saad;


Prices Reduced for Windows On-Demand EC2 Instances

The AWS team has been working hard to build powerful and exciting new features for Windows on AWS. In the last month we have released  support for SQL Server AlwaysOn Availability Groups, a beta of the AWS Diagnostics for Microsoft Windows Server, and new drivers for our virtual instances that improve performance and increase the supported number of volumes.

I’m happy to announce a price reduction of up to 26% on Windows On-Demand instances. This price drop continues the AWS tradition of exploring ways to reduce costs and passing the savings along to you. This reduction applies to the Standard (m1), Second-Generation Standard (m3), High-Memory (m2), and High-CPU (c1) instance families. All prices are effective from April 1, 2013. The size of the reduction varies by instance family and region. You can visit the AWS Windows page for more information about Windows pricing on AWS.

Members of the AWS team will be attending and staffing our booth at the Microsoft Management Summit in Las Vegas. If you want to learn more about AWS and how to build, deploy, and monitor your Microsoft Windows Server instances, be sure to stop by booth #733.  The team is also hosting an invitation-only customer session. If you are attending the conference and would like to receive an invitation, simply complete this survey!

— Jeff;

New Tag Management Tools in the EC2 Console

The AWS tagging feature helps you to label and identify your cloud resources. In today’s guest post, Senior Product Manager Derek Lyon reveals the details of a new Tags page in the EC2 console.

— Jeff;

We are adding a new Tags page in the EC2 Console that will help you browse your EC2 resources based on the Tags associated with them and to add or remove Tags from multiple resources at once. If you use tags to keep track of your EC2 resources, the Tags page should significantly reduce the time and effort it takes to perform a number of tag-related tasks.

On the new Tags page, you will see a dashboard-style view of your tags and the number of each EC2 resource type associated with each tag. For example, if you use a tag like Stack=Prod to keep track of your production instances, you will see how many instances are currently running in your production environment. By clicking on the link, you will be able to drill down and see the individual instances with a particular tag on them. The same goes for all of your other EC2 resources with tags on them, including AMIs, snapshots, volumes, and any other EC2 resources you have tagged.

One of the most useful features on the new Tags page is the Manage Tags tool, which makes it easy to add or remove tags from multiple resources at once. This tool can be accessed by clicking on the Manage Tags button on the upper-left corner of the Tags screen, here:

Using the Manage Tags tool, you can browse your EC2 resources, select which ones you want to modify using the check boxes, and then add or remove a tag of your choice using the dialog at the bottom. If you have a lot of resources to browse, you may want to explore the filtering tools at the top left of the screen, or use the gear icon on the top right to control which columns are exposed so you can sort and/or filter based on which tags are currently applied to the resource.

As always, this feature is available now and you can start using it today!

— Derek Lyon

AWS Expansion in Oregon – Amazon Redshift and Amazon EC2 High Storage Instances

You can now launch Amazon Redshift clusters and EC2 High Storage instances in the US West (Oregon) Region.

Amazon Redshift
Amazon Redshift is a fully managed data warehouse service that lets you create, run, and manage a petabyte-scale data warehouse with ease. You can easily scale up by adding additional nodes (giving you more storage and more processing power) and you pay a low, hourly fee for each node (Reserved Nodes are also available and bring Amazon Redshift’s price to under $1,000 per terabyte per year, less than 1/10th the cost of most traditional data warehouse systems).

Seattle-based Redfin is ready to use Amazon Redshift in US West (Oregon). Data Scientist Justin Yan told us that:

We took Amazon Redshift for a test run the moment it was released.  It’s fast. It’s easy. Did I mention it’s ridiculously fast? We’ve been waiting for a suitable data warehouse at big data scale, and ladies and gentlemen, it’s here.  We’ll be using it immediately to provide our analysts an alternative to Hadoop. I doubt any of them will want to go back.

Here’s a video that will introduce you to Redshift:

If you’re interested in helping to build and grow Amazon Redshift, we’re hiring in Seattle and Palo Alto drop us a line! Here are some of our open positions:

High Storage Instances
We are also launching the High Storage Eight Extra Large (hs1.8xlarge) instances in the Region. Each of these instances includes 117 GiB of RAM, 16 virtual cores (providing 35 ECU of compute performance), and 48 TB of instance storage across 24 hard disk drives. You can get up to 2.4 GB per second of I/O performance from these drives, making them ideal for data-intensive applications that require high storage density and high sequential I/O.

Localytics of Boston has moved their primary analytics database to the hs1.8xlarge instance type, replacing an array of a dozen RAID 0 volumes. The large storage capacity coupled with the increased performance (especially for sequential reads and writes) makes this instance type an ideal host for their application. According to Mohit Dilawari of Localytics, “We are extremely happy with these instances. Our site is substantially faster after the recent migration, yet our instance cost has decreased.”

If you are interested in helping to design and deliver instance types similar to the hs1.8xlarge to enable our customers to run high performance applications in the cloud, the EC2 team would like to talk to you about this Senior Product Manager position.

— Jeff;

PC2 – The New Punched Card Cloud

At least once per decade (I’ve been at this evangelism thing for a long time), a potential customer will ask me1 if we have ever thought of building a cloud of mainframe computers. They recognize the benefits of cloud computing, but are reluctant to give up their Job Control Language, their decks of punched cards, their flowchart templates, and the incredible sense of job security that comes along with being the world’s oldest COBOL programmer.

In order to address this customer segment, we are launching our new Punched Card Cloud, or PC2 for short.

The Hardware
The new mf (mainframe) instance family contains one member, the mf.medium. Packing a whopping 8 Megabytes of RAM and running at a breathtaking 1 MHz, you’ll happily wait for hours (if not days) for your compute-bound jobs to complete. These instances support the complete IBM 370 instruction set, including perennial favorites like the irreplaceable BALR (Branch and Link Register) and the utterly fabulous M (Multiply).

We are launching with four instances (not types, just four actual instances) in the US East (Northern Virginia) Region. If anyone uses them, we’ll go back to the junk dealer and get more.  

The Software
The PC2 is compatible with all of your favorite mainframe operating systems from the 1960’s, 70’s, and 80’s, but you’ll need to supply your own license. We have MMIs (Mainframe Machine Images) for OS/360, MFT, and VM/370 (my personal favorite).

You can upload, compile, and run the FORTRAN, COBOL, and PL/I programs of your choice on PC2. You can also use the AWS SDKs to call the AWS APIs:

Extended AWS Import/Export
We have extended the popular AWS Import/Export feature to handle the devices and media types common to the mainframe era. You can send card decks (be sure to use at least two rubber bands), 9-track tapes (no write enable ring needed), and the classic RAMAC 305 drives.

We’ll meet the drive at the nearest airport and escort it to the nearest Import/Export facility with white-gloved care.

Cloud Control Language
Your well-honed Job Control Language skills and your dog-eared, coffee-stained yellow card are still of value in the cloud.

The AWS Cloud Control Language gives you the power to create, manage, and destroy cloud resources using line-oriented statements specified on punch cards. Think of it as AWS CloudFormation without the elegance, lower case letters, punctuation, or JSON. 

You can launch a single EC2 instance or create an S3 bucket using less than 100 error-prone lines of CCL. If you make a trivial syntax error, your CCL deck will be rejected (after a delay of several hours), along with an inscrutable error message in your choice of Esperanto or Quechua.

Here’s the start of an example to give you an idea of what can be done with CCL:

And There You Go
The Punched Card Cloud is ready to go today and you can start using it now. Give it a shot and let me know what you think!

— Jeff;

1 – I was once asked for a “cloud of mainframes.” There were witnesses and they are willing to back me up on this.