A Comparison of Software RAID Types
Linux Software RAID Performance Comparisons
The Problem
We expect RAID-0 to be faster than RAID-5 and that RAID-6 will be
slower than RAID-5, but by how much? Here, we compare 5 spindles in
each configuration, as well as the same number of data spindles in
each configuration.
The Controller
- Supermicro AOC-SAT2-MV8
- 8 SATA II ports
- 64-bit PCI-X133MHz (tested in 32-bit PCI slot)
- Chipset: MV88SX6081
- Linux driver: sata_mv
- Cost: $99.99 from newegg.com
- Configuration: JBOD
The Test System
- Motherboard: Asus K8N-DRE
- Processors: Two 1.8GHz Opteron 244
- RAM: 8GB DDR400 running at 333MHz
- Slots: 1 32-bit PCI; 1 PCI Express x16
- Drives: Seagate Barracuda 7200.11 1000Gbytes ST31000333AS
- Drive cage: Supermicro CSE-M35T-1B 5-Bay Enclosure (fits in
three 5-inch chassis bays; sells for about $100-$120 from
newegg.com)
The Test Matrix
- Read Percentage: 100% (pure read), 50% (mixed), 0% (pure write)
- Random Percentage: 0% (sequential), 100% (random)
- Thread counts: 1 and 20
- Block sizes: 4k, 8k, 32k, 64k, 256k, 1m, 4m, 8m, 64m
- Targets: All 5 driver were tested simultaneously, as well as
each drive individually.
- All I/Os are issued using the O_DIRECT flag.
- All tests last 20 seconds.
Conclusion
RAID-0 lacks parity protection and is only significantly faster than
RAID-5 and RAID-6 for write-based workloads. While it is typical to
use RAID-0 for read-only workloads, there is no compelling
performance reasons to do so -- on read-only workloads, RAID-5 and
RAID-6 perform nearly as well (or better).
RAID-6 must compute twice the parity information as RAID-5, so one
typically expects it to perform significantly worse than RAID-5.
This is not the case. Indeed, RAID-6 performance is nearly
identical to RAID-5 performance for I/O sizes under 256KB. Capacity
and reliability issues -- not performance issues -- should guide the
selection between RAID-5 and RAID-6. (This likely assumes
sufficient CPU, but the test system is I/O bound, not CPU bound.)
My recommendation is to never use RAID-0, and to select between
RAID-5 and RAID-6 based on available capacity, data-recovery, and
reliability needs.
Sequential Single Threaded Tests
For sequential reads, all RAID types have comparable performance up
through 64KB I/O sizes. After that, RAID-0 saturates the controller
and RAID-5 and -6 remain comparable. For workloads including
writes, RAID-0 clearly has higher performance (because no parity
computation is required); but RAID-5 and -6 are, again, comparable.
Random Single Threaded Tests
For random reads, all RAID types are comparabe, with RAID-0 having
slightly higher performance. Writes show RAID-0's performance
superiority, but RAID-5 and -6 are very similar up through 256KB
I/O sizes, after which RAID-5 is superior.
Sequential Multi-Threaded Tests
All RAID types have comparable performance for mutli-threaded
sequential reads up through 64KB I/O sizes, with RAID-5 and -6
actually outperforming RAID-0 for small I/O sizes. RAID-0 is
superior for larger I/O sizes, and, as expected, for writes.
Random Multi-Threaded Tests
Multi-threaded random reads perform similarly across RAID types,
nearly identially through 64KB I/O sizes. Again, RAID-0 has higher
performance for workloads including writes, but RAID-5 and -6 are,
again, nearly identical through 256KB I/O sizes.