Amazon EC2 Micro instances deeper dive
September 10, 2010 12 Comments
Amazon today announced a new instance type called “Micro instances” (t1.micro). The official announcement states that its comes with 613MB RAM, and up to 2 ECU compute units. It also supports both 32 and 64 bits. Starting at $0.02/hour, Micro instances are the least expensive instances offered by AWS.
To understand Micro instances, let us first see what is the underneath physical hardware powering them. In a previous post, we have analyzed AWS’s physical hardware and ECU. Using the same methodology, we see that Micro instances use the same physical hardware powering the standard instances, i.e., single-socket Intel E5430 processor based systems. In fact, they probably run on the same clusters as the standard instances.
To understand what is the actual computing power they deliver, we run a CPU-intensive application trying to grab as much CPU as we are allowed. We then use the UNIX command top to monitor the actual CPU usage. top computes the average utilization every second. We observe that the CPU cycle we are allocated varies wildly from second to second. For a short period, we have 100% of the single core, but during other times, we have a much smaller allocation — often as low as 2%.
To see the long term average, we monitor /proc/stat statistics reported by the Linux OS. Using the statistics reported at two time instances spaced sufficiently apart, we can compute the long term average (this is actually how top computes the second-by-second average). We observe that we get roughly 15% of the CPU cycle of a single core. Since a small instance (m1.small) at 1 ECU has 40% of a single core on the same physical hardware, we conclude that a Micro instance has roughly 0.35 ECU. This is consistent with the memory allocation, where a Micro instance has 613MB memory, roughly 35% of that of a m1.small instance (1.7GB).
In summary, a Micro instance has 0.35 ECU, but it can burst up to 2.5 ECU for a few seconds at a time. The price for the burst into 2.5 ECU is that you end up with almost no CPU cycle at other times, so that the average could be 0.35 ECU.
From a pricing perspective, you are only paying for roughly 25% of a m1.small instance. So, for the average CPU you are getting, it is a better deal (25% of the price for 35% of the CPU). However, to get that deal, you will have to tolerate the wildly fluctuating CPU allocation. If your application can tolerate it or if your application never needs to burst much beyond 0.35 ECU, Micro instances may be a good solution.
Even with Micro instances, AWS is still more expensive than some other competitors. For example, at Rackspace cloud, you can pay $0.03/hour, and get a 512MB instance which can potentially burst to use up 4 cores worth of CPU capacity (on a different processor based on AMD though). The key is that there is no limit to the burst at other cloud vendors. As long as there are no other VMs demanding the CPU, you get the full allocation for as long as you want. We frequently get the whole CPU for many hours at other cloud vendors, which is a great bargain.