Sunday, October 12, 2008

Windows Perfmon in a Cube

Windows Performance Monitor (Perfmon) has been a essential source of performance information for Windows servers for a long time. I remember using it on Windows NT back in 1995. Such a useful tool, and yet it doesn't seem to have been enhanced much since that first version. I have suggested to Microsoft that it gets a revamp, so the performance data is optionally stored in an OLAP cube if there is a SQL Server database nearby. SQL Server comes with fantastic OLAP technology, which faccilitates analysis of these large data volumes.

For an example of what I am talking about go to and click on the Perfmon Dashboard. This will take you to a dashboard of Perfmon data from my home servers. (There are just two servers currently, but there could be any number since machine is a dimension.) First notice how the information is very close to real time. The Scorecard tells you the number of seconds difference between the last data capture and the system time. On my system, this is currently set to be <=180 seconds. On this dashboard you will get highlight numbers for CPU consumption, IO latency, Process activity, Memory consumption and meta information on the Perfmon data. There is a lot more data, information and analysis available from the cube. This information can be ad hoc browsed via any OLAP cube browser, for example Excel, Excel Services, SQL Reporting Services, Proclarity, PerformancePoint, ThinSlicer and thousands of other non-Microsoft browsers.

On this site I have made the information available via Office PerformancePoint. I am a great fan of PerformancePoint since it provides true thin-client OLAP cube browsing and easy to create dynamic dashboards. For example on the Perfmon Dashboard, click on Process to see a Perfmon dashboard that aims to present performance information for Windows processes (applications). The chart at the top left shows the most recent three hours on columns. On rows there are a number of KPI's such as % Processor Time and IO Data Bytes/sec. In the value display, the chart shows the Windows Process that is the highest consumer of this resource for that hour. So if you have a scarse resource, such as memory, you can immediately see which processes are top consumers. If there is a KPI, for which you are keen to know more, simply click on the KPI name, for example, click on IO Data Bytes/sec. Notice how the charts on the right hand side have now adapted for the KPI in focus.
There are several other tabs on this dashboard, and there are other dashboards (SQL Server, for example) based on the same Perfmon cube, which you can browse from the Internet.
Since the data is real and close to real-time, I often use to to demonstrate the value of OLAP and PerformancePoint to colleagues and customers. My wife and children frequently use one of the monitored services to do work and homework. That makes it even more interesting, as during the demonstration we can see what work, or which game is being played on the server. (Fifa World Cup Soccer has been a top resource consumer of late.)
Cubes really make presenting and browsing this sort of performance information much much easier. I am sure that one day Microsoft will automatically (optionally) put this perfmon data in a cube for us. In the meantime, it is not too difficult, and certainly worthwhile, for us to do that for ourselves.

No comments: