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 | |
|---|---|---|---|---|---|---|
| Monthly Price | $65 | $250 | $500 | $500 | $65 | $78 |
| Architecture (Ubuntu) | 32-bit | 64-bit | 64-bit | 64-bit | 64-bit | 64-bit |
| CPUs/Cores | 1 | 2 | 4 | 8 | 2 | 8 |
| RAM (GB) | 1.7 | 7.5 | 15 | 7 | 4 | 32 |
| 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.