FAQ: What are IOPS?

/ Technical
May 17th, 2011

IT solutions - What are IOPS

I’ve walked into many smaller organisations (up to 10 servers) with my new business hat on and had the IT team moan about the performance of their virtualized environment. I’d say that 40% of those complaining of speed issues are running their VMs off cheap rackmount NAS devices running SATA. Another 40% have a SAN configured with at least one RAID 6 array. The other 20% have issues related to other issues.

I’ll ask them the question of how many IOPS their virtualised servers demand and they’ll stare at me blankly. I’ll then ask them if they know roughly how many IOPS they are likely to be getting out of their SAN with the current RAID configuration and the majority will start to feel stupid as they don’t know.

Firstly, I should state that they do not need to feel stupid. In my experience, it’s common for people to not know what IOPS are and how they affect the performance of storage arrays. It was always easy to ramp up virtualisation as most servers had plenty of free processor power and RAM. Everyone started to ramp up not really thinking about disk as it was rarely an issue in the past for the SME in the one server per IT service environments. They’d then stick a few more disks into a SAN and would configure it as a new array and they’d start encountering problems again in time. I also had to look into this problem a few years ago so I thought I’d put together some notes on what IOPS are.

What are IOPs?

IOPS stands for Input/Output operations Per Second. The number of IOPS achievable per disk obviously varies depending on the speed of the disk technology and the Revolutions Per Minute (RPM). In fact, the biggest factor is generally down to the RPM in most day to day environments. So what are typical IOPS for the most common disk types?

  • 7,200 =         75 IOPS
  • 10,000 =      125 IOPS
  • 15,000 =      175 IOPS

I haven’t shown Solid State Disks in the table as they vary. Some, however, fly at 6,000 IOPS!

Note: The size of the disk has no real bearing on the number of IOPS.

How many IOPs does my machine need?

OK, so now you know what sort of IOPS you’d be looking at for varying disk speeds. Most management systems will tell you how many IOPS your machine is demanding on your individual disk or RAID array. But on a basic level how can you tell?

A simple way is to open a performance monitor and under the physical disk, load up the Disk Transfers/sec counter. This is simply a sum of the disk reads and disk writes per second. Obviously, if you want to gauge the demand realistically you should trend it over a significant amount of time, i.e. over a typical operating week. You should then graph your logged figures and choose the 95th percentile as a good guide for the demand.


I often get asked how many IOPS would a typical VM demand from a storage system. It obviously all depends on the work the server is doing but this week I took a small selection of 50 of our VMs and averaged the IOPS at around 35 per machine. This is crude so don’t necessarily use it for planning your production environment but it will make some of the numbers I go through in a minute make a little more sense.

The figures I stated earlier in terms of disk speed and the related IOPS are for a single disk. Of course in most environments, you will be in an array, and the array will give you greater IOPS, i.e. the more disk spindles, the greater the number of IOPS and thus the greater the performance. However, the type of RAID array makes a real difference to the performance, particularly on the write performance. Have a look at the table below to see the significance:

RAID Type IO Penalty READ IO Penalty WRITE 15K disk write IOPS
0 1 0 175
1 or 10 1 2 85
5 1 4 40
6 1 6 30
DP 1 2 85

Some of you may ask what is RAID DP – It’s basically RAID 6 but it doesn’t use distributed parity as in RAID5/6, i.e. it doesn’t write parity to every disk in the array. Instead, it uses two unique disks to store the parity information.

So, in short, the old-favourite RAID 5 and 6 arrays have significant penalties. As shown, in RAID 6 there are 6 IOPS required for every write. Of course, parity incurs processing overhead, and this results in a performance penalty which is dependent on the read/write workload balance on the array.

I’ve taken a formula below from the excellent yellow bricks blog:

(Total Workload IOPS x Percentage of workload that is read operations) + (Total Workload IOPS x Percentage of workload that is read operations x RAID IO Penalty)

So, if we take a RAID 5 array with a VM that demands 200 IOPS we would get

  • (200 x 0.4) = 80
  • (200 x 0.6) x 4 = 480
  • 80 + 480 = 560 IOPS

So that means the 200 IOPS this VM demands actually turns into a demand of 560 IOPS on the array. I don’t expect that you thought of that? Maybe you did – but many don’t.

The lesson here is to always think about IOPS when planning your storage systems. If you don’t, you’ll be dipping into your pockets quickly, and we all know that storage doesn’t come cheap.