Sizing Disks for I/O Capacity and estimatate real performance.

Sizing Disk for I/O Capacity Author: Bruce Spencer. (orig. source: ) Date: April 12, 2002 Updated April 2006 to reflect current disk capabilities Storage Area Network, is a group of disk drives that can be shared by multiple servers. SAN's are often sold as a black box that you simply plug your servers into for storage. However, my experience is that this can lead to I/O bottlenecks. Under the covers, a SAN is still a disk drive, and you have to provide sufficient number of physical disks to handle the I/O load. Here's a simple methodology (taught by Dan Braden, IBM Advanced Technical Support) to estimate the minimum number of disk drives to support a given I/O load. The methodology is based on current disk technology which supports the following I/O loads. Note these capabilities are common to all disk drives, regardless of disk capacity.


IOPS (I/O's per Second,
or iostat "tps")

Data Transfer Rate

Minimum Number of Disk Drives to Support Workload

Random I/O (10k RPM) 125 0.5 n = (%R + f (%W))(tps)/125
Random I/O (15k RPM) 150 0.5+ n = (%R + f (%W))(tps)/150
Sequential I/O 2000 50 n = (MB/sec)/50

%R = the percentage of disk I/O's that are reads.
%W= the percentage of disk I/O's that are writes.
f = 1 for ordinary disks, 2 for mirrored disks, 4 for Raid 5 disks.
Assumes data is distributed evenly across all disk drives.

Using the above formula, here's the minimum number of disks required to support a random I/O workload, at 1000 IOPS,  80% read, 20% write on 10K RPM disk drives.

Ordinary disks:  (0.8 + 1*0.2)(1000 IOPS)/(125 IOPS/disk)  = 8
Mirrored disks:  (0.8 + 2*0.2)(1000 IOPS)/(125 IOPS/disk)  = 10
Raid 5 disks:      (0.8 + 4*0.2)(1000 IOPS)/(125 IOPS/disk) =  13

Note that Raid 5 requires more disks than mirroring to achieve the same I/O rate in this example!

Comment from Key Aavoja: I made a copy of this document because it's useful and in future it may not be available at original URL. Information in this article is very useful to find out the indication of real performance of different storages. Salesmen are always telling the Sequential read/write promises to you, but in a real world I do not believe that there's many applications which acts this way. Sequential read/write is more like video recording/playback. Talking about small files and databases we should focus more on random read/write performance. They always promise that some X, Y or Z high tech algorithm makes their storage faster than others, but it means that storage should know very well your application needs and the I/O chracteristics. That's why Oracle recommends to use raw-partition and Oracle knows the best, how to use the disk/storage resource (they know their needs better than any FileSystem or storage developer). More spindles and you have better I/O !