Rackspace Cloud Servers versus Amazon EC2: Performance Analysis
The Bitsource conducted a review of the two cloud computing platforms, Rackspace Cloud Servers and Amazon Elastic Compute Cloud (EC2), to get a general idea of overall system performance. Included in the tests were pure computing power (CPU), and raw disk I/O throughput. Using a consistent testing methodology across most instance sizes over a two-month time span (a painstaking process requiring lots of patience) has resulted in the following comparison of CPU performance, disk performance and cost between the two platforms.
We hope that this evaluation will save the reader some effort by answering questions about how the two platforms compare in terms of time, power, efficiency and cost. The purpose of this article is to answer a simple question: How do the two platforms stack up against each other in terms of disk and CPU efficiency?
Test Methodology
Ten executions were run for each test type, at different times, with 5 tests being run one week on 5 different servers, and the following week on another 5, to distribute the tests over time. (The point of this technique was to ensure that, if the cloud platform was experiencing heavy usage at the time of the test, the cloud’s workload would not skew the test results.) Results for all test runs were averaged, graphed, and compared.
For example, for kernel compile tests, 5 virtual instances for each size server were spun up, the same test was executed against all five 5 servers, and then the results were recorded. The following week, the remaining 5 tests were executed in the same fashion. Finally, all results were averaged for each instance size, which constituted the final result.
The control variables for all tests were as follows: CentOS 5.2 x86_64 hardware, GCC version 4.1.2, and only local storage (no remotely-mounted volumes). In the case of EC2 Small and Medium instances, no image is available on EC2 for deploying the x86_64 version of CentOS to it, so a 32-bit CentOS 5.2 image was used in these specific cases.
When performance-testing cloud platforms, it is important to test multiple instances simultaneously, during different times of the day, and over multiple weeks to get a real measure of system performance for CPU and disk performance. The reason is that the capacity of each cloud platform could vary dramatically given different times of day and load on the platforms. Ultimately, good resource-distribution algorithms, system architecture, and capacity planning will shine through in the performance results between platforms. It should be noted that the amount and timing of samples is important to get a measure of overall system performance for cloud platforms.
How the CPU Tests Were Conducted
Typically it is best to test specific applications to get a true measure of performance, but in this case a generic measures of system performance were used to make a comparison between both platforms. SPEC CPU2006 benchmarks were considered, but their minimum requirements exceeded what was available on the systems used for this procedure. Thus, a test of compiling the Linux kernel was selected in order to determine a general measurement of overall system performance and measure the CPU usage to accomplish the specified task. The Linux kernel version used in all kernel compilation CPU tests was stable 2.6.31.5.
Compiling the Linux kernel is a compute-intensive task, which requires work from most of the CPUs. We matched the number of parallel compilation tasks to the number of cores on the machine, to demonstrate getting maximal efficiency out of the host tested.
All instance sizes on Cloud Servers have four CPU cores available; regardless of the instance size, there is no limit on the amount of compute power available to that specific virtual system based on size.
On Amazon EC2, different instance sizes (based on memory) have different configurations for the number and type of CPUs available.
To demonstrate the full capacity of a particular instance size, the number of parallel jobs executed for the compilation was matched to the number of CPU cores available to the instance. For example, if an instance had 4 CPU cores, the compilation command executed would be make –j4 bzImage to compile the Linux kernel image. This command creates 4 parallel jobs to compile the Linux source, resulting in gains in performance for the compilation task, and fully saturating the system’s CPUs for the task of compiling the Linux kernel.
How the Disk Tests Were Conducted
The Iozone (http://iozone.org) disk benchmark was selected as the tool for benchmarking file system performance. Version 3.327 was used for performing the tests. Iozone is an open source disk-performance utility that starts a timer, performs a transfer, and records throughput of the disk subsystem. Iozone was chosen for its flexibility and the fact that it is freely available for anyone who might want to try replicating the results.
Iozone was run using a fixed file size to exceed the operating system caches. Any file size of less than the amount of available memory on the system will typically only test the CPU and disk caches on the system; therefore, a file size greater than the system memory was chosen in order to exercise the physical I/O subsystem.
The global options for all tests began with the record length to be written on the test file; a record length of 32 kilobytes was selected. The tests run were write, read, reread, random read, and random write. The only specific variable was the actual size of the file, and it was set to a size greater than the system’s physical memory in order to ensure that we exercised the physical I/O subsystem for the disk I/O tests.
The Iozone command to perform disks tests was as follows:
where X is the only variable, consisting of the file size according to system memory, as mentioned earlier.
For instances with less than 4 gigabytes of system memory, a static file size of 6 gigabytes was used for the Iozone tests for this particular range of instance sizes.
For instances with a system memory size of 4 to 8 gigabytes, a static test file size of 10 gigabytes was used for the Iozone tests.
For servers with 8 to 15 gigabytes of memory, a static file size of 17 gigabytes was used for the Iozone tests.
Performance Results
Kernel Compilation Results
The time taken to compile the Linux kernel on all Cloud Server instances was consistent across all instance sizes. All Cloud Server instance types compiled the Linux kernel in approximately 3 ½ minutes, with the exception of the 256 MB instance, which took a little over 5 minutes to compile the kernel.
For the kernel compilation test on Amazon EC2, the results vary widely between instance sizes. The best case was the EC2 Extra Large High CPU instance, which came in under 2 minutes and did not reflect typical performance for EC2 instances on average. The worst case was the EC2 Small instance which took approximately 24 minutes to complete. On average, it takes nearly 8 ¼ minutes to compile across all EC2 instance sizes, which is greatly due to the EC2 small instance taking 24 minutes to complete.
Linux Kernel Compilation Time Results
Linux Kernel Compilation Time Platform Averages
On average, CPU user time used between Cloud Servers and EC2 on all instance sizes was about 45% on average and didn’t vary much between the two platforms. The CPU usage graphs during the Linux kernel compilation tests show that the Cloud Servers instances use about 6% more CPU system time on average for compilation of the Linux kernel.
Linux Kernel Compilation CPU Usage Results
Linux Kernel Compilation CPU Usage Platform Averages
Price versus Performance Comparison
Included is a spreadsheet demonstrating the price to compile the Linux kernel on the various instance sizes. The calculation was done with the following formula:
(Minutes to compile kernel) x (dollars per minute) * (100 Cents per Dollar) = Cost (in cents) to compile kernel.
| CloudServers instances | Price to compile kernel (in cents) |
| 256MB CS | 0.13 |
| 512MB CS | 0.17 |
| 1 GB CS | 0.3 |
| 2 GB CS | 0.67 |
| 4 GB CS | 1.38 |
| 8GB CS | 2.62 |
| 15.5GB CS | 5.21 |
| EC2 Instances | |
| EC2 Small (1.7G) | 3.5 |
| EC2 Medium (High CPU, 1.7G) | 1.94 |
| EC2 Large (7.5 G) | 2.93 |
| EC2 XL (High CPU, 7.5 G) | 1.67 |
| EC2 XL (15G) | 3.28 |
CloudServers presented a better advantage for cost of compilation weighing in at 1/13th of a cent to completion at a 256MB instance size, which was the most economical solution. EC2’s smallest offering was the Small Instance at 1.7 gigabytes of system memory, and the cost of compilation there was 3.5 cents, mainly due to the inability to run parallel jobs for the compilation, as it is a single core system. The most affordable EC2 solution was actually the higher cost-per-hour Medium High CPU instance. This is mainly because of the ability to run jobs in parallel using both cores that come with this instance size, reducing the time it took to complete the compilation task; therefore making the cost of compiling the kernel cheaper on the Medium instance versus the Small instance.
In the mid-range the 8 gigabyte CloudServers instance was slightly less expensive to completion than the corresponding EC2 Large instance with a total compilation cost of 2.62 cents versus 2.93; however, the EC2 Large instance was slightly cheaper at 1.67 cents versus the 8 gigabyte instance’s 2.62 cents. This is mainly due to the 8 CPU cores on the EC2 Extra Large instance versus the 4 CPU cores on the comparable 8 gigabytes instance.
The most expensive CloudServers solution in this test was the large instance at 5.21 Cents to completion. It’s corresponding instance on the EC2 side came in at a cost of 3.28 cents for the same task.
Disk I/O Test Results
Cloud Servers Disk Read Performance
Disk read I/O performance on Cloud Servers rated 128.5 megabytes per second at minimum, and 270.1 megabytes per second at maximum. The average read time rated 176.5 megabytes per second on average across all instance sizes.
Disk random read I/O performance on Cloud Servers rated 2.6 megabytes per second at minimum and 12.5 megabytes per second at maximum. The average random read time rated at 5.7 megabytes per second on average across all instance sizes.
EC2 Disk Read Performance
Disk read I/O performance on EC2 rated 82 megabytes per second at minimum, and 101.7 megabytes per second at maximum. The average read time rated 93.2 megabytes per second on average across all instance sizes.
Disk random read I/O performance on EC2 rated 4.3 megabytes per second at minimum, and 9.8 megabytes per second at maximum. The average random read time rated 6.1 megabytes per second on average across all instance sizes.
Cloud Servers Disk Write Performance
Disk write I/O performance on Cloud Servers rated 89.9 megabytes per second at minimum, and 162.7 megabytes per second at maximum. The average write time rated 129.5 megabytes per second on average across all instance sizes.
Disk random write I/O performance on Cloud Servers rated 12.3 megabytes per second at minimum, and 45.4 megabytes per second at maximum. The average random write time rated 24.2 megabytes per second on average across all instance sizes.
EC2 Disk Write Performance
Disk write I/O performance on EC2 rated 33.4 megabytes per second at minimum, and 51.7 megabytes per second at maximum. The average write time rated 43 megabytes per second on average across all instance sizes.
Disk random write I/O performance on EC2 rated 10.6 megabytes per second at minimum, and 13.4 megabytes per second at maximum. The average random write time rated 11.7 megabytes per second on average across all instance sizes.
Disk I/O Throughput Results
Disk I/O Throughput Platform Averages
Performance Analysis Summary
No solution is perfect in every case, and depending on the user’s requirements, one platform may be better suited based on its performance. This review is intended to give a general idea of the performance of both platforms, leaving the reader to conclude which platform best suits his or her needs. There are a few clear distinctions in performance for CPU usage and time spent to accomplish the task of compiling the Linux kernel. Disk I/O throughput also shows a clear winner. Many different cases were tested, with the end goal being to give the reader as much data as possible to make informed decisions about the available platforms.
In addition to the detailed results, we have summarized the performance results from a high level, to demonstrate a general analysis of performance at the overall platform level.
On average, Cloud Servers was more than twice as fast as Amazon EC2 at compiling the Linux kernel across all instance sizes. It should be noted that the EC2 small instance skews the average considerably, weighing in at 24 minutes to compile the Linux kernel. This difference comes heavily into play when paying by the hour for compute resources. Even when pricing is per hour, if completing a task such as compiling the Linux kernel takes longer, the pricing will increase in proportion to the amount of available compute resources.
The amount of available computing power on the Cloud Servers platform is independent of instance size and hourly price. This means that users can expect to receive the same amount of computing power, regardless of instance size or price. The primary difference between the instance sizes offered by Cloud Servers is the amount of system memory available, not computing power. With EC2 instances, on the other hand, the amount of available resources is closely tied to instance size and price per instance.
The cost of compilation on average was cheaper on CloudServers rather than EC2. CloudServers offers more smaller instance sizes, which can accomplish the same amount of work as the large instances at a much lower hourly rate. The cost of compilation on CloudServers at best was in fractions of a cent, whereas the most economical EC2 solution was 1.5 cents. For users with large memory requirements, such as those whom cannot spread their work over many small instances, EC2 was less expensive for compilation among extra large sizes comparable to CloudServers.
There are significant savings to be made when utilizing the smaller CloudServers, and there is a lower cost of entry on CloudServers that is not present on the standard Small and Medium EC2 instances.
Disk I/O results show that Cloud Servers consistently have much better write and random write performance than EC2 across most sizes. For read performance, Cloud Servers also have consistently higher read performance on average, except in the case of random read performance, in which case EC2 is about 0.4 megabytes per second faster on average. Overall, Cloud Servers have a higher disk throughput on average.
The Bitsource conducted an independent, third-party performance analysis of Rackspace CloudServers and Amazon EC2 on behalf of Rackspace Inc. The results were not influenced in any way by Rackspace Inc. as presented using the methods in this analysis.
Leave a Reply
You must be logged in to post a comment.
























January 11th, 2010 at 9:48 pm
EC2 users that care about disk performance are using Elastic Block Storage, not the instance storage. EBS volumes tend to outperform the instance storage, and a software RAID array of EBS volumes outperforms that even more. I use a RAID array of EBS volumes in database servers for W3Counter, and I know Reddit.com does the same as well.
January 11th, 2010 at 9:49 pm
Very interesting. It makes you think about more things when you are comparing cloud services.
The other half of the discussion is: Does it really make any difference in real world applications? I suppose that's the question you always have to when dealing with artificial benchmarks.
On a side note, what script are you using for the image lightboxing? It's amazing!
January 11th, 2010 at 9:49 pm
Very interesting. It makes you think about more things when you are comparing cloud services.
The other half of the discussion is: Does it really make any difference in real world applications? I suppose that's the question you always have to when dealing with artificial benchmarks.
On a side note, what script are you using for the image lightboxing? It's amazing!
January 11th, 2010 at 9:59 pm
Couple of points. I could be wrong, but I'm pretty sure that a kernel compilation is not a real test of CPU capacity, since compilation is a pretty disk intensive process. You've basically done two disk benchmarks here? Why not a pure CPU benchmark like specfp or speccpu.
Second, are these disks Elastic Block Store disks or the non-persistent storage that comes with an EC2 instance? These numbers look a LOT lower than the last benchmark I saw: http://blog.rightscale.com/2008/08/20/amazon-ebs-...
Third, shouldn't you have done a memory access benchmark? It's a pretty badly designed web app that has to go to disk a lot — most modern web applications use in memory caching pretty extensively.
January 11th, 2010 at 3:04 pm
There are applications that reside to memory I/O (ie memcached instances) instead of raw cpu power [which in fact is the compilation of the kernel]. Such tests [involving memory throughput, total memory allocation, and memory latency ] would be a great addition to an overall excelent presentation.
I am glad that some time ago when we had to decide about our infrastructure we came to same conclusion
Cheers and thanks
January 12th, 2010 at 1:16 am
The point about EBS vs. EC2 instance storage is a valid one. Also, any serious I/O test would use more than one I/O thread (e.g. iozone … -l 4) and a network-performance benchmark would be nice as well.
January 12th, 2010 at 1:26 am
What was important was consistency in the test, and local instance storage was chosen for these particular tests. There are many aspects of a server that can be tested, and I appreciate the feedback and will take it into account for future tests. Perhaps in the future I will include EBS vs. CloudFiles for storage metrics in addition to local instance storage. As well as memory access and network performance. All of your comments are heard an taken into account.
January 12th, 2010 at 1:29 am
Just remember that Rackspace is not as reliable as EC2. Once a month I receive an email saying one of my servers is down due to hardware issues. Never had such a problem with EC2.
January 12th, 2010 at 2:58 am
cent0s 4tw!
January 11th, 2010 at 9:45 pm
Very interesting. It makes you think about more things when you are comparing cloud services.
The other half of the discussion is: Does it really make any difference in real world applications? I suppose that's the question you always have to when dealing with artificial benchmarks.
On a side note, what script are you using for the image lightboxing? It's amazing!
January 12th, 2010 at 12:45 pm
Would love to see Linode included next time round!
January 12th, 2010 at 10:20 am
Who cares about CPU usage and disk cache-to-memory throughput? Things that matter are drive random seek and memory speed and amount. I bet if you created a dummy database-driven app and test it with ab or httperf, you would get quite similar performance/price ratio for Rackspace and EC2. Oh, and database should be placed on EBS of course.
January 12th, 2010 at 5:27 pm
EBS isn't necessarily faster than EC2 local disk storage. It is limited by a 1Gb network I/O, so you will saturate EBS, even in RAID, at under 100MB/s. However, it generally does have higher random seek performance than local EC2 disks. For a complete writeup, see: http://victortrac.com/EC2_Ephemeral_Disks_vs_EBS_...
January 13th, 2010 at 9:44 pm
Try calling Amazon? Where's their number? Who do I call when I have a problem with my bill? Is there pre-sales support? I find that dealing with Amazon is a pain as they offer little to no support/customer service
January 13th, 2010 at 11:28 pm
Thanks for taking a somewhat rigorous approach to performance benchmarking. I just wish people would stop measuring disk throughput in raw MBps. IOPS is a much better measure.
January 14th, 2010 at 3:53 pm
@Mike: The landing page of AWS has this link – http://aws.amazon.com/contact-us/ – which offers a pretty comprehensive list of links. And in my experience, Amazon has been good at customer support.
January 15th, 2010 at 3:15 am
Here are links to the geekbench tests we ran:
EC2 m1.large – score: 3113
http://browse.geekbench.ca/geekbench2/view/203592
4GB Rackspace Cloud Server – score 2841
http://browse.geekbench.ca/geekbench2/view/187589
January 17th, 2010 at 4:13 am
[...] which doesn’t put a performance ceiling. “The BitSource” did some performance tests between Rackspace vs Amazon EC2 which explains this problem very [...]
January 19th, 2010 at 4:28 am
Yes they do offer support, you have to pay extra – http://aws.amazon.com/premiumsupport/
We pay for the gold package – 20% of EC2+S3+etc charges.
It is amazing. Absolutely the best support experience I have ever had.
We have used phone support 5+ times in 8 months and web support 10+ times. Each time we immediately talk to someone knowledgeable and technical, who diligently follows up. The whole experience feels custom to our issues. We can always talk to the same person in follow up calls and we can also coordinate closely on follow up work, to make sure we aren't treading on each others toes in terms of troubleshooting and resolution.
Sure we pay for the highest tier, but to say they offer no or little support is not factually accurate.
January 31st, 2010 at 12:40 pm
Jason,
I gave your Geekbench utility a whirl, let me start off by saying I think it's a great idea to have a simple push-button benchmarking utility that is cross-platform; it seems that it only takes a few seconds to run. Is that correct? How can you collect accurate metrics within a few seconds?
Matthew
February 8th, 2010 at 5:41 am
[...] use Amazon for the actual virtual servers, even though others such as Rackspace Cloud Servers are substantially cheaper than Amazon EC2. Is that a problem? According to Adobe’s John Carione, senior enterprise [...]
February 14th, 2010 at 3:31 pm
Social comments and analytics for this post…
This post was mentioned on Twitter by ruanj: RT @wagerlabs: Rackspace Cloud Servers vs Amazon EC2: Performance Analysis http://is.gd/84Dks...
February 15th, 2010 at 8:12 am
[...] Study, 26:21 - 30:03 At the time we recorded this podcast, Bitsource had just published a study that showed a benchmark performance analysis between Amazon EC2 and The Rackspace Cloud. Chandler [...]
February 18th, 2010 at 1:12 am
Does anyone know of some actual application level benchmarks, i.e has anyone actually run a load test against an application on both platforms?