Hi.

On Sat 2002-09-28 at 20:20:37 +1000, Mark Williamson wrote:
> 
> Just trying to workout why I have a Raid 0 that is slower that a
> Raid 1 device..

Why do you think that this shouldn't be the case?  AFAIK, usually
RAID0 is at most comparable to RAID1 on reading speed, but may be
slower dependend on use. RAID0 is usually faster quite a bit on
writing.


Regardless, there are several possible reasons. The two that come to
my mind:

- speed of different partitions can be different (remember, speed on
  inner side and outer side of the disk differ usually). For example,
  one of my disks gives:

  /dev/hda1:
    Timing buffer-cache reads:   128 MB in  0.80 seconds =160.00 MB/sec
    Timing buffered disk reads:  64 MB in  2.88 seconds = 22.22 MB/sec

  /dev/hda4:
    Timing buffer-cache reads:   128 MB in  0.81 seconds =158.02 MB/sec
    Timing buffered disk reads:  64 MB in  3.94 seconds = 16.24 MB/sec

  You can find out by measuring the underlying partitions directly or
  eliminate that factor by creating the RAID0 and RAID1 partitions on
  the same underlying partition one after the other and running the
  tests.


- AFAIK, RAID0 (striping) can only (mainly) benefit from 2 disks, if
  the read size is larger than the size of the stripes per underlying
  disk. If hdparm uses small blocks to read, RAID0 will (or better:
  should ;) only be marginally faster than the underlying disk. You
  see, it is read from one, one, one, one, two, two, two, two, one,
  one, one, one and so on.

  If the block read is larger than the stripe size, it will be read
  one/two, one/two, one/two, which is what usually gives the speed
  improvement on reading large files. You also get a nice boost with
  disk seeks and so on, but

  Note that if the assumption is true, this (the test reading small
  blocks in row) is an uncommon case: usually either you read small
  files from not-adjoining blocks, then you will gain from disk seeks
  getting distributed to two disks, or you read large files, where you
  gain from (almost) parallel reads. Neither would be the case with
  small test blocks.

  
  RAID1 (mirroring) on the other hand, may distribute reads
  arbitrarily to the two underlying disks, because they both contain
  the same data and therefore is not affected by such patterns.

  Note that the above is only a possibility based on the behaviour of
  RAID0 and RAID1. I do not know if the above really matters in this
  case. If you want to know, you can try to play with the size for
  striping and then run the test again.


Bye,

        Benjamin.


> Now I have here a /dev/md0 which is a Raid1 and /dev/md4 which is Raid0 
> 
> now using hdparm to test the speed..
> 
> # hdparm -Tt /dev/md0
> /dev/md0:
>  Timing buffer-cache reads:   128 MB in  0.52 seconds =246.15 MB/sec
>  Timing buffered disk reads:  64 MB in  1.60 seconds = 40.00 MB/sec
> 
> # hdparm -Tt /dev/md4
> /dev/md4:
>  Timing buffer-cache reads:   128 MB in  0.51 seconds =250.98 MB/sec
>  Timing buffered disk reads:  64 MB in  2.58 seconds = 24.81 MB/sec
> 
[...]

Attachment: msg58174/pgp00000.pgp
Description: PGP signature

Reply via email to