In a typical Oracle database implementation, you’ll want to baseline or benchmark your storage.  The storage team will hand over, and you’ll run a battery of tests using software like bonnie++ or ORION.  You’ll make sure that the results are in-line with requirements and expectations.

  What if you are implementing said database on one of Amazon’s new high-I/O SSD-backed instances?  What kind of numbers should you expect?

  To provide a baseline, I booted a hi1.4xlarge instance and ran some simple read workload tests.

  When you launch the hi1.4xlarge, make sure you do so from the EC2 API tools to ensure that the ephemeral devices are accessible to the guest.

$ ec2-run-instances ami-3f4ff256 -t hi1.4xlarge --region $REGION -b "/dev/xvdb=ephemeral0" -b "/dev/xvdc=ephemeral1" -k $KEYPAIR

Once you’re shelled into the box and have extracted ORION, run the following:

$ echo /dev/xvdb > ec2_hi1_4xlarge_simple_1.lun
$ echo /dev/xvdc >> ec2_hi1_4xlarge_simple_1.lun
$ ./orion_linux_x86-64 -run simple -testname ec2_hi1_4xlarge_simple_1

  A few caveats:

  1. I ran this on Ubuntu 12.04 HVM, not RHEL/OEL as would typically back an Oracle database.
  2. I did not test this instance’s performance relative to other hi1.4xlarge instances.
  3. I did not “warm up” these ephemeral volumes, but these ephemeral SSDs supposedly do not suffer from the first-read or first-write penalty that other instances/volume types do.
  4. I only tested the -simple, 8K and 1MB read-only workload.

  Here are the results:

ORION Run #1, hi1.4xlarge

Maximum Large MBPS=1745.02 @ Small=0 and Large=4
Maximum Small IOPS=41225 @ Small=10 and Large=0
Minimum Small Latency=0.18 @ Small=1 and Large=0

ORION Run #2, hi1.4xlarge

Maximum Large MBPS=1722.12 @ Small=0 and Large=4
Maximum Small IOPS=41129 @ Small=10 and Large=0
Minimum Small Latency=0.18 @ Small=1 and Large=0

  Compare these numbers to the m1.xlarge, EBS-Optimized, 4x128GB 250IOPS ORION benchmark below and you’ll see why the SSD instances are a game-changer for serious workloads.

ORION Run #1, m1.xlarge

Maximum Large MBPS=63.05 @ Small=0 and Large=1
Maximum Small IOPS=905 @ Small=5 and Large=0
Minimum Small Latency=1.35 @ Small=1 and Large=0