Amazon EC2 IO Performance

While discussing the topic of cloud computing today, my co-worker mentioned the Amazon EC2 service and gave me a quick presentation of the features that are available. Since I am a big fan of virtualisation and the idea of scalable architectures, I immediately thought “This could be great to test some things out and is a wonderful opportunity to play around with different virtual machines”. So I signed up and did some quick tests to look at the IO performance…

I was especially interested in using these machines for storage and maybe some tests with databases. For these tests, my current Virtual Server serves as a reference, simply because EC2 could provide an alternative to that Virtual Server. In my tests, I included the following configurations:

Provider Product Debian Version Storage Filesystem
HostEurope Virtual Server Linux L 4.0 5.0.4 RAID10 ReiserFS
Amazon EC2 t1.micro 6.0.1 Elastic Block Storage EXT3
Amazon EC2 m1.large 6.0.1 Elastic Block Storage EXT3

The reason I am testing multiple EC2 instances is, that they each feature a different IO performance. Amazon states on the EC2 website:

Micro Instance
I/O Performance: Low

Large Instance
I/O Performance: High

Testing methods

Testing IO performance is a difficult task where many factors come into play. For my tests, I am using the IOzone benchmark tool I already used in my tests with the ZFS filesystem on Solaris. I invoked the IOzone tool with the following command:
iozone -a -f /root/testfile


After running my tests with IOzone (Download raw IOzone output), I packed the results into a graph and this is what it looks like:

Graph containing the output of IOzone

Graphed IOzone output

Looking at this bar chart, we easily see that the “Micro” instances of EC2 only features about 80% of the performance of the “Large” instance. The “Large” instance nearly reaches the IO performance of a Virtual Server with a RAID10 configuration (about 90%). In my opinion, this is pretty good. In one test (fwrite), the EC2 instance performed amazingly well (more than twice as fast as the RAID10 setup). The IOzone documentation tells us what this test does:

Fwrite: This test measures the performance of writing a file using the library function fwrite()


So basically, the results reflect what I expected. The EC2 “Large” instance nearly reached the same IO performance as a HostEurope Virtual Server with a RAID10 setup. However, the IO performance of the smaller “Micro” instance only reached about 80% of the “Large” instance. I will have to investigate further to decide if I want to use Amazon EC2 for hosting my website or if I will keep my current Virtual Server. Feel free to use the results of my tests for your own evaluations.