Disclaimer: we were not paid by any party to write this blog post. If you would like more information on these or any other providers, or if you have any questions, please feel free to contact us.
Abstract
Cloud providers normally allow you to only select an allocation of CPU, RAM, and storage Another factor,though, can be the hidden bottleneck that may make or break your application’s performance: internal network performance. Using PEER 1 Hosting’s Zunicore and Amazon EC2 as examples from our CloudSpecs Performance Studies, we show you that not all cloud internal networks are created equally, and understanding the actual speed of your VPN is crucial in a cloud IaaS purchase decision.
Introduction
A colleague of mine, a system administrator, recently gave me a great example of how vital internal network performance can be in application performance. In his previous work, he managed servers for an RMV. Every time someone goes to get a picture taken for a license, that picture is sent to a server miles away. That isolated server then receives the picture and sends a message to another server, the database, saying, “Hey, I’m going to look through all your pictures and see if any of them match the one I have.”
The database responds, “alright, but I’m warning you: I have 6 million pictures you have to look through.”
Things just got complicated.
It doesn’t matter how fast or slow it can spin its hard disks, if it can only send 1 picture at a time and each picture takes a second to send… there’s no point in doing that math. It just won’t work.
When multi-server applications must maintain a stream of communication, the bottleneck that may occur in a network inside the VPN is a major consideration, and that performance must be reliable for complex and mission-critical applications running on the cloud. An application that must constantly read and write data from one or many servers depends on the speed of the internal network.
Though providers usually give you only a choice of the amount of CPU, RAM, storage, and servers you provision, don’t be fooled into thinking those are the only true difference among providers. As shown by this example of Zunicore and Amazon, though CPU performance may be around the same area, a drastic difference in internal network performance can be the deciding factor in your application’s performance.
Comparison
Network Performance: Zunicore Performs Better and More Steadily
As a side note, our CloudSpecs Performance Test System not only tests servers, but is automated to run those tests on servers 4 times a day, 365 days a year. This means we not only get to capture a single point in time, but an overall trend in performance to understand stability, predictability, deviations in performance, etc. which is extremely important in a multi-tenant environment where resources are shared, i.e., the public IaaS cloud. By putting two cloud IaaS servers in a virtual private network (VPN) and performing network tests between them, we can gather an idea of the performance of the cloud IaaS provider’s internal networks. Leveraging our method, we have discovered a surprising trend that will be summarized below.
Apart from the fact that Zunicore outperforms Amazon in every one of our CloudSpecs performance measurements gauging the performance of the internal networks, the idea that Amazon’s network performance fluctuates so drastically over time should fire up a red flag. Other notable performers with steady network performance that we have measured include Rackspace and Hosting.com.
Conclusion
Going back to my friend’s example, because the CPU is running just fine, the application sitting on the server is going to operate effectively. But would could fluctuate the performance? Let’s say my friend runs his facial-recognition application on Zunicore. Likely, if the software takes 10 seconds to pour through the database and confirm or deny a match, then the next day it will take around 10 seconds as well. But throwing it on Amazon EC2’s platform, 10 seconds one day may mean 60 seconds the next. Now multiply that by the thousands of faces the application much search for in a database of millions.
Methodology
As mentioned earlier, we monitor performance 4 times a day, 365 times a year with our CloudSpecs system, a software suite of open-source, industry-standard server performance tests. From those findings, we average performance in a period of time (for purposes of this post, it is 30 days). Using that average, we plug in pricing to figure out a value score based on how much the server cost us and how much performance we’re actually getting out of it. The best value IaaS cloud provider is given a score of 100, and every other IaaS provider has a score pegged to it, so the other IaaS providers’ scores are in relation to the best IaaS provider’s value.
Duration of Study
- Begin date: July 30, 2012
- End date: August 29, 2012
- Total time: 30 days
Pricing/Server Cost:
- Amazon’s XLarge Instance: $0.64 per hour
- Zunicore Server: $0.50 per hour
Server configuration is a bit tricky because Amazon only provides tiered structures, where you must select a pre-configured package (called “instances” on Amazon) that contains a set amount of CPU, RAM, and disk space. Zunicore’s servers are highly configurable, so only required resources needed to be purchased. The Main Server runs all of the CloudSpecs tests that monitor each provider, and the Dummy Server acts as the server that communicates with the Main Server in network tests. The servers are set in the same VPN.
Server Configurations of the Main Server:
- Amazon: 15GB RAM, 4vCPUs (8ECUs), 1,690GB Disk
- Zunicore: 16GB RAM, 4vCPUs, 50GB Disk
Server Configurations of the Dummy Server:
- Amazon: 3.75GB RAM, 1vCPU (2ECUs), 410GB Disk
- Zunicore: 4GB RAM, 1vCPU, 50GB Disk
For more details into the methodology, please contact us.