Bonnie IO Benchmark vs EC2

Andy, a reader of the blog left a comment asking if I could run some benchmarking of EC2.

If someone takes the time to comment, making the effort to respond is always worthwhile. Feedback drives most conversation, business and innovation.

So I went off and google’ed the most appropriate and easiest benchmarking tool.

http://www.tux.org/pub/benchmarks/
http://oss.sgi.com/LDP/HOWTO/Benchmarking-HOWTO.html
http://www.coker.com.au/bonnie++/
http://www.acnc.com/benchmarks.html
http://portal.acm.org/citation.cfm?id=71309 IOBench

I settled on bonnie and bonnie++, both may seem a little long in the tooth given when they were developed but they serve the need to test the raw speed of both the root partition and /mnt partition which comes when you run an EC2 virtual machine or Amazon Machine Image (AMI).

If you want to see other web posts on benchmarking EC2, I found a couple of good articles as well.

DeCare Systems has a bunch of articles on EC2 this one has information on using a java benchmarking tool, Javolution
http://blog.decaresystems.ie/index.php/2007/01/29/amazon-web-services-the-future-of-datacenter-computing-part-1/

Other articles on benchmarking on EC2:
http://paul-m-jones.com/blog/?p=238

Comments:

  1. Bonnie required less dependent packages then bonnie++
  2. Both tools were easy to install and run.
  3. Both tools saturated IO and therefore bypassed any issues with caching when the filesize was sufficiently large

I will followup with some more benchmarks and analysis of the results in the next couple of days and then it is back onto MySQL and Oracle.

Installing bonnie on CentOS 4.4

  1. Download bonnie: wget http://www.tux.org/pub/benchmarks/Disk_IO/bonnie.tar.gz or from Google Code
  2. Install GCC: yum install gcc
  3. Compile: gcc -O2 -o bonnie bonnie.c
  4. Run with 100M file: ./bonnie -d /mnt/bonnie -s 100 -m centos4
  5. Run with 1G file: ./bonnie -d /mnt/bonnie -s 1024 -m centos4

Results for Bonnie

100M file:

              -------Sequential Output-------- ---Sequential Input-- --Random--
-Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --Seeks---
Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU
centos4 100 25464 53.0 166352 47.1 189359 55.5 25127 53.7 412332 52.3 36552.4 45.7
centos4 100 25038 52.6 216190 61.2 193490 54.8 24317 52.2 418285 49.0 34320.0 51.5
centos4 100 25535 53.4 123481 37.4 188139 57.0 25472 54.5 417667 48.9 72301.4 90.4
centos4 100 25118 52.7 130512 39.5 191710 54.3 25546 53.6 576862 62.0 80402.0 100.5
centos4 100 24205 52.9 183853 53.9 223497 61.1 24852 51.9 400162 54.7 35898.3 35.9

1 Gig file:


-------Sequential Output-------- ---Sequential Input-- --Random--
-Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --Seeks---
Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU
centos4 1024 23573 50.0 28648 6.2 19739 4.5 6892 12.1 409836 38.7 38105.0 38.1

Installing bonnie++ on CentOS 4.4

  1. Download: wget http://www.coker.com.au/bonnie++/bonnie++-1.03a.tgz
  2. Install dependencies: yum install compat-gcc-32-c++.i386 gcc-c++.i386 libstdc++.i386
  3. Configure bonnie++: ./configure
  4. Make bonnie++: make
  5. Run on /mnt: ./bonnie++ -d /mnt/oracle -s 3000 -n 1 -m centOS4 -x 3 -r 1500 -u oracle
  6. Run on /: ./bonnie++ -d /home/oracle -s 3000 -n 1 -m centOS4 -x 3 -r 150

Results for Bonnie++


/ mountpoint:

name,file_size,putc,putc_cpu,put_block,put_block_cpu,rewrite,rewrite_cpu,getc,getc_cpu,get_block,get_block_cpu,seeks,seeks_cpu,num_files,seq_create,seq_create_cpu,seq_stat,seq_stat_cpu,seq_del,seq_del_cpu,ran_create,ran_create_cpu,ran_stat,ran_stat_cpu,ran_del,ran_del_cpu
centOS4,3000M,13469,28,59124,15,19772,1,21629,38,51205,1,254.5,0,1,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++
centOS4,3000M,17203,36,57555,15,20025,1,22490,40,49618,0,247.9,0,1,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++
centOS4,3000M,23918,49,54411,14,19845,1,23120,41,52089,1,246.4,0,1,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++

/mnt mountpoint:

name,file_size,putc,putc_cpu,put_block,put_block_cpu,rewrite,rewrite_cpu,getc,getc_cpu,get_block,get_block_cpu,seeks,seeks_cpu,num_files,seq_create,seq_create_cpu,seq_stat,seq_stat_cpu,seq_del,seq_del_cpu,ran_create,ran_create_cpu,ran_stat,ran_stat_cpu,ran_del,ran_del_cpu
centOS4,3000M,23847,48,45251,12,15149,2,19438,38,41982,5,199.8,0,1,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++
centOS4,3000M,23189,49,42246,11,16938,4,21007,41,52733,1,183.9,0,1,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++
centOS4,3000M,24195,49,44167,11,19923,2,20465,40,47364,1,185.0,0,1,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++

About these ads