It has been a long while since last time I updated the blog. However, as I am now in the process of upgrading my work computer (actually building a new one), a few interesting points have appeared, where this post is about the first one.
I decided to go for to Samsung f1 1TB disks in a raid 0 setup. The Asus P5E3 motherboard uses the Intel ICH9R controller. After booting up, and entering the ICH9R configuration utility, I had to fill in the stripe size – it defaultet to 128kB. This started a long and interesting web search after what is the optimal stripe size. Interesting enough, different sites, including anandtech and Toms hardware had completely different advices.
Raid 0 means that data is divided among the two disk, and the stripe size in a raid 0 configuration is the size smallest allocation unit on each disks. After selecting the stripe size in the ICH9R controller it is impossible to change without destroying all the data on the disk. So If one decides to go for 128kB, the first 128 kB of the total 2GB disk is situated on disk A, and the next 128kB on disk B, etc. It has no connection with the filesystem allocation size (cluster size), and the stripe size is invisible to the operating system.
There are basically three different factors that determines the optimum stripe size.
The first, and probably least important, is that the windows swap file always uses 4kB cluster allocation units. Given that this file is very much in use, you will be able to almost double the swap file write and read speed as you can execute two 4kB writes at different adresses at the same time (random access) – if the stripe size is 4 kB.
The second factor is that reading and writing sequentially large data files (for example copying, downloading, video editing, …) benefits from a large stripe size. Anandtech had examples of up to 1024 kB.
The third point is tha random access of small chunks of data benefits from less IO access time – that is how fast i takes from a request for a read/write is started to it actual starts. The more disks you have in a raid 0 setup, the slightly larger will the access time be.
In actual life, your choice of stripe size will depend on what type of user you are.
So, in the end, adriansrojakpot recommended 4kB or 8kB, Anandtech recommended “as large as possible”, and Toms Hardware, having the most throughout review, recommended 64 kB (but had a big flaw late in that article about large stripe size vs. file system cluster size).
My solution? It turned out that the ICH9R controller does not support more than 128kB, and I decided to go for that. However, the ICH9R support “Intel Matrix Storage” that allows for dividing up the disks in two raid 0 solutions, so I went for 1843 GB with stripe size 128 kB, and then a small rest of 20GB with stripe size 4kB. After installing Vista I moved the swap file to that 20 GB partition, so that I could get the best of two worlds!
In the end, the solution gave a top score 5.9 in windows experience index, and this image shows how it looks like in the image storage console view.