Solved

How to understand RAID disk striping size?

Posted on 2010-09-19
9
858 Views
Last Modified: 2013-11-14
I am reading article talking about RAID disk drive striping, below are statement about the sizing:

-----------------------
During intense I/O operations, performance can be optimized by striping the drives in the array with stripes large enough so that each record potentially falls entirely within one stripe segment. This helps insure that data and I/O operations are evenly distributed across the arrayed drives, thus allowing each drive to work on separate I/O operations at the same time.

By contrast, in data-intensive applications that access large records, smaller stripe sizes can be used so that each record will span across many, or all, of the drives in an array with each drive storing only part of a record’s data. This allows long record accesses to be performed faster, since the data transfers can occur in parallel on multiple drives in the array. Applications such as digital video editing, audio/video on demand, imaging and data acquisition that employ long record accesses are examples of applications that often achieve optimum performance with smaller stripe sizes.
Unfortunately, smaller stripe sizes typically rule out multiple overlapping I/O operations since each I/O will typically involve all of the drives.
------------------------------

I am not quite understand the differences of configuring smaller striping size and larger striping size. after the reading, I get a feeling that smaller striping size is, it can be more easily to span across multiple disks, therefore, more efficient in I/O operation??

thanks,
jerry
0
Comment
Question by:JerryJay
  • 5
  • 3
9 Comments
 
LVL 47

Accepted Solution

by:
dlethe earned 167 total points
ID: 33710843
Your premise is flawed to begin with.  There are 2 metrics of performance.   IOPS and throughput.   Optimize for one, and you decrease the other.  The only measurement of performance, based on the question is throughput.

So if that was the case, then the larger the block size, the greater the performance .... not true.

The author does a poor job of differentiating the two.   They mean that "intense I/O operations" means when I/Os per second is important.  This is typically "database" or transactions per second.  "Data-intensive applications" are then throughput-intensive.

When a controller does a write, it is obligated to write the entire stripe, because it has to do so in order to write parity. (This is norm with most RAID controllers).  So if you have a stripe of 64KB, and you change just one byte, your controller writes 64KB (which translates into much more than a single 64KB write assuming RAID10,1,5,6).   If you are using NTFS and took defaults, then NTFS natively writes just 4KB at a second, so you have 16x more data written than necessary.

Conversely, if you have stripe size of 4KB, and using SQL server, then SQL server swrites 64KB at a time.   So you now have opposite problem.  Raid controllers & file systems will automatically queue up and reorder I/Os to try to overcome this, but the best thing you can do is make the application, controller, file system, and cache settings on physical drives all pretty much agree on what they will be doing.

This is a simplistic response.  Proper tuning goes well beyond this, because I/O overhead and efficiency vary between reads, writes, random & sequential.   Example, most decent controllers will maintain several I/O queues on reads, so if you have RAID1, then the disk that can give you the data first responds.  You effectively have 2x read performance of RAID1.  but on a write, both disks have to be written, so you have slightly slower performance then if it was a single drive.  If you have cache and a BBU on the controller, and write-back enabled, write performance will be faster then if you just had one disk.
0
 
LVL 55

Assisted Solution

by:andyalder
andyalder earned 333 total points
ID: 33711139
A small stripe element size is rarely useful, it makes a single large I/O quicker since it can be split across multiple disks but if there are several I/Os in the pipeline they would have to queue up since all the disks are in use for the first I/O. It's generally better to have a large stripe element size so that multiple I/Os can be performed in parallel.

Using the digital image example that the editor gives us above you can imagine cutting a photo into 10 slices and getting 10 people to stick one slice each into their album; since it takes time to apply the paste to the back this is quicker than one person pasting the whole photo into a single album. Conversely if there are 10 photos to stick it's quicker not to cut the photos up but give one each to your people to stick in their photo albums.

It's the same argument between RAID3 and RAID5, every disk is tied up in a single I/O for RAID3 whereas only one (or 4 for write) are tied up in a single RAID5 I/O, so http://bytepile.com/RAID_3_vs_RAID_5_In_HPC.php is well worth reading, just think of RAID 3 in that example as any RAID with a small stripe element size and RAID 5 being any RAID with a large stripe element size.

>I get a feeling that smaller striping size is, it can be more easily to span across multiple disks, therefore, more efficient in I/O operation??

The smaller the stripe size is the more easily a single I/O will tie up all your disks. Is that efficient?

0
 

Author Comment

