VMware Cloud Community
rickardnobel
Champion
Champion
Jump to solution

What is IOPS?

Hello,

I have a question on a common term:

I understand the "IOPS" means IOs per second and I belive it is the sum of read and write operations during that moment of time, but what I fail to understand is if there is any relation with the size of these read or writes? Is a read of 512 bytes and a read of 1 MB still "one IO"? Could a IO be of any size?

And what determines the size of the IO operation? Is it the stripe size of the RAID or the VMFS cluster size or other?

My VMware blog: www.rickardnobel.se
Tags (2)
0 Kudos
1 Solution

Accepted Solutions
mcowger
Immortal
Immortal
Jump to solution

The reason we care about IOPs sepratly from throughput (MB/sec) is because it causes load on different parts of the storage system.

For example - if I have an application that does only long, large, sustained reads (say, a data warehouse), I will likely see very low IOPs with large average size and large throughput. So, maybe 200 IOPs but 1000 MB/sec throughput. That will stress the link connecting the system to the array as well as the disks themselves. It probably wont stress the array cache much, nor its processors.

However, if I have a application thats doing only, say 200MB/sec but doing 30,000 IOPs, it wont stress the throughput of the link much, but dealing with all these commands (that are all very small) puts a huge load on the storage array's processors. Further, these operations all have to come from a disk at some point, which has physically moving parts. So at some point the disk can only service X number of requests per second if it has to move the heads around alot (see MKguy's discussion about that).

So we have to care about both.

--Matt

VCP, vExpert, Unix Geek, Storage Nerd

--Matt VCDX #52 blog.cowger.us

View solution in original post

0 Kudos
8 Replies
DSTAVERT
Immortal
Immortal
Jump to solution

Interesting links

http://www.wmarow.com/strcalc/

http://blog.peacon.co.uk/?s=iops

-- David -- VMware Communities Moderator
0 Kudos
mcowger
Immortal
Immortal
Jump to solution

its the number of the operations issued per second, read + writes + other.

A read of any size plus a write of any size is still just 2 IOPs.

There are limits to the IO size based on protocol. The size of the IO is usually determined by the application and how it reads data.

--Matt

VCP, vExpert, Unix Geek, Storage Nerd

--Matt VCDX #52 blog.cowger.us
rickardnobel
Champion
Champion
Jump to solution

its the number of the operations issued per second, read + writes + other.

A read of any size plus a write of any size is still just 2 IOPs.

This might be a stupid question, but if two IO operation which could be of very difference size counts as the same, why is the value of IOPS important?

As in, why look at the operations per second and not just at bytes read and bytes written per second?

There are limits to the IO size based on protocol. The size of the IO is usually determined by the application and how it reads data.

With protocol, that is in for example FC or iSCSI? Is the IO size related to the frame size of these protocols or could an IO be encapsulated into several packets/frame and still be "one IO"?

My VMware blog: www.rickardnobel.se
0 Kudos
MKguy
Virtuoso
Virtuoso
Jump to solution

It's definied in the SCSI protocol and equal to FC and iSCSI. How they fragment it in IP packets/Ethernet/FC-frames is a completely different thing.

When poeple talk about IOPS values of hard disks etc, they usually mean random.

While a 15k SAS drive might be able to deliver the often toutet ~200 IOPS of these, it can deliver well over a thousand of small, sequential IOPS.

If you know how it was measured, IOPS and MB/s are actually interchangable. IOPS * avg. size of IO basicially equals your MB/s.

-- http://alpacapowered.wordpress.com
mcowger
Immortal
Immortal
Jump to solution

The reason we care about IOPs sepratly from throughput (MB/sec) is because it causes load on different parts of the storage system.

For example - if I have an application that does only long, large, sustained reads (say, a data warehouse), I will likely see very low IOPs with large average size and large throughput. So, maybe 200 IOPs but 1000 MB/sec throughput. That will stress the link connecting the system to the array as well as the disks themselves. It probably wont stress the array cache much, nor its processors.

However, if I have a application thats doing only, say 200MB/sec but doing 30,000 IOPs, it wont stress the throughput of the link much, but dealing with all these commands (that are all very small) puts a huge load on the storage array's processors. Further, these operations all have to come from a disk at some point, which has physically moving parts. So at some point the disk can only service X number of requests per second if it has to move the heads around alot (see MKguy's discussion about that).

So we have to care about both.

--Matt

VCP, vExpert, Unix Geek, Storage Nerd

--Matt VCDX #52 blog.cowger.us
0 Kudos
rickardnobel
Champion
Champion
Jump to solution

The IO size:

It's definied in the SCSI protocol and equal to FC and iSCSI. How they fragment it in IP packets/Ethernet/FC-frames is a completely different thing.

Thanks for your reply. So it is SCSI that defines the IO size? What is approximately the maximum size? As in, is it like 64 kB or could it be quite large like e.g. 10 MB?

The number 8 kB comes up sometimes, is that a common average IO size?

The reason we care about IOPs sepratly from throughput (MB/sec) is because it causes load on different parts of the storage system.

Thank you very much for a very good description of this!

My VMware blog: www.rickardnobel.se
0 Kudos
mcowger
Immortal
Immortal
Jump to solution

At the SCSI layer the size is quite large - hundreds of megs. That being said, the max supported by most arrays is smaller and more like 10MB, ish.

Usually, the transfer size is requested by the read the client does, which is often 2k, 8k, 64k - somewhere in there.

--Matt

VCP, vExpert, Unix Geek, Storage Nerd

--Matt VCDX #52 blog.cowger.us
0 Kudos
rickardnobel
Champion
Champion
Jump to solution

Usually, the transfer size is requested by the read the client does, which is often 2k, 8k, 64k - somewhere in there.

Thanks, that sounds very reasonable.

My VMware blog: www.rickardnobel.se
0 Kudos