PDA

View Full Version : RAID 0 Stripe = Cluster Not Optimal for Gaming?


F_L_C
08-28-05, 07:42 PM
I've believed for the longest time that a 16K Stripe/ 16K Cluster would optimize transfer performance. Then I read this guide from a reputable source:

http://www.storagereview.com/guide2...perfStripe.html

There are many "rules of thumb" that are thrown around to tell people how they should choose stripe size, but unfortunately they are all, at best, oversimplified. For example, some say to match the stripe size to the cluster size of FAT file system logical volumes. The theory is that by doing this you can fit an entire cluster in one stripe. Nice theory, but there's no practical way to ensure that each stripe contains exactly one cluster. Even if you could, this optimization only makes sense if you value positioning performance over transfer performance; many people do striping specifically for transfer performance.
Unfortunately, nowhere in that entire guide do they recommend what cluster size to use for various stripe sizes. But, if using a 16K Stripe (and you value transfer performance over positioning performance), then a cluster size less then 16K should be used.

Now, for the question of what Stripe size to use. The guide purposely avoids recommending Stripe sizes because RAID 0 arrays are used for different purposes.
But they do offer this:

And if you must have a rule of thumb, I'd say this: transactional environments where you have large numbers of small reads and writes are probably better off with larger stripe sizes (but only to a point); applications where smaller numbers of larger files need to be read quickly will likely prefer smaller stripes. Obviously, if you need to balance these requirements, choose something in the middle.
I use my 2-disk RAID 0 array primarily for gaming. So this would involve smaller numbers of larger files that need to be read quickly, hence a smaller Stripe should be used. I've decided that either a 16K or 32K Stripe would be optimal for my purposes.

Back to Cluster sizes. This is what I'm not totally sure what to use. So Cluster should not equal Stripe. Then I'm left with the following choices:

1) 16K Stripe: 4K or 8K Cluster

2) 32K Stripe: 4K, 8K, or 16K Cluster

Gamers, which Stripe/Cluster combination would you choose and why?

alexgontijo
08-29-05, 04:37 PM
I used 16K / 4K for one year, and it's the fastest to load game maps, etc.. I tested 16/32/64 and 128. But 16K has a drawback to generate too much fragmentation on the HD.

Now I'm using 128/4, that is about 5-10% slower on loadings, but is more tight. The Windows loading is faster on 128 (I don't know why), but in the games generally I lost 2-3 seconds.

BTW, I'm using 2x Maxtor 160 GB, 4 partitions (40/120/100/80 GB).

Regards,
AleX

F_L_C
09-01-05, 07:10 AM
So you're saying the larger the stripe, the lower the fragmentation? I've never used anything larger than 16K, so I have no idea what fragmentation is like with larger stripes. But I guess another reason to go with a larger stripe is that benchmarks show better real-world performance:

http://www.anandtech.com/storage/showdoc.aspx?i=1491&p=24

http://www.harddiskinfo.com/Sections/Reviews/Specific.aspx?ArticleId=3873&PageId=6

According to Storage Review, small stripes give the best sequential transfer rates but in the real world, I/O operations are non-sequential. So they recommend larger sizes like 64K or 128K (for general desktop usage):

http://faq.storagereview.com/tiki-index.php?page=StripeSize

I also read somewhere that there is an optimal Stripe/Cluster ratio for RAID 0 arrays with stripe width = 2. The ratio is 4:1, so the sizes would be:

1) 32K / 8K
2) 64K / 16K
3) 128 / 32K
4) 256K / 64K

But increasing the cluster size, also means more slack or wasted disk space. I think I'm gonna try 64K / 16K and see how it goes from there.

alexgontijo
09-02-05, 03:57 PM
Nice post, this 4:1 ratio is something to be tested!

Please post your results, let us know!

AleX

myshkinbob
09-02-05, 04:57 PM
Just set up 2x 80gb SATA 8mb cache raid 0 here, after doing a lot of research on optimum stripe size. For gaming it's recommended to use 32k or 64k stripes. I spent an evening googling the issue a couple of days ago, didn't make any bookmarks though.

Personally i tested 16k, 32k, and 64k yesterday. 16k uses way too much cpu power with my nvraid, and wasn't quite as fast as 32k/64k according to ATTO disk benchmark (ATTO settings: 0.5-1024, 32mb, no overlapping).

In the end i went with 32k as it showed slightly better speed on small transfers in ATTO, and also showed better sustained transfer rate according to hdtach. Perhaps to do with the 2x 8mb cache and 32k being a sweet spot for it.

cluster size is default 4kb, i don't mind a large mft, better than masses of cluster slack on all the small files. sandra bench puts disk speed at 87MB/s.