How to use Windows Performance Monitor to see the amounts of IOPS, the average disk latency, the average IO size and the throughput of the disk subsystem.
Please see this post for a detailed description of what these terms mean. We will need to have that information before having any use of Performance Monitor.
We will use this classic tool, which has been available in all versions of Windows since a very long time.
Once started, begin with removing any counters already present. Different versions of Perfmon has different pre-loaded counters and to make to output more clear please select them all and press the DEL key. Read also this post for more information on tweaking Performance Monitor be more useful.
Now press the + sign above the graphs and select “Performance Objects”. (This is the view on Windows Server 2008 R2, different versions of Microsoft operating systems has slightly different interfaces here). Among all of these objects you should find “Physical Disk“, select that and a list of available counters should appear below.
Important: Begin with selecting the correct instance! This is just the physical disk that you want monitor, see picture above. By default it will select _Total, which will be the sum of all physical disks you have available and the data will be more or less useless. If not changing this from the start we have to redo the adding of the counters. Always begin by selecting the instance you want to monitor, in the example above the Disk 1 (containing the D: partition).
This GUI also looks somewhat different between Windows Server 2003 and 2008 R2.
Now select the four counters below and we will then look what they represents.
Avg. Disk Bytes / Transfer
Avg. Disk sec / Transfer
Disk Bytes / sec
Disk Transfers / sec
Remember to click Add when selecting each one, it is easy to forget. Now if you like you can do some changes on the Perfmon window. If you would like to just observe the current values only, go to the graph tab and change “view” from Line to Report.
This will give a very clear view similar to this below, where you can observe the actual values only, (a bit like RESXTOP if having worked with the tool in Vmware).
If you would like to see both actual, minimum, maximum and average it is best to leave default graph style to Line.
So, how do these numbers shown here relate to more commonly used storage terms?
|Common term||Perfmon Counter name|
|Average IO Size||= Avg. Disk Bytes / Transfer|
|Average Latency||= Avg. Disk sec / Transfer|
|Throughput||= Disk Bytes / sec|
|IOPS||= Disk Transfers / sec|
Some notes regarding these values:
Latency is normally expressed in milliseconds (ms), but Perfmon does display the value in seconds, for example 0.015 seconds = 15 ms.
Throughput is often expressed in MB/sec, but Perfmon in Windows 2003 displays this in Bytes/second, e.g. 382,090,819 meaning 382 MB/s. It would be nice to have to possibility to customize the output of this in Perfmon, but unfortunately that is not an option.
We can observe the current value of the selected counter, here Disk Bytes/sec, i.e. throughput and also the average as well as Min/Max. To change the observation time see this.
If we want the see differences between read and write request then all four of these values are available in separated Read/Write settings. This means that for example see the differences in latency between read and write request you could select “Avg. Disk sec/Read” and “Avg. Disk sec/Write” instead of “Avg. Disk sec/Transfer” (which gives the total).