Multithreaded Read & Write Patterns
The multithreaded tests simulate a situation when there are one to four clients accessing the virtual disk at the same time – the clients’ address zones do not overlap. We will discuss diagrams for a request queue of 1 as the most illustrative ones. When the queue is 2 or more requests long, the speed doesn’t depend much on the number of applications. This is also the most real-life situation. What is especially interesting, our experience suggests that not all controllers can deliver maximum speed at the minimum queue depth.
The Areca and HighPoint are better than the others when reading one thread from RAID0. Unlike the others, they have minimum losses from the short queue depth. The Adaptec and LSI deliver only half of their maximum speed whereas the Promise and 3ware, only one fourth of their best.
The controllers all slow down when reading two threads and then keep the same speed when reading three and four threads. It is the Areca that wins here, delivering maximum performance under any load. The Promise and 3ware are too slow.
When the controllers are reading one thread from RAID10, they have the same standings as with RAID0, except that the Areca enjoys a bigger advantage over the other models. It is better at reading alternately from the mirror pairs. This controller is also better than the others at reading multiple threads. Take note how much faster it is at reading two threads, indicating that the threads are effectively divided between the different disks in mirror pairs.
Among the other controllers, it is the Adaptec (at two threads) and HighPoint (at three and four threads) that have good results.
Reading from RAID5 and RAID6 is done in the same way. The Areca and HighPoint cope better with one thread. The HighPoint is somewhat better than the others at reading multiple threads. The controllers are all rather good here, excepting the Promise and 3ware which have lower speeds.
Writing to RAID0 produces a funny picture. On one hand, multithreaded writing is simpler as it is facilitated by deferred writing mechanisms. On the other hand, writing even one thread at a minimum request queue depth is not a simple job for some controllers. The Areca and HighPoint are the only models to deliver really high speeds there. And the Areca is the only controller to keep the same (or even slightly higher) speed when writing multiple threads of data. There are now three controllers that disappoint us with their low results: the Promise (the reason for its low writing performance is obvious) is joined by the Adaptec and LSI.
The Areca is good when writing to RAID10, too. The Adaptec improves with this array type as well. It is competing with the Areca when writing multiple threads. The LSI and Promise are on the losing side, again.
The controllers behave in the same way with both RAID5 and RAID6 arrays. When writing one thread, the Areca and HighPoint are much better than the others but the Areca remains a single leader at multiple threads. The 2GB version of the Areca is less than half as fast as the 512MB version of the same controller. It looks like this controller is not designed for such a large amount of onboard memory.
Lacking deferred writing, the Promise is ridiculously slower under such load.