Greetings to all,
I see almost all good SMB and Enterprise customers being serious about their Storage Sizing,This is good sign because in case of an inadequate or wrong knowledge of sizing of the storage anyone can easily mess-up the entire solution design and the committed delivery. IT Infrastructure Design road map cannot afford to ignore the Storage correct sizing.
1st and foremost important fundamentals to be understood in storage is IOPS
Q.1 what is IOPS ?
IOPS stands for Input/output Operations per Second, in simple words physical read/write operations a device can perform in one second. It is common measurement factor of any storage system performance but there are many other factors which are also considered while calculating storage performance I.e. Storage Interface, controller, Cache etc…
Q.2 How to calculate the maximum IOPS of any Disk or DISK Array?
Formula is fairly simple
IOPS = 1000/ [average latency (in sec) + average read/write seek time (in sec)]
So let's calculate a Single Drive's Maximum IOPS with certain assumption, Assume that we have a Seagate ST4000DM000 4TB 15 K RPM hard disk. It is rated as follows:
Average latency (avgLatency): 2.95 ms
Average seek time (avgSeek): 3.56 ms
To calculate this disk's IOPS, use the following equation: IOPS = 1000/ ( avgLatency + avgSeek )
For our example disk, the equation would be (note the values of avgLatency and avgSeek are measured in seconds):
IOPS = 1000/ (2.95 + 3.56)
IOPS = 153
Note :You can use windows Perfmon to find out the disk read /write latency or else you can use HDD manufacturer benchmark reports ,datasheet etc..
Q. 3.What is the total IOPS in case of RAID Disk, will it increase the IOPS?
Yes! Cluster of DISK increase IOPS but not in all cases .this is not true in case of simple Mirroring disk or striping disk Array because just mirroring the maximum IOPS will not increase the Total IOPS,it will be calculated based on single disk IOPS .But It is also true that the more drives you have the more IOPS you get and this is true in case of specific RAID Array.
HDD RPM with Approx. estimated Max IOPS
Note: keep in mind that IOPS measurements are also largely impacted by the block size, Mostly storage vendors calculate IOPS based on 4k block size which is totally irrelevant in case of SQL server or an application which read data in 64 K or higher (refer below table)
IOPS (IO/s) and throughput (MB/s) are two common performance measurements for storage devices, such disk drives and RAID sets. Most offer IOPS measurement is used for random, small block (4-8 KB) read and/or write operations, typical for OLTP applications. MB/s is used for large block (>= 64 KB) random or sequential operations, such as file transfer and streaming.
One Statistics of Approx. IOPS and throughput-numbers for different disk drive types:
Note: Maximum IOPS are impacted by Block size
So here is some basic calculation for RAID IOPS
Let's dig the subject and understand it though one more better illustration
The Expected IOPS
Given the disk configuration above, we can calculate what we expect to get for IOPS. Looking at the "assumptions" in the above table, we assume the disks comprising E and F are rated at 175 IOPS per disk, and the disks comprising G are rated at 125 IOPS. So, for each array, the math looks like this.
If we sample Disk Reads/sec and Disk Writes/sec, for a period of time, we can calculate average IOPS as follows. Remember that we'll also be figuring Maximum into our review.
I recommend sampling these counters for each instance, for a 24 hour period, with at least 1 minute interval. Of course, the more samples you collect, the more accurate the calculations will be. However, I don't think it's necessary to sample more than once every 15 seconds.
This is the average IOPS you are currently getting out of your configuration. Using the formulas in the table above, the math looks like this.
NOTE: Maximum is calculated using top IO sampled for each type during the sampling period. So this is the theoretical maximum IOPS for the array.
Thank You | Ashok