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
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
(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!