Monitoring Microsecond Storage – Perfmon with a little help from Powershell

I do a lot of performance analysis. I use perfmon as part of my toolkit it is great for performance data collection. I can use it to watch live performance data or I can save performance data for later analysis.

One limitation I have come across with perfmon is that the tool will only display performance data for disk latency (LogicalDisk(*)\Avg. Disk sec/Reads)  in milliseconds.


I can take a saved perfmon file and export the data to a csv file or a database and then view the data in at a more granular level.


Opening the csv file in Excel can now see the analyse the disk latency in microseconds.



This still leaves me with the limitation of not been able to view microsecond latency data in the toolkit. This is especially limiting when I want to view live performance data, enter powershell.

Powershell has a cmdlet called get-counter which will display live performance data and for disk latency this is displayed in microsecond granularity  . I can simply type something like the following example:


Live performance data for disk latency will be returned to the screen.



Perfmon is a great tool for collecting performance data. One limitation I have come across is that although disk latency is recorded at sub-millisecond level it is only displayed on the tool rounded to the nearest millisecond . Powershell offers the ability to display live disk latency at sub-millisecond latency this could be easily scripted to average latency over a time period or create a graph of live performance data something we will explore in  a later post.