First of all, let me set this straight: I LOVE Amazon Web Services. I’ve been using EC2 for about 6 years and Defensio has always been entirely running on AWS. The flexibility is unparalleled and the variety of services such as EC2, ELB, EBS, S3 and CloudFront is a joy to use.
However, there’s a problem with EC2. A big one: performance. Bang for your buck. My friend James Golick (@jamesgolick) has often publicly talked about how crappy performance was on EC2, both in terms of CPU and IO. I knew he was right, but didn’t know how right he was really.
I recently found out about Joe’s Data Center, a low-cost dedicated hosting provider so I decided to give them a shot for a pet project I’m working on. They certainly don’t have the infrastructure of Amazon, but that’s a trade-off I can live with given the scope of my project. They have great reviews all over the interwebs so that made me feel at ease.
I leased one of the cheapest machines they are offering: a dual processor AMD Opteron SledgeHammer 2.2Ghz for $55/mo. I went crazy and added 2GB of Ram for an extra $10/mo. Total damage: $65. Roughly the same price as a small instance on EC2 (m1.small). The SledgeHammer is by today’s standards a pretty old and crappy CPU, but I figured it would be plenty for my needs.
I decided to run some benchmarks against an m1.small to see how “bad” the SledgeHammer really was. I stopped paying attention to CPUs the minute I bought my first Mac 6 or 7 years ago. All these fancy CPU names don’t mean much to me anymore.
After some Googling, I settled on UnixBench for my benchmarks. I didn’t need very precise or scientific numbers, just a ballpark to see what I was getting at Joe’s.
I WAS BLOWN AWAY!!! In a nutshell, my dedicated server is 10 times faster than an m1.small instance. TEN TIMES!!! For the same price! IO is also about 5 times faster than EC2’s local storage. And as a bonus, I get 4GB of Ram instead of just 1.7GB.
After such a surprise, I decided to benchmark more expensive EC2 instance types to see how well my new best friend fares against my olf virtual friends. The results were equally surprising: my dedicated box is faster than a m1.large ($250/mo), faster than a m1.xlarge ($500/mo) and roughly as fast as a High CPU c1.xlarge ($500/mo). More explicitly, the c1.xlarge did ~50% better when running UnixBench with 8 threads, but the Opteron box is 50% faster when single threaded. Also, to get IO roughly equivalent to my dedicated box on EC2, you have to shell out $500/mo for a c1.xlarge. Even the m1.xlarge doesn’t cut it.
EDIT: Since publishing this article, I rented a EX 4S at Hetzner. It is effectively 58 times faster than an m1.small and has 32 GB of Ram. IO throughput is 29 times higher. All this for just $13 more a month.
Here’s a chart of my results (UnixBench index):
|m1.small||m1.large||m1.xlarge||c1.xlarge||Joe’s Dedicated||Hetzner EX 4S|
|Index (1 Thread)||116||357.5||438.1||494.4||777.6||1803.3|
|Index (2 Threads)||571.5||1210.5|
|Index (4 Threads)||1070.5|
|Index (8 Threads)||1746.3||6696.7|
The raw numbers (including IO) can be found here: https://gist.github.com/1566734.
I’ll let you draw your own conclusions, but to me, it’s clear that Amazon needs to improve its performance. The bang-for-your-buck ratio of EC2 is completely out of whack.
EDIT 1: Hetzner.de has an amazing new machine, the EX 4S (Intel Core i7 2600, 32 GB, 3TB RAID 1). It’s just ~$78/month so I decided to benchmark it as well. HOLY FUCKING SHIT. Check this out: Hetzner EX 4S Benchmarks. I added the numbers in the table above for comparison. Looks like we have a winner!
EDIT 2: I just ordered an AMD Athlon 64 6000+ X2 with 6GB of RAM and 2x750GB from Hetzner for 31 Euros/mo. I benchmarked it just for the hell of it. 1 thread: 600.8, 2 threads: 1407.9. Slightly faster than a $500/mo m1.xlarge on EC2.