7

There are various "references" on the Internet that delve into some discussion about what factors to consider when selecting a particular RAID stripe size (4KB to 128KB or more) for an array of disks, but none of these come across as very authoritative nor consistent with each other really.

For example:

John's Tech Bits
Stripe Width and Size
RAID Optimization Guide

In particular, it would seem that several factors come into play relative to the particulars of file system type (FAT, NTFS, etc.), file system cluster sizes, caching strategy, disk driver command dispatch strategy, whether or not multiple commands can be queued (tagged queuing) to the drives in question, etc.

What I am looking for is an authoritative, data driven and referenced dissertation on exactly what all the factors for consideration really are and ultimately how to take an analytical approach to selecting the optimal stripe size for a given application without going through the brute force exercise of trying all the combinations of these factors to see what results in the best performance.

1 Answer 1

4

Unfortunately you might find such a dissertation difficult to find, and even if you did stumble across one while browsing relevant academic paper collections, sod's law says that the one circumstance not covered by the paper is the one closest to your expected I/O patterns.

It is actually a complex area - not complicated, as each part of the problem isn't rocket science, but complex because the different factors can interact with each other in fairly subtle ways - this is why you will find significant inconsistencies in some recommendations (the result of the tests that the recommendations are based upon depend greatly on the exact nature of the tests and the I/O pattern they are trying to simulate). Therefore finding a paper that covers your exact needs would be quite a stroke of luck unless your needs are very basic (in which case more generic recommendations like "the defaults will probably be fine" will actually suffice). Any paper that tried to cover everything (or even just most things) would take so long to produce as to be irrelevant long before it were completed.

The only true way to be sure is to give a few combinations a try. Try replicate a typical I/O load for your application on a couple of configurations and see how it benchmarks. I hope this doesn't come across as unhelpful, but I think it really is the only way to be sure. Having said that: if you provide a few more specific details of the environment you are considering RAID configuration for, someone might be able to point you to a paper or other resource that is more geared toward that sort of environment+kit+application+load combination than the sources you have already found.

As a nearly-on-topic example I did a few RAID tests on my netbook this last week (after deciding the internal SSD was writing far far far too slowly) and found some results that were far from what I expected when I started (though part of this is due to me not realising exactly how bad the internal SSD was by some metrics!). I'll not bore you with the exact details here as the I/O patterns I cared about in this circumstance will be entire worlds away from what it sounds like you are considering, but I'll reiterate that I think there really is no substitute for a few benchmarking runs based upon your knowledge of the system you are intending to build if you are wanting specific indicators/recommendations.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .