[tech] martello speed

Matt Johnston matt at ucc.asn.au
Sat Apr 2 10:35:11 WST 2005


On Wed, Mar 23, 2005 at 06:41:43PM +0800, James Andrewartha wrote:
> The new SATA controller has been installed in martello, and I've been
> benchmarking various RAID configurations with bonnie++. The results are

> RAID 5
> ------
Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
martello         4G 38175  92 65903  27 20999   8 26989  60 58108  12 170.9   0
> 
> (fiddling with blockdev --setra didn't do much)

*snip*
> The bare disk result bears out the hdparm value of 55MB/s. The question is,
> where's the performance improvement that should happend for RAID 1+0 and
> RAID 5? The slow resync and hdparm result during array construction says to
> me that the ports on the controller are not independent.
> 
> A little searching finds
> http://forums.storagereview.net/index.php?showtopic=17794&hl=promise which
> claims "The linux driver sends only one command to the board at a time."

We've been playing with various drivers and things over the
past week with some results. The sx8.c driver in the kernel
does indeed only queue one command at a time. There's a
parameter which can be tweaked (CARM_MAX_Q), but we found
that would cause corruption for particular values - knowing
safe values seemed too hard. The author of the driver had
only tested on prototype hardware, so didn't know what would
be safe. Updating to the latest firmware didn't help either.

There's a seperate open source driver available at
promise.com, which has better performance than the sx8.c
driver in the kernel, so we're using that one. The main
downside is that it will probably bitrot more than the
in-kernel sx8.c driver.

In the process of testing we discovered a bug in Linux's
ext2 driver, and hit another bug (already known and fixed)
in the ext3 driver... These have now been patched on
martello.

I've played with --setra on the logical volume itself, and
that does seem to give performance improvements. See below
for some runs of bonnie++ with various settings.

Anyway, the drives/controller/FS now seem fairly stable in
their current configuration.

Matt


Single runs:
============

Plain RAID5, /dev/md0

Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
martello         4G 44153  96 71542  16 20943   7 34897  77 144465  30 447.8   0

LVM (default readahead of 256 for /dev/sd{b..e} and /dev/mapper/reliable-home

Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
martello         4G 38025  96 71307  31 28362  12 31777  67 91284  17 378.2   1

LVM, readahead 512 for /dev/sd{b..e}, 2048 for /dev/mapper/reliable-home

Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
martello         4G 37334  95 73596  37 30293  12 42510  92 173115  37 407.2   1


Concurrent runs (4x bonnie++ with -y flag):
===========================================

RAID5

Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
martello         4G  7706  17  7740   1  5117   1 13818  30 15072   3  91.7   0

LVM with default readahead

Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
martello         4G  7566  19  9762   5  5677   2 11928  26 13976   2  79.1   0

LVM with increased readahead

Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
martello         4G  9474  24  9354   4  6870   2 19414  42 20497   4  79.7   0



More information about the tech mailing list