IOPS (input output per second) is a measure of disk performance that many organizations use to rate their storage arrays. The idea being that if a disk drive can read and write quickly to and from the platters then the total number of IOPS will be higher. The higher the number of IOPS the better the drive, in theory at least.
Except when it comes to storage this conventional wisdom is not sound. The maximum potential IOPS of a drive by itself can be an accurate measurement that is still completely meaningless. Even worse it can be misleading.
For instance, what if I told that I had a hard drive that can do 200 IOPS? You might say “Wow! A good SAS drive can only do a maximum of 180 IOPS!” and then place an order for my new magical drive. Now what would you do if I told you that I had a hard drive that could do 20 IOPS? You might say “Wow! The most mundane of SATA drives can do 40 IOPS.” and then shun me for even bringing up this horrid little drive.
You might say those things and reach those judgments, but I am betting that you are far too smart to fall for my clever (by which I mean obvious) trick scenario.
IOPS by themselves are misleading measurements because they need to be coupled with another measurement to even begin to accurately portray a drive’s performance. You need to know what the block size being used is when you are measuring IOPS.
Take my clever (obvious) scenario. What if that first drive could achieve 200 IOPS only by using 1k blocks? That means any file greater than 1,024 bytes would need to be broken up into multiple blocks. If your average file size is 1MB you would need 1,024 blocks. Thus you would need at least 1,024 IOPS for that file to be read or written (with RAID there are additional writes for the parity drives). 200 IOPs doesn’t sound so impressive all of a sudden when you know the block size being used.
Likewise, if I had a drive that generated 20 IOPS using 64k blocks it would be faster than the drive generating 200 IOPS using 1k blocks. The 20 IOPS drive requires only 16 blocks to write that 1MB file with. With different block sizes being used the “slower” drive takes one second to write the file and the “faster” drive takes 11 seconds.
This is why if you are going to design a storage solution you need to know at least three details:
- What size block is optimal for the infrastructure that you are building?
- What form of RAID will be used for the storage?
- How many IOPS will you need to deliver an acceptable level of performance for your end users?
Once you know all three of these variables, and after discovering what size block the drive manufacturer used for determining the maximum IOPS supported for that model, you can then begin to design the storage needed for your infrastructure.
The lesson to be learned from this is that numbers are meaningless without context. Understand the what is being measured before relying on the measurement, and you will avoid a lot of the pitfalls that come with designing for IT projects.