Results: A Second Look At RAID 5
Now that we've illustrated the read-ahead tendencies of Intel's RST, it's easier to put RAID 5's sequential scaling in context. The journey begins at 1.5 GB/s, which is right where we'd expect given the chipset's DMI link. But as the outstanding command count increases, read caching kicks into gear, pushing each array up to 3 GB/s. Depending on how long each queue depth is measured, it's probable that a longer benchmark would average down the caching effect somewhat.
It's also interesting that the three- and four-drive arrays start caching and peak earlier, while the five- and six-drive setups hit their ceilings later.
Write performance is traded off for RAID 5's data protection. Nevertheless, Intel's built-in SATA controller can achieve decent results, even if they're not always consistent.
The four- and six-drive setups deliver the strange results in this benchmark. Notice how much faster three SSDs are than four. Stranger still, the six-drive array sneaks up on five SSDs, though it falls short at low and high command counts.
This is what the random performance in a RAID 5 configuration looks like scaling from an OIO count of 2 through 128.
Nothing like the first two charts, right? With three, four, five, and six drives in RAID 5, every run looks the same. Adding more drives doesn't affect read IOPS in this setup. We could probably experiment with synthetic workloads to amplify any small difference between the arrays, but that's a significant challenge. Since we aren't seeing any scaling, it's possible that we're simply dealing with a bottleneck not necessarily related to throughput or host performance.
The same situation surfaces with 4 KB writes. From a total outstanding I/O count of 2 to 128, performance starts far lower than a single drive and ends up there, too. Ten-thousand IOPS is approximately one-third of an SSD DC S3500's specification at a queue depth of one. Random writes will always present a challenge in RAID 5, though. It's just hard to write small chunks of data to random addresses while managing parity data.