Multithreaded Reading and Writing
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.
- IOMeter: Multithreaded Reading, cycle 1
- IOMeter: Multithreaded Reading, cycle 2
- IOMeter: Multithreaded Writing, cycle 1
- IOMeter: Multithreaded Writing, cycle 2
As we have already found out, reading is performed in the same way in both test cycles, so we publish only one set of arrays here.
The controller is unfortunately no better than its predecessor at one data thread. It only accelerates to its top speed at queue depths longer than 1 request as you can easily see in the tables. Thus, we see a rather funny picture: the single-level arrays all deliver the same speed of slightly higher than 400MBps at the shortest queue depth (in practical terms, it is the same as simply reading a single file in 64KB blocks). The 2-level RAID10 and RAID50 are somewhat slower, so the RAID50 finds itself losing to the RAID6 despite the identical results in the sequential read test.
There are notable changes when there are more data threads to be processed. Every array slows down at two threads, but in a varying degree. The RAID10 and RAID50 suffer the most as their speed is reduced by half. The RAID10 behaves in a curious manner. It speeds up at three data threads (perhaps it is reading one thread from an individual set of disks in the mirror pairs?) but slows down again at four threads. The RAID50 behaves like the other arrays: it is slowly increasing its speed as the number of data threads is increased. It looks like the increased number of threads is for these arrays like a replacement of a long request queue. You can see it clearly with the RAID0: this array reads four threads faster than only one thread at a queue depth of 1 request.
Writing gives us one more reason to compare the two test cycles. In the first cycle the speeds are very low even at one thread. Every array is inferior to the single HDD. The second-cycle arrays are much better, however. Each of them is about as fast as 400MBps then. The RAID0 stands out with its highest speed as well as with being the only array to accelerate as the queue depth grows longer. Although the speeds are far from what we can expect theoretically, this controller is better than its predecessor which was much worse in this test.
The first-cycle arrays are indifferent to the number of data threads while the second-cycle arrays all speed up at two threads. The RAID0 is especially good here.
The same RAID0 reacted eagerly to the addition of a third data thread, speeding up a little more. There is nothing particularly interesting overall, though. The arrays just retain their speeds.