A couple of years ago I did some benchmarking on the AWS t1.micro instances. The t1.micro was AWS’s first performance burstable instance type, which are appropriate for non-continuous CPU usage.
The CPU allocation of the t1.micro is not specified anywhere. In practice the throttling is quite harsh. If you have a CPU hungry process that takes over 10 seconds to run, it will be throttled.
The t2 instance family CPU allocation is clearly defined using CPU credits. You acquire CPU credits when idle and spend them when busy. The credits accumulate up to 24 hours. This allows a daily-run CPU hungry process 72 minutes of full CPU power even on the measly t2.nano.
I wrote a simple program to test this functionality. It performs floating point computations and every 10 seconds reports how many rounds it got through.
Below is a graph of the results for t2.nano, t2.micro and t2.small instances. CPU usage is scaled to the maximum 10 second performance of each instance.
As a comparison, below is the corresponding results for a 30-minute run on a t1.micro with 1 second resolution. The peaks are 10-15 seconds in length.
Before the test, the t2 instances were put under full load until the initial CPU credits had been spent, and then let be idle for 24 hours in order to accumulate full CPU credits.
The t2.micro was about 11% faster than the other two, as it happened to be launched on a 2.5 GHz Intel Xeon E5-2670 v2, while the other two were on a 2.4 GHz Intel Xeon E5-2676 v3. The absolute performance will depend on which type of machine you happen to get. With this performance test, the speed was approximately the same as a single core on my work laptop.
The t2.micro also experienced more random variability during the high load phase. These were short variations, and all instances averaged 98-99% of the max CPU usage during the time.
The throttled performance was a very steady 5 / 10 / 20% of the maximum performance, with the exception of an additional speed boost of 5 minutes every 40 minutes. No idea why that happens.
There’s a slight step down when CPU credits are exhausted before full throttling takes place. It’s most prominent with the t2.nano, where the CPU dropped to 17% for 5 minutes before dropping to the base level of 5%. The corresponding values were 5 minutes at 15% and 10 minutes at 25% for the t2.micro and t2.small, respectively.
Overall, the t2 instances provide much better predictability, control and flexibility on CPU performance than the t1.micro. The t2 family is very well suited for general use, handling both continuous small bursts, and occasional longer bursts of activity gracefully.