Hi,

Recently, I was looking into why softraid's RAID5 write performance was so
disappointing on my hardware. For reference, on the exact same hardware where
RAIDframe easily does over 25 mbytes/sec, softraid barely does 1,5
mbytes/sec.

I found that this was because sr_raidp_rw() always splits up write operations
into blocks of strip_size bytes and reads and updates the parity separately
for each block. RAIDframe on the other hand optimises its writes so that if
(no_chunks - 1) * strip_size bytes are written, it doesn't read the parity
from disk. If the filesystem blocksize is then matched to that figure,
performance increases dramatically.

This can be easily seen in systat iostat: for large writes, softraid does
about as many reads as writes on the underlying disks, whereas with RAIDframe
it's almost all writes[1].

I'm wondering though, is there a specific reason why softraid does it the way
it does? Is it safer?

Thanks,
Wouter Coene

1. on a 3 disk RAID5 array with patched kernel and bioctl to allow the setting
of strip_size to 16k, and with the filesystem blocksize set to 32k.

Reply via email to