IOPS are a very important piece of any design and usually most misunderstood. In many cases using average IOPS collected is good enough, but often that is not enough and if the application in question is mission critical then you have a major issue.
But first for those who are not familiar with the term IOPS. IOPS stand for Input/Output Operations Per Second. It is the standard measurement used to measure performance of storage.
There are four types of IOPS that we need to consider when we are doing an analysis:
Random versus Sequential I/O
Random vs. Sequential workloads is a good way to judge the efficiency of an application’s access and use disk space. Sequential data access is much faster than access. The reason is (without a deep dive) is random read access has a higher number of seek operation than Sequential. There fore if you have an application with a high random I/O then a drive with a fast seek time might be a good choice.
Steady vs. Bursty I/O
I/O traffic can be steady or bursty (spiky) just like NYC traffic! The traffic can change from burst to sequential over time. A good example is OLTP which can have bursty traffic during normal business hours then bursty during backup off business hours. Bursty is a bit of challenge as you need to calculate for it in the design as the storage needs to handle worst case (boot storm). It is important understand the nature of I/O produced by an application and look for patterns. Do we have 800% spike in I/O for 2 minutes between 2-3pm every day? More information = Better Design.
Read vs. Write I/O
Write I/Os consume more storage resources than read. We need to understand the ratio of read vs write for an application as this can be critical. For example, in a VDI environment, usually write is higher than write I/Os, however that can changes in the opposite direction in case of boot storm (all users login at same time), resulting in read I/Os 10 times or more higher than write which brings the whole environment to a stop. This could also influence Knowing the need for caching and its type.
Large vs. Small I/O
Applications transmit I/Os at different sizes. Some applications produce small block I/Os (4K/8K), while others produce large I/Os in MBs of data. For example, an application with 1K IOPS and 8K I/O size will consume fairly low bandwidth (8 MB/s). On the other hand, an application with a 32K I/O size will consume 4 times the bandwidth at 32 MB/s. Just to give you an idea of a typical I/O size for some major applications: Microsoft Exchange 2013 = 256KB. Microsoft SQL 2012 = 64KB.
As you see it is important to understand I/O size which will help the architect do a better design and make sure the storage will meet the applications needs adequately.
I hope this post will help you realize there is more to I/Os than just “average”. Understanding the nature of your applications I/Os workload is a key in any design.
Thank you for reading.
Nick
Mike
August 6, 2014Really interesting, thank you.