RAID 0 Arrays
With the price of the SSDs dropping, you probably already thought about installing two SSD units on your computer and configuring them as a RAID 0 array, which, at least in theory, increases the performance of the SSD. But what is the real-world performance gain of such configuration? Does the stripe size affect performance? If so, what is the best number to use? These some of the questions we will try to answer in this article.
RAID means Redundant Array of Independent Disks (or Inexpensive, according to some sources). In RAID 0 mode, two (or more) drives are combined into a virtual drive that is seen by the operating system as a single unit. When data is stored, the RAID controller divides information sent by the computer in blocks (also called stripes) and spread them evenly across the drives available in the array, accessing each drive at the same time, in parallel. Because of this effect, performance (at least in theory) is multiplied by the number of drives available in the array. So, in a RAID 0 array with two drives, the performance is doubled (again, at least in theory).
The only drawback is that, if one of the drives fail, all data contained in the array is lost. So, RAID 0 is recommended when performance and disk space are more important than reliability. (With RAID 1 you can add additional drives to automatically copy the contents of one drive into another; you can combine the redundancy of RAID 1 with the performance of RAID 0 in RAID 10 and RAID 0+1 arrays, but we won’t be convering these configurations in this article.)
Part of the process of creating a RAID 0 array is to choose the stripe size, which is the size of the data block that will be used. Typically, this size varies between 4 kiB and 128 kiB.
Before proceeding, we highly suggest that you read our “Anatomy of SSD Units” tutorial, which provides all the background information you need to know about SSDs, and our tutorials “Everything You Need to Know About RAID” and “Does RAID0 Really Increase Disk Performance?,” which explain the basics on RAID arrays.
In our tests, we created a RAID 0 array with two identical PNY XLR8 120 GiB SSDs, each time with a different stripe size, and tested the performance of the array. We also tested the performance with a single SSD with no RAID configuration, in order to see the performance gain achieved by using a RAID array versus a single drive.
It is also important to keep in mind that in our case the RAID was controlled by the Intel Z97 chipset from our motherboard, and therefore a “software-based solution.” Results when using a dedicated RAID card, i.e., a “hardware-based solution” will likely be different.
[nextpage title=”How We Tested”]
During our testing procedures, we used the configuration listed below. The only variable component between each benchmarking session was the SSD being tested.
- Processor: Core i7-4770K
- Motherboard: ASRock Z97 Extreme4
- Memory: 16 GB G.Skill Sniper (DDR3-1600/PC3-12800), configured at 1,600 MHz
- Boot drive: Kingston SM2280 M.2 120 GiB SSD
- Video card: Gigabyte GeForce GTX 750
- Video resolution: 1920 x 1080
- Video monitor: Phillips 236VL
- Power supply: Corsair CX500M
- Operating System: Windows 7 Home Basic 64-bit using NTFS File System
We adopted a 3% error margin in our tests, meaning performance differences of less than 3% can not be considered meaningful. Therefore, when the performance difference between two products is less than 3%, we consider them to have similar performance.
[nextpage title=”Compressible Data Test”]
As shown in the previous page, we measured the performance at each configuration using CrystalDiskMark.
First, we set CrystalDiskMark to “All 0x00 Fill mode” to evaluate the performance of the array when dealing with compressible data.
In the sequential read test, the best performance was achieved with stripe sizes from 32 kiB to 128 kiB. The RAID array was between 61% and 107% faster than a single SSD. In the sequential write test, using a 128 kiB stripe size proved to be 8% faster than when using a 32 kiB stripe size, which was the slowest configuration. Here, the performance improvement was between 73% and 87% over a single SSD.
In the random read test with 512 kiB blocks, the best performance was with a stripe size of 64 kiB (75% faster than a single drive), and the worst was with a stripe size of 4 kiB (60% faster than a single SSD). In the random write test with 512 kiB blocks, the best performance was achieved with stripe size of 16 kiB, configuration that was 9% faster than using a stripe size of 32 kiB, which was the slowest configuration. The gain over a single drive was between 72 and 88 percent.
Surprisingly, in the random read test with 4 kiB blocks, there was no performance gain of using a RAID 0 array over a stand-alone SSD. Only with 128 kiB stripe size the result was significant, with an improvement of 24 percent. In the write test with 4 kiB blocks, a single drive reached higher performance than any RAID 0 configuration, being up to 41% faster.
[nextpage title=”Incompressible Data Test”]
For this test, we set CrystalDiskMark to the default mode, which uses incompressible data.
In the sequential read test with incompressible data, the fastest performance was achieved with smaller stripe sizes, but even the slowest RAID 0 configuration more than doubled the performance achieved by a single drive. The performance with a stripe size of 4 kiB was 11% higher than using 128 kiB stripes. In the sequential write test, the performance was around the same for all stripe sizes, and about 283% higher than a single SSD.
Moving on to the random read test using 512 kiB blocks, the fastest stripe size was 8 kiB. The array provided between 74% and 88% more performance than a single SSD. In the random test with 512 kiB blocks, all stripe sizes resulted in the same performance level, which was about 324% higher than a single SSD.
In both the random read and write tests using 4 kiB blocks, there was no big advantage on using a RAID 0 array, no matter the stripe size.
In our tests, we compared the performance of a RAID 0 array with all possible stripe size configurations against the performance of a single SSD.
In sequential read and write tests, as well as in the random tests with 512 kiB blocks, using a RAID 0 array provided a considerable gain in performance compared to a single SSD, with a typical improvement around 80 percent, but reaching as much as 324 percent. Therefore, it is clear to us that instead of buying a single, large-capacity SSD, it is better to have two smaller-capacity models configured in RAID 0.
In the random test with 4 kiB blocks, however, the bandwidth has not improved with a RAID 0 array; this is probably because of latency issues on the RAID controller or on the controller chip in the SSDs we used.
Regarding to the stripe size, our tests have shown that, here, size does not really matter (at least with the testing methodology we used). In some tests, the best performance was achieved with larger stripe sizes, and in other tests smaller stripe sizes were faster. The only possible conclusion is that, if you work with large and compressible files (uncompressed video editing, for example), you may choose the 128 kiB stripe size configuration. If not, just use any intermediary value.
It is important to keep in mind, however, that the results can be different if you use other SSDs with different characteristics that the ones we used in our benchmarking.