Lot of people do not focus on the importance of IOPS calculation when sizing their storage . Understanding of IOPS calculation along with RAID penalty and Workload Characterization can help them size their storage for optimal performance. Of course there are various other parameters like Cache , I/O request size , Protocol of access(FC/iSCSI),Type of I/O (Sequential/Random) etc.. that has to be considered in a storage design but will restrict myself to the importance IOPS,RAID penalty and workload characterization.
IOPS- Input/Output Operations per second :
Any read/write operation that is performed on a disk is considered an IO.Number of Read/Write that you can perform per second is called IOPS.
There are three types of I/O as listed below
- Read IOPS – Total number of Read operations performed per second
- Write IOPS – Total number of Write operations performed per second
- Total IOPS – Total number of Read/Write operations performed per second ( Total IOPS = Read IOPS+Write IOPS)
Some industry standard numbers on IOPS

RAID Penalty:
Any read operations that are performed on disks does not incur any penalty as all disks can be used for Read operations whereas it is not the case with Write operations. Based on RAID configuration , penalty on write operations performed varies. For example ,
In a RAID 1 scenario when a write has to be performed to disks, data has to be written twice (once each on both disks) and hence the raid penalty on Write operation on RAID 1 would be 2.
In a RAID 5 scenario when a write has to be performed to disks, Raid penalty for write operation would be 4 ( Read existing data, Read parity,Write new data,Write new parity).
Work Load Characterization :
Work Load characterization is basically understanding the percentage of Reads and Writes that would make the total IOPS of your application. For example , in a VDI environment the total IOPS could be 90% write and 10% Read. Understanding Workload characterization is going to be critical as this would help us choose the optimal RAID for the environment. A write intensive application is a good candidate for RAID 10 whereas Read intensive application can be hosted on a RAID 5 .
IOPS Calculation and how workload characterization is critical to decide RAID type :
There are two possible scenarios when it comes to IOPS calculation. One of the scenario is in which you have certain number of disks and you wish to know how much IOPS would these disks provide ? Second scenario is when you want to know how much disks is required to achieve certain IOPS ?
Calculating IOPS from disks available:
Let us consider a server/storage with 8 450GB 15,000 RPM drives. We will consider two scenarios of Workload 80%Write20%Read and another scenario with 20%Write80% Read. Also we will calculate IOPS that cab be achieved in RAID5 and RAID 10 Scenario.
Total Raw IOPS = Disk Speed IOPS * Number of disks
Functional IOPS =(((Total Raw IOPS×Write %))/(RAID Penalty))+(Total Raw IOPS×Read %)
In our example ,
Total Raw IOPS = 175*8 = 1400 IOPS ( Since 15K RPM disk can give 175 IOPS)
When on RAID-5,
Scenario 1(80%Write20%Read) Functional IOPS = (((1400*0.8))/(4))+(1400*0.2) = 560 IOPS
Scenario 2(20%Write80%Read) Functional IOPS = (((1400*0.2))/(4))+(1400*0.8) = 1190 IOPS
When on RAID-1,
Scenario 1(80%Write20%Read) Functional IOPS = (((1400*0.8))/(2))+(1400*0.2) = 840 IOPS
Scenario 2(20%Write80%Read) Functional IOPS = (((1400*0.2))/(2))+(1400*0.8) = 1260 IOPS
Calculating number of Disks required to achieve certain IOPS:
Consider a scenario where you will have to decide on RAID and number of disks required to achieve 2000 IOPS with a workload characterization of 80%Write20%Read and another scenario with 20%Write80% Read.
Total number of Disks required = ((Total Read IOPS + (Total Write IOPS*RAID Penalty))/Disk Speed IOPS)
Total IOPS = 2000
Note : 80% 0f 2000 IOPS = 1600 IOPS & 20% of 2000 IOPS = 400 IOPS
When on RAID-5,
Scenario 1(80%Write20%Read) - Total Number of disks required = ((400+(1600*4))/175) = 39 Disks approximately
Scenario 2(20%Write80%Read) - Total Number of disks required = ((1600+(400*4))/175) = 18 Disks approximately
When on RAID-1,
Scenario 1(80%Write20%Read) - Total Number of disks required = ((400+(1600*2))/175) = 21 Disks approximately
Scenario 2(20%Write80%Read) - Total Number of disks required = ((1600+(400*2))/175) = 14 Disks approximately
As we see from above examples , There are lot many parameters to consider when sizing storage other than disk size. Understanding of IOPS , RAID penalty and workload characterization is very critical . When the work load is write intensive it is better to opt for RAID 10 whereas in a Read intensive workload it is better to opt for RAID-5 where we would get required performance as well as space.
Like this:
Be the first to like this post.
Great Post on RAID and its IOPS. Can you also share some referrences related to the Functional IOPS formula. Also we need to consider the penalty/IOPS incase of Disk failures under Different RAID Groups.
Good post, the over-all msg is. if you calculate the IOPS way..you will end up losing the disk space. At any cost you will not be able to use the left over disk and if you work towards the disk space optimization, then you will end up compromising the IOPS. so this topic has 2 different direction.
Now a days, the leading storage vendors have come-up new disks (SSD) & tools like FAST (EMC) to reduce the gap between IOPS & Storage space wastage..but this comes with extra/premium cost. Also you cant leave this decision to the storage controller. All you need to do is use couple SSD’s in your storage pool to improve the IOPS in 80/20 rule…or go with application recommendation….
Good Job Sudrsn…Happy Blogging
It is really very helpfull for me . So Many Thanks and Keep Blogging.
i guess the right formula for Scenario 1 RAID 5 (80%Write20%Read) Functional IOPS = (1400*0.8*4)+(1400*0.2) = 4760 IOPS
sorry guys but the formulas to calculate functional IOPS from disks available is totally incorrect :
fixed parameters :
read 80%
wrtite 20%
15k rpm spindle = 175 IOPS
RAID5
if 875 is the # IOPS I need for my application (functional IOPS) in this 80% read 20% write scenario
Then I apply the following formula : (875*80%)+(875*(20%*4)) = 1400 raw IOPS = the amount of IOPS that 875 functional IOPS will generate at backend level.
Then I want to know how much spindle I need in this scenario :
1400/175 = 8 HDD 15k
So let’s assume few month later I’ve forget how much IOPS this configuration can provide to my applications, I’ll use this formula :
RAW IOPS = 8*175 = 1400
x= functional IOPS
based on formula above, here is the result
(x*80%)+(x*(20%*4)) = 1400
x*(80%+(20%*4))=1400
= 1400/(0.8+(0.2*4)) = 875 IOPS
Hi Fuur – Have you had an oppurtunity to go through the Example specified along with the Formulat ? 80% Should be applied as 0.8 and not as 80.
Taking the same Example , Please find my Calculation based on the formula Specified :
Formula ( Calculating Possible IOPS from No. of Drives Available )
Total Raw IOPS = Disk Speed IOPS * Number of disks
Functional IOPS =(((Total Raw IOPS×Write %))/(RAID Penalty))+(Total Raw IOPS×Read %)
READ : WRITE = 80%:20% | RAID 5 Disk Penalty = 4
No. of Drives = 8
Per Disk IOPS of 15K = 175
Total RAW IOPS = 175*8 = 1400 IOPS
Functional IOPS = (((1400*0.2))/4))+(1400*0.8) = 1190 IOPS
Formula ( Calculating No. of Drives Required from Required IOPS Data )
Total number of Disks required = ((Total Read IOPS + (Total Write IOPS*RAID Penalty))/Disk Speed IOPS)
Total Required IOPS = 1200
READ : WRITE = 80%:20% which translates to 960 READ IOPS and 240 WRITE IOPS
RAID 5 Disk Penalty = 4
Per Disk IOPS of 15K = 175
Total number of Disks required = ((960+(240*4))/175) = 11 Drives
Thanks for posting this. It’s a great article and it helped clear up some misconceptions for me. Good job.