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.