by:JerryJay
ID: 33711255
as a newbie like me, you are bringing in a new topic to me. I searched the concepts about IOPS and throughput. it seems to me that IOPS are been talked more in environments like web, email, database systems that require frequent small size file read/write - more focusing on random read/write. but throughput are been discussed more in another kind of applications such as vedio recording system that need sequential read/write performance.
Please correct me if I got this wrong.

"They mean that "intense I/O operations" means when I/Os per second is important.  This is typically "database" or transactions per second.  "Data-intensive applications" are then throughput-intensive." --- this is much clear to me now, you examples are very helpful too.

thank Dlethe


0
 

Author Comment

by:JerryJay
ID: 33711330
andyalder:

thank you for your useful comment and example. "A small stripe element size is rarely useful" -- is there a measurement - how small is called small? is there a general rule/formular to calculate the right size?


thanks,
Jerry
0
Save on storage to protect fatherhood memories

You're the dad who has everything. This Father's Day, make sure your family memories are protected. My Passport Ultra has automatic backup and password protection to keep your cherished photos and videos safe. With up to 3TB, you have plenty of room to hold the adventures ahead.

 

Author Comment

by:JerryJay
ID: 33711378
oh, another one, regarding all RAID types from raid 0,1,2,3,4,5...  I only have practical experience on RAID 1 & 5. what about other RAID types?  are they being used as common as RAID 1 & 5? some technical docs only discuss them from technical points, but doesn't mention where / why use them. in real world, do people actually use them at all?
and I heard about JBOD, what about this one.
0
 
LVL 55

Expert Comment

by:andyalder
ID: 33711580
As a rule of thumb you make the stripe element size the same size as the database I/Os, for example Exchange uses 16K blocks to store data so a 16K stripe element size is used, twice the size is generally OK as well, Exchange runs fine on 32K stripe size, just end up reading 32K to get 16K off it.
0
 

Author Comment

by:JerryJay
ID: 33714526
thanks andyalder and dlethe for your detailed replies

I am not quite understand the following points in your replies:

"Optimize for one, and you decrease the other" why is that? can you please help to explain this one a bit more? see my below Exchange example, if I configure the block and stripe size to perfectly fit application needs , will I receive the best for both IOPS & throughput?

"but the best thing you can do is make the application, controller, file system, and cache settings on physical drives all pretty much agree on what they will be doing"  - dlethe

Let me use a specific Exchange server as an example, Andyalder says that Exchange server uses 16k blocks to store data, NTFS default block is 4k. To achieve the best performance, from design point, should I format my NTFS (exchange data disk only) without using default 4k block size, but set to be 16k, and set cluster stripe size to be 16k or perhaps a little bit bigger than this as andyalder previously mentioned. just for making the application, controller, file system to agree on what they will be doing?? do I get this right?

many thanks,
jerry
0
 
LVL 55

Assisted Solution

by:andyalder
andyalder earned 333 total points
ID: 33715812
My bad, exchange uses 32K blocks, not 16K, principle is the same though. You might as well set the cluster size to 32k as well as the raid stripe size assuming it was exchange, but it's not so important since Windows doesn't ask for just one cluster, wait for it and then ask for the next, it asks for all of them at the same time. Cluster size is more to do with the mniimum amount of space used to store a file and how many entries have to be in the file allocation table (the index for what's where on the disk).
0
 

Author Closing Comment

by:JerryJay
ID: 33759841
Thank you all, very helpful!!!
0

Featured Post

Do You Know the 4 Main Threat Actor Types?

Do you know the main threat actor types? Most attackers fall into one of four categories, each with their own favored tactics, techniques, and procedures.

Join & Write a Comment

As hardware bugs go, this is a strange one! I upgraded a laptop in December 2011 with a 512GB Crucial m4 2.5-inch/9.5mm SATA Solid State Drive (SSD), Crucial part number CT512M4SSD2: http://www.crucial.com/store/partspecs.aspx?IMODULE=CT512M4SSD2 …
Solid State (Hard) Drives aka SSD began to evolve in the computer industry recently. As the name suggests, there are no moving parts in the drives. The drive uses microchip memory store the data, as opposed to the spinning disks of a traditional HDD…
This video Micro Tutorial explains how to clone a hard drive using a commercial software product for Windows systems called Casper from Future Systems Solutions (FSS). Cloning makes an exact, complete copy of one hard disk drive (HDD) onto another d…
This tutorial will walk an individual through the process of installing the necessary services and then configuring a Windows Server 2012 system as an iSCSI target. To install the necessary roles, go to Server Manager, and select Add Roles and Featu…

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now