Testbed and method

From the previous chapter, I think that you agree with me that the two most interesting RAID level are probably RAID 5 and RAID 10: the RAID 0 setup is too prone to lose data, while a RAID 1 setup seems to waste too much space/performance. However, while in the following pages we are going to focus on RAID 5 and 10 speed, I have included the results of the other setup also: in this manner we have some more data points to compare. For the sake of completeness, I also included the single disk (no RAID) results.

All test were performed on this machine:

  • Core i7 860 @ 2.8 Ghz

  • Motherboard Asus P55 Pro

  • 8 GB of DDR3 memory running @ 1600 Mhz

  • Four 1 TB (931.5 GiB) Western Digital Green disks (model WD10EADS-00L5B1, firmware version 01.01A01, ~5400 rpm)

  • Video card GeForce 8400GS

  • S.O. CentOS 5.5 x86_64

Each disks wes connected to a SATA port provided by the P55 chipset and was partitioned in the following mode:

  • a first, system partition of ~62.5 GiB configured in a RAID 1 array

  • a second, test partition of ~861.2 GiB configured in various RAID mode (this partition was the one used for the tests)

  • a third, swap partition of ~7,81 GiB configured in RAID 1 array

I have installed the operating system on partition n.1 and then I create the various RAID configuration using the mdadm Linux tool; then, I mounted the array in /opt directory. For each RAID array, I left the default options; most notably, the stripe/chunk size (which can significantly alter the array speed) was left at the default 64 KB size.

In order to evaluate each RAID array performances, I run some synthetic and real-word tests. For the first group, we have:

  • EXT3 filesystem creation time (mkfs.ext3)

  • Linux DD utility

  • Intel I/O Meter

For the real word test, I have used the Sysbench package, version 0.4.10. I concentrate myself on database performances, so I run these tests:

  • MySQL / PostgreSQL prepare (insert) benckmark

  • MySQL / PostgreSQL simple (read-only) benchmark

  • MySQL / PostgreSQL complex (transactional) benckmark

MySQL version was 5.0.77, while PostgreSQL version was 8.1.21.

A note about the database tests: this is not a MySQL vs PostgreSQL comparison! While such comparison would be interesting (and I think to do it on a next article), this is not the scope of today article. The databases were left a their default configuration and were not tweaked in any manner: the scope of this article is to show how different array configurations affect two common database software, not to compare the performances obtained by these two software.

So, it's time for some numbers...