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:

Like Loading...

*Related*

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

SudHarsar- your formula is wrong because it looks at the read/write ratio from the point of view of the disks (Raw IOPS), but in reality a read/write ratio is normally the R/W ratio of the IOPS generated by a workload (functional IOPS). Fuuur is correct.

The error is easily proved from your calculations in the post above:

You say:

Functional IOPS = Write IOPS + Read IOPS

= (((1400*0.2))/4))+(1400*0.8) = 1190 IOPS

= 70 + 1120

So, with your forumula, Write Functional IOPS = 70 out of a total of 1190 = 6%, not the 20% required.

We don’t want 20% of the RAW IOPS to be write, we need 20% of the FUNCTIONAL IOPS to be writes.

This took me a while to figure out, but you are definitely incorrect with the formula you use (sorry!).

Thanks for posting this. It’s a great article and it helped clear up some misconceptions for me. Good job.

Wouldn’t RAID 0 penalty be 1, not 0?

Following your logic from above for RAID 1 and RAID 5. With RAID 0 data needs to be written once (one time), hence penalty of 1.

It does not contradict any of your other findings, and actually works nicely in the “Functional IOPS” formula.

“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.”

So for RAID-0, penalty would be … 1

Btw — I am aware that there are other web sites that say that RAID 0 penalty is zero, but that does not mean that it is correct.

Do an experiment, for RAID-0 plug in “0” for penalty in the formula and see what you get, and then try it with “1”:

Functional IOPS =(((Total Raw IOPS×Write %))/(RAID Penalty))+(Total Raw IOPS×Read %)

AK

A very good article, presents in a simple way a pretty complex concept.

Could you share the source of the Functional IOPS formula. I have see it at some other web sites, but in my opinion it does not always return the correct result.

E.g. Following the example above for RAID-5 with 8 450GB 15,000 RPM drives.

Let’s assume it is RAID 5 (7+1) and do a simple formula test,

Let’s call it Scenario 3 (100% Reads, 0% Writes):

Scenario 3(0%Write100%Read) Functional IOPS = (((1400*0))/(4))+(1400*1) = 0 + 1400 = 1400 IOPS

however Total Raw IOPS = 175*8 = 1400 IOPS (since 15K RPM disk can give 175 IOPS)

So, it would mean that RAID-5 provides the same performance as 8 drives (in RAID-0 configuration).

And we know RAID-5 has a parity drive, so actually, for 100% Read workloads the theoretical result is:

Functional IOPS = (drive count – 1) * (drive IOPS) = (8 – 1) * 175 = 7 * 175 = 1225 IOPS (which is not 1400 IOPS)

The formula is also a little bit off for RAID-6 calculations. However, it always works for RAID-1, since there are no paruty drives.

It seems that the formula does not take into account the parity drives that exist in RAID-5 and RAID-6 configuration. The situation gets worse when the RAID sets are smaller RAID 5 (3+1) and RAID 6 (6+2), while the total drive count is large in 100s or more, since there are a lot of parity drives.

Am I making a mistake somewhere in the calculation, or the formula does not account for parity drives?

I would appreciate any feedback, good or bad,

Thanks,

AK

Ark,

At 100% reads, this calculation would be correct. In RAID 5, the parity is evenly distributed across all of the disks in the RAID set. An 8 drive RAID 5 does have the same read performance as an 8 drive RAID 0. RAID 5 is actually RAID 0 with parity.

You lose drives space for sure in a RAID 5 but not read performance. However, the write performance on a RAID 5 is what hurts and is acurately accounted for with the raid penalty input into the calculation.

8 disk RAID 5 with 100% reads = 1400 IOPS functional

8 disk RAID 5 with 50%/50% = 560 IOPS functional

8 disk RAID 5 with 100% writes = 350 IOPS functional

I believe you are thinking of RAID 4, in which one drive is dedicated to only parity.

kindly tell me the reference of raid dp and raid10 IO penalty as you mention above in table, which is 2. how both are same can you explain me?

Thanks

How to calculate IOPS in Dinamic Provisioning pools ??

Hello All,

Am wondering what does Functional IOPS here refer to. I believe you are trying to calculate the Host IOPS from the given set of drives and based on that you are again to arrive to the number of drives required which is required to support the Host IOPS. The Sizing should be done done based on the IOPS you gather from the Host or the IOPS hitting the Storage FE. And there are lot of factors that would come into play when choosing the RAID type based on the application i.e. IO Size, IO Pattern(Sequential/Random) e.t.c….By the way i also read a note that for a Read Intensive application R5 is the best choice, which is not always true. For the equivalent capacity RAID 10 performs like a gem compared to RAID 5 for a read intensive application, as R10 involves more spindles and the read can be served parallely from the mirrored disk as well.

And similarly for a Exclusively Write application RAID 5 is a good candidate compared to RAID 10, as the write penalty would be only 1.25 instead of 4.

Further the penalty for RAID 0 is 1 and not 0. This is actually not the “penalty” it is just that write operation which is counted. Having 0 in place of 1 would zero out our Write IOPS and you would be left only with Read IOPS

Awesome post, explained in a very good manner, thanks for posting.

This is a great article. Thanks.

Your penalty computation are incorrect. RAID-6 requires 6 IO operations for each write IO issued.

Yes depending on the storage system. Every storage vendor has it’s Owen implementation for raid 6 .

Dear Sudarshan , your Functional IOPS calculation is wrong.