Tag Archives: iops

IOPS calculation for your FAST Pool

I will provide a calculation example for calculating the required spindles in combination with a known skew. No capacity will be addressed in this post, where I will base it purely on IOPS / throughput and apply it to a mixed FAST VP pool.

We all know about the write penalty which is the following:

  • RAID10: 2
  • RAID5: 4
  • RAID6: 6

What if we have an environment which has a skew of 80% with a required amount of IOPS that is 50000. Besides this, we know that there are 80% reads and only 20% writes. Remember that Flash is a good reader?

Now that we know there is a skew of 80%, we can calculate the amount of flash we need inside the pool:

0.80 * 50000 = 40000 IOPS that we need inside the highest tier of our FAST VP pool. For the remaining 10000 IOPS, we will keep the rule of thumb where we base the remaining stuff on 80% for SAS and 20% for NLSAS:

0.2 * (0.2 * 10000) = 2000 IOPS for NLSAS

0.2 * (0.8 * 10000) = 8000 IOPS for SAS

Now, without the write penalty applied, we need to get the following in our pool:

  • Flash: 40000 IOPS
  • SAS: 8000 IOPS
  • NLSAS: 2000 IOPS

Write Penalty

But what about the backend load? By backend load, I mean that there will be the write penalty included for calculating the exact spindles we need. Remember that we have about 20% reads on this environment:

(0.8 * 40000) + (2 * 0.2 * 40000) = 32000 + 16000 = 48000 IOPS for FASTCache which is in RAID10

or..

(0.8 * 40000) + (4 * 0.2 * 40000) = 32000 + 32000 = 64000 IOPS for Flash in our pool on RAID5

(0.8 * 8000) + (4 * 0.2 * 8000) = 6400 + 6400 = 12800 IOPS for SAS in RAID5

(0.8 * 2000) + (6 * 0.2 * 2000) = 1600 + 2400 =  4000 IOPS for NLSAS in RAID6

How many drives to I need per tier?

We keep the following rule of thumbs in mind for the IOPS capacity per drive:

  • Flash: 3500 IOPS
  • SAS 15k: 180 IOPS
  • NLSAS: 90 IOPS

To make sure you are ready for bursts, you could use “little’s law”, which means you will use only about 70% of this rule of thumb so you always have an extra buffer, but this is up to you as we will also round up the amount of disks for best RAID purposes.

64000 / 3500 = 19 disks, which we would round up to 20 when we want flash to be in a RAID5 configuration

12800 / 180 = 72 disks, which we would round up to 75 to keep RAID5 best practices again

4000 / 90 = 45 disks, which we would round up to 48 if we want to keep 6+2 RAID6 sets for example

Keep in mind that this calculation does not incude any capacity based on TB or GB, only on IOPS!

IOPS calculation

What is IOPS?
IOPS (Input Output Per Second) is a common performance metrics used for comparing/measuring the performance of Storage systems like HDD, SSD, SAN.

Quick Calculation sheet

RPM IOPS
15 K 175 IOPS
10 K 125 IOPS
7.2 K 75 IOPS
5.4 K 50 IOPS
How to Calculate IOPS requirement?

We will consider the 600G Segate Cheetah 15K RPM HDD.

http://www.seagate.com/files/docs/pdf/datasheet/disc/cheetah-15k.7-ds1677.3-1007us.pdf

Read/ Write seek time : 3.4 / 3.9 ms (take as 3.65)
Average latency : 2.0 ms
IOPS = 1000/ (Average latency in ms + average read/ write seek time)
= 1000/ (2 + 3.65)
= 176.99 IOPS

RAID level and write Penalty 

RAID Level IO Write Penalty
RAID 0 0
RAID 1 / RAID 10 2
RAID 5 4
RAID 6 6
Total IOPS = Disk Speed IOPS * Number of disks
Actual IOPS = (((Total IOPS× Write %))/( RAID Penalty)) + (Total IOPS×Read %)

Suppose we have 8 the segate Cheetah 15K Hard Drives.
Total IOPS = 8 * 176.99
= 1415.92 IOPS (For RAID 0)
= ~ 1400 IOPS

Considering RAID Overheads

Work Load details
Write Load = 30 %
Read Load = 70%
RAID Level = 10
Actual IOPS = ((1400 * .30) / 2 + (1400 * .70)
= 1190 IOPS

Calculating number of Disks required (Reverse calculation)

Requirement I need 1200 IOPS with RAID 10, write load 30 % and read load 70%
Actual IOPS = 1200
Total IOPS = (Actual IOPS * RAID Penalty)/ (Write % + RAID Penalty – (RAID Penalty * write %))
= (1190 * 2) /( .3 + 2 – (.3*2))
= 2380 / 1.7
= 1400 IOPS