A Comparison of Stride and Stripe-Width Values

Linux Software RAID Performance Comparisons

The Problem

The recommendation when using mke2fs is to set the "-E stride" value to be the same as the underlying chunk size, and the "-E stripe-width" value to be the stride times the number of data spindles in the RAID. This experiment sees if these values make any measurable difference when using an AES-256 encrypted RAID-5 system with an underlying RAID-5 chunk size of 128KB and a payload alignment of 512KB. The stripe-wide was set to 4 times the stride size in these experiements because they were done on a 4+1 RAID-5. The documented best value for stride should be 128KB.

The Controller

The Test System

The Test Matrix

Conclusion

Small strides (4KB and 64KB) have better performance for mixed and write-only workloads. However, all strides have similar performance for small I/O sizes across all workload types. Further, the recommended stride=128KB and stripe-width=512KB have consistent mid-range performance across all dimensions tested. Even for pure read workloads, there is no compelling reason to use something other than the recommendation.

Sequential Single Threaded Tests

A small stride does substantially better at small I/O sizes for a pure read workload. For mixed workloads, all strides are similar.



Random Single Threaded Tests

For pure read workloads, all strides are similar. When writes are introduced a clear separation occurs, especially at larger I/O sizes, where strides of 4KB and 64KB are similarly superior and strides of 256KB and 512KB degrade performance.



Sequential Multi-Threaded Tests

Performance is similar across strides, with some separation occuring at higher block sizes. However there is no trend across file system or workload types.



Random Multi-Threaded Tests

Performance is similar for read workloads, but 4KB and 64KB strides are slightly superior for writes, with very large stides degrading performance.