## IOPS

When it comes to measuring a storage system’s overall performance, Input/Output Operations Per Second (IOPS) is still the most common metric in use.  In this article, I provide introductory information that goes into calculations that will help you figure out what your system can do. I will also share how we calculate IOPS in our data centre.

. Here are three notes to keep in mind when reading calculating IOPS:

• . Vendors often measure IOPS under only the best conditions, so it’s up to you to verify the information and make sure the solution meets the needs of your environment.
• IOPS calculations vary wildly based on the kind of workload being handled. In general, there are three performance categories related to IOPS: random performance, sequential performance, and a combination of the two, which is measured when you assess random and sequential performance at the same time.
• The information presented here is intended to be very general and focuses primarily on random workloads.

IOPS calculations:

Every disk in your storage system has a maximum theoretical IOPS value that is based on a formula. Disk performance — and IOPS — is based on three key factors:

• Rotational speed (aka spindle speed). Measured in revolutions per minute (RPM), most disks you’ll consider for enterprise storage rotate at speeds of 7,200, 10,000 or 15,000 RPM with the latter two being the most common. A higher rotational speed is associated with a higher performing disk. This value is not used directly in calculations, but it is highly important. The other three values depend heavily on the rotational speed.
• Average latency. The time it takes for the sector of the disk being accessed to rotate into position under a read/write head.
• Average seek time. The time (in ms) it takes for the hard drive’s read/write head to position itself over the track being read or written. There are both read and write seek times; take the average of the two values.

To calculate the IOPS range, use this formula: Average IOPS: Divide 1 by the sum of the average latency in ms and the average seek time in ms (1 / (average latency in ms + average seek time in ms).

Real Life Example:

We needed a new storage system for one of our clients. We have purchased this unit hp X1600g2 :

http://h10010.www1.hp.com/wwpc/us/en/sm/WF06b/12169-3798502-3954626-3954626-3954626-5031436-4350587-4350588.html?dnr=1

Originally the storage unit is shipped with p212 raid controller card but

We upgraded this unit with a new RAID controller p812 card which is capable of 6 GB/s data transfer speed. We have created a two RAID 5 array of:
6 X 600Gb – 15,000 rpm disk

6 X 3 TB – 7200 rpm SATA drives

In order to determine the I/O capability of the storage unit. We ran two sets of test in two different operating systems. First test was performed on windows storage server 2008 with the latest drivers and fully patched system. We shared both of the drives using NFS and mount the share from ubuntu server.

Here is the script we used to measure IOPS:

root@ubuntu:/nfs-share# dd if=/proc/kcore of=test.img bs=100M count=3

3+0 records in

3+0 records out

314572800 bytes (315 MB) copied, 27.4654 s, 11.5 MB/s

root@ubuntu:/nfs-share# time md5sum test.img

7825a21bd3d0920121bec4576c991812  test.img

real    0m27.027s

user    0m1.236s

sys     0m0.352s

root@ubuntu:/nfs-share# time cp test.img test1.img

real    0m0.159s

user    0m0.048s

sys     0m0.100s

root@ubuntu:/nfs-share# time bzip2 test.img

real    0m6.495s

user    0m6.344s

sys     0m0.108s

As you can see from above results. It took 27.4654 seconds to copied files at the speed of 11.5 MB/S. We were not too happy with the results. So we decided to run another test but this time we choose CENTOS as the host operating and the results are as follow:

root@:/nas4disk6t-sas2# dd if=/proc/kcore of=test.img bs=100M count=3

3+0 records in

3+0 records out

314572800 bytes (315 MB) copied, 3.12649 s, 101 MB/s

root@:/nas4disk6t-sas2# time md5sum test.img

8b61b5f56cd402e90e5f953a4597fd0a  test.img

real    0m2.847s

user    0m0.000s

sys     0m0.000s

root@:/nas4disk6t-sas2# time cp test.img test1.img

real    0m3.310s

user    0m0.000s

sys     0m0.000s

root:/nas4disk6t-sas2# time bzip2 test.img

real    0m5.012s

user    0m0.000s

sys     0m0.000s

root@:/nas4disk6t-sas2#

As you can see from above results that we are getting a lot better IOPS in CENTOS than we did in windows. It took 3.12649 to transfer file at the speed of 100 MBS.

## Summary

In order to understand your IOPS needs, you need to know a whole lot, including specific disk technicalities, your workload breakdown as a function of read vs. write, and the RAID level you intend to use. Once you implement your solution, you can use tools that are tailor-, such as Iometer, or script we made to IOPS analysis specific.