The Reason
Just how fast are various virtual machine (VM) server hosting services? There are many different plans, prices, and feature sets; however, I have not seen many good benchmark comparisons between VM hosting services. To this end, I decided to do a quick comparison of Amazon Web Services EC2 (AWS) and Slicehost, my current choice for hosting.
There are many different metrics I could benchmark and many different ways I could do so. I don’t have a lot of time, so I was lazy and used the byte-unixbench suite to perform my tests. I used the latest available stable version which was 5.1.2.
Author’s note: I know these machines are not exactly the same and that if they were more similar the benchmarks would be more meaningful. That said, I think this data is useful and interesting regardless so I am sharing here.
The VMs
Slicehost – 256 slice – $20/month
- 1 CPU unit
- 256mb ram
- 10gb disk
- 150GB transfer
- VM server locations tested – US: Dallas/DFW
- Gentoo 10.1
AWS – Micro EC2 ~$20/month
- 1 CPU unit
- 623 MB ram
- 15GB disk
- paid transfer/GB
- VM server locations tested – US: Virginia AND California
- Fedora Core 8 (ami-b232d0db)
The Methodology
I installed, compiled and ran the byte-unixbench application on each VM. Each test was run twice to verify the results between tests did not vary beyond 5%. The byte-unixbench platform omitted the graphics tasks since these were text-console-only VMs.
The Results
Slicehost
========================================================================
BYTE UNIX Benchmarks (Version 5.1.2)
System: zerowing: GNU/Linux
OS: GNU/Linux -- 2.6.24-23-xen -- #1 SMP Mon Jan 26 03:09:12 UTC 2009
Machine: x86_64 (AuthenticAMD)
Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
CPU 0: Quad-Core AMD Opteron(tm) Processor 2350 HE (4011.6 bogomips)
Hyper-Threading, x86-64, MMX, AMD MMX, Physical Address Ext, SYSCALL/SYSRET
09:06:47 up 6 days, 21:48, 1 user, load average: 0.00, 0.00, 0.00; runlevel
------------------------------------------------------------------------
Benchmark Run: Sun Sep 12 2010 09:06:47 - 09:34:46
1 CPU in system; running 1 parallel copy of tests
Dhrystone 2 using register variables 16064847.2 lps (10.0 s, 7 samples)
Double-Precision Whetstone 1742.5 MWIPS (9.6 s, 7 samples)
Execl Throughput 714.0 lps (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 138066.4 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 35927.3 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 365354.4 KBps (30.0 s, 2 samples)
Pipe Throughput 227413.5 lps (10.0 s, 7 samples)
Pipe-based Context Switching 57563.5 lps (10.0 s, 7 samples)
Process Creation 1853.0 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 1702.9 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 511.5 lpm (60.1 s, 2 samples)
System Call Overhead 249555.3 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 16064847.2 1376.6
Double-Precision Whetstone 55.0 1742.5 316.8
Execl Throughput 43.0 714.0 166.0
File Copy 1024 bufsize 2000 maxblocks 3960.0 138066.4 348.7
File Copy 256 bufsize 500 maxblocks 1655.0 35927.3 217.1
File Copy 4096 bufsize 8000 maxblocks 5800.0 365354.4 629.9
Pipe Throughput 12440.0 227413.5 182.8
Pipe-based Context Switching 4000.0 57563.5 143.9
Process Creation 126.0 1853.0 147.1
Shell Scripts (1 concurrent) 42.4 1702.9 401.6
Shell Scripts (8 concurrent) 6.0 511.5 852.6
System Call Overhead 15000.0 249555.3 166.4
========
System Benchmarks Index Score 309.1
AWS EC2
East (VA)
========================================================================
BYTE UNIX Benchmarks (Version 5.1.2)
System: ip-10-205-13-162: GNU/Linux
OS: GNU/Linux -- 2.6.21.7-2.ec2.v1.2.fc8xen -- #1 SMP Fri Nov 20 19:22:36 EST 2009
Machine: i686 (i386)
Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
CPU 0: Intel(R) Xeon(R) CPU E5430 @ 2.66GHz (5324.6 bogomips)
Hyper-Threading, x86-64, MMX, Physical Address Ext, Intel virtualization
12:23:40 up 3 min, 1 user, load average: 0.39, 0.19, 0.07; runlevel 4
------------------------------------------------------------------------
Benchmark Run: Sun Sep 12 2010 12:23:40 - 13:03:30
1 CPU in system; running 1 parallel copy of tests
Dhrystone 2 using register variables 4035717.2 lps (10.3 s, 7 samples)
Double-Precision Whetstone 2414.8 MWIPS (10.1 s, 7 samples)
Execl Throughput 151.7 lps (30.4 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 122499.4 KBps (30.7 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 12271.0 KBps (30.5 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 287778.0 KBps (30.6 s, 2 samples)
Pipe Throughput 39820.5 lps (10.5 s, 7 samples)
Pipe-based Context Switching 18016.6 lps (10.8 s, 7 samples)
Process Creation 409.3 lps (30.9 s, 2 samples)
Shell Scripts (1 concurrent) 856.9 lpm (61.3 s, 2 samples)
Shell Scripts (8 concurrent) 114.9 lpm (62.5 s, 2 samples)
System Call Overhead 31315.4 lps (10.6 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 4035717.2 345.8
Double-Precision Whetstone 55.0 2414.8 439.1
Execl Throughput 43.0 151.7 35.3
File Copy 1024 bufsize 2000 maxblocks 3960.0 122499.4 309.3
File Copy 256 bufsize 500 maxblocks 1655.0 12271.0 74.1
File Copy 4096 bufsize 8000 maxblocks 5800.0 287778.0 496.2
Pipe Throughput 12440.0 39820.5 32.0
Pipe-based Context Switching 4000.0 18016.6 45.0
Process Creation 126.0 409.3 32.5
Shell Scripts (1 concurrent) 42.4 856.9 202.1
Shell Scripts (8 concurrent) 6.0 114.9 191.5
System Call Overhead 15000.0 31315.4 20.9
========
System Benchmarks Index Score 107.2
West (CA)
========================================================================
BYTE UNIX Benchmarks (Version 5.1.2)
System: ip-10-162-183-208: GNU/Linux
OS: GNU/Linux -- 2.6.21.7-2.ec2.v1.2.fc8xen -- #1 SMP Fri Nov 20 19:22:36 EST 2009
Machine: i686 (i386)
Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
CPU 0: Intel(R) Xeon(R) CPU E5430 @ 2.66GHz (5324.2 bogomips)
Hyper-Threading, x86-64, MMX, Physical Address Ext, Intel virtualization
14:30:48 up 1:17, 1 user, load average: 0.00, 0.00, 0.28; runlevel 4
------------------------------------------------------------------------
Benchmark Run: Sun Sep 12 2010 14:30:48 - 15:17:06
1 CPU in system; running 1 parallel copy of tests
Dhrystone 2 using register variables 881153.5 lps (10.4 s, 7 samples)
Double-Precision Whetstone 2487.3 MWIPS (10.0 s, 7 samples)
Execl Throughput 139.6 lps (30.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 33377.6 KBps (30.2 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 14578.0 KBps (31.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 70487.5 KBps (30.7 s, 2 samples)
Pipe Throughput 55655.4 lps (10.5 s, 7 samples)
Pipe-based Context Switching 6614.1 lps (10.6 s, 7 samples)
Process Creation 944.2 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 449.0 lpm (61.0 s, 2 samples)
Shell Scripts (8 concurrent) 31.5 lpm (63.4 s, 2 samples)
System Call Overhead 23783.9 lps (10.4 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 881153.5 75.5
Double-Precision Whetstone 55.0 2487.3 452.2
Execl Throughput 43.0 139.6 32.5
File Copy 1024 bufsize 2000 maxblocks 3960.0 33377.6 84.3
File Copy 256 bufsize 500 maxblocks 1655.0 14578.0 88.1
File Copy 4096 bufsize 8000 maxblocks 5800.0 70487.5 121.5
Pipe Throughput 12440.0 55655.4 44.7
Pipe-based Context Switching 4000.0 6614.1 16.5
Process Creation 126.0 944.2 74.9
Shell Scripts (1 concurrent) 42.4 449.0 105.9
Shell Scripts (8 concurrent) 6.0 31.5 52.5
System Call Overhead 15000.0 23783.9 15.9
========
System Benchmarks Index Score 64.2
The Conclusion
The hosts I tested, at least, indicate that Slicehost has VMs which perform much better in the byte-unixbench test suite than Amazon EC2 instances. Since the costs are about the same, I’d strongly recommend you evaluate both services carefully if you are looking for a VM. The benchmarks, obviously, can’t tell you everything but I think they shine some light on what you could expect from the service.
Yes, my Slicehost VM is on an underutilized server (likely) while my EC2 instances were on utilized servers; that is why you need to be careful reading into these. That said, however, the benchmarks still show what you can expect. For now.