Calculate IOPS in a Disk or Storage Array for beginners


IOPS (Input/Output Operations Per Second, pronounced i-ops) is a common performance measurement used to benchmark computer storage devices like hard disk drives (HDD), solid state drives (SSD), and storage area networks (SAN). As with any benchmark, IOPS numbers published by storage device manufacturers do not guarantee real-world application performance.
 
IOPS can be measured with applications such as Iometer (originally developed by Intel), as well as IOzone and FIO and is primarily used with servers to find the best storage configuration.
 
The specific number of IOPS possible in any system configuration will vary greatly depending upon the variables the tester enters into the program, including the balance of read and write operations, the mix of sequential and random access patterns, the number of worker threads and queue depth, as well as the data block sizes. There are other factors which can also affect the IOPS results including the system setup, storage drivers, OS background operations, etc. Also, when testing SSDs in particular, there are preconditioning considerations that must be taken into account.

Calculation
It is very simple. Let's suppose you have 15000 rpm disk with average seek time 2ms. 150000 rotations per minute means disk will rotate

15000 / 60s = 250 times per second

and that means that one rotation will take

1s / 250 = 4 ms

In average case it will take half of that to rotate disk platter to the right place. Now add that to the seek time and you'll get the total time needed to serve one I/O request. Divide 1 sec (1000 ms) with 4ms + 2ms and you'll get

1000 / 6 = 167 IOPS

An outcome with more precision is:

  • Model: Western Digital VelociRaptor 2.5″ SATA hard drive
  • Rotational speed: 10,000 RPM
  • Average latency: 3 ms (0.003 seconds)
  • Average seek time: 4.2 (r)/4.7 (w) = 4.45 ms (0.0045 seconds)
  • Calculated IOPS for this disk: 1/(0.003 + 0.0045) = about 133 IOPS

In a RAID is important see penalties in the following table:

image

Now to calculate IOPS in a RAID, you should use this equation:
(Total Workload IOPS * Percentage of workload that is read operations) + (Total Workload IOPS * Percentage of workload that is read operations * RAID IO Penalty).

As an example, let’s assume the following:

  • Total IOPS need: 250 IOPS
  • Read workload: 50%
  • Write workload: 50%
  • RAID level: 6 (IO penalty of 6)

Result: You would need an array that could support 875 IOPS to support a 250 IOPS RAID 6-based workload that is 50% writes.

This could be an unpleasant surprise for some organizations, as it indicates that the number of disks might be more important than the size (i.e., you’d need twelve 7,200 RPM, seven 10K RPM, or five 15K RPM disks to support this IOPS need).

Source:
http://www.iometer.org/
http://partners.netapp.com/go/techontap/avanade.html
http://blogs.techrepublic.com.com/datacenter/?p=2182
http://www.yellow-bricks.com/2009/12/23/iops/

Online Tools:
http://www.wmarow.com/storage/strcalc.html
http://forum.datacore.com/attachments/2112009223731_RAID_spindle_calculator.xls

Comentarios