Performance Monitoring The Easy Way, Part 1

The Windows Performance Monitor has been around in one form or another since the days of Windows NT.  Even so, this is one tool that I rarely see anyone use in the real world.  I suspect that the reason for this is probably that the Performance Monitor tends to be both tedious and difficult to use, and it is useless unless you know how to interpret the results.  Of course interpreting the results practically requires a Ph.D. in computer science.  Okay, not really, but there are well over a thousand Performance Monitor counters built into Windows, and most Microsoft applications also add their own Performance Monitor counters on top of this.

Another reason why I think that so few people actually use that Performance Monitor in real life situations is because there are tools available that can monitor Performance Monitor counters for you, and interpret the results in a way that is easier to understand than looking at the raw numbers that are generated by the Performance Monitor.

Even so, I personally believe that performance monitoring is becoming far more critical than it ever has been in the past.  The reason why I say this is because today there is a huge shift towards the use of virtual machines.  In a virtual server environment, multiple virtual machines reside on a single physical machine.  As I’m sure you probably have heard, the main reason why virtualization has become so popular is because most server hardware is underutilized.  Virtualizing allows organizations to make better use of their physical hardware for server consolidation.

The interesting thing about virtualization though, is that a virtual server actually requires more physical resources than a physical server.  The reason for this is that the virtual server is riding on top of a host operating system that is also sharing the hardware.  Newer virtualization products such as Microsoft’s Hyper-V allow virtual operating systems to communicate directly with the hardware, making them much more efficient than products that pass all hardware requests through the host operating system.  Even so, the host operating system is still consuming a significant amount of system resources.  For example, in a Hyper-V environment, all disk I/O is still coordinated through the host operating system.  Threads are also consumed through the task of monitoring the virtual server’s status.

My point is that although virtualization seems to work really well, anytime that you start virtualizing servers it becomes critically important not to waste system resources.  After all, the resources that are being wasted by one virtual server could be used by another virtual server running on the system.  Performance monitoring allows you to figure out which virtual servers are consuming excessive resources, and which virtual servers have resources to spare.  This information can help you to fine tune your virtual computing environment in order to make all of your virtual servers run more efficiently.

Even if you aren’t worried about optimizing a virtual server environment, performance monitoring is absolutely critical if you’re considering virtualizing your physical servers.  Only through performance monitoring can you know exactly how much of a drain the server is going to put on your available resources

Performance Monitoring Process

I’m going to get into the actual Performance Monitoring process in the next part of this article series.  For right now though, I wanted to show you a quick optimization trick that tends to be especially effective.  If you open the Windows Server 2008 Reliability and Performance Monitor console, and click on that Reliability and Performance container you’ll see a screen similar to the one that is shown in Figure A.


Figure A – Reliability and Performance Monitor summary view of system resource consumption

The thing that I wanted to point out is that although this screen shows you the overall amount of resources that are being consumed, you can click on the CPU, Disk, Network, and Memory containers to find out how much resources each individual process is consuming.  You can see an example of this in Figure B.


Figure B – Resource Overview shows resource consumption on a per process basis

As you look at which processes are consuming system resources, I recommend trying to identify each process to see if it is something that really needs to be running or not.  I have found is that doing a Google search on an individual process name will often identify both the process and its purpose, and help me to figure out if I need the process or if it is something that can be removed from the system.


In this article, I have explained that performance monitoring is more important than it has ever been because of the way that physical servers are being consolidated into a virtual server environment.  In the next part of this article series, I am going to talk about the performance monitoring process.  My goal in doing so is to discuss performance monitoring in a way that eliminates a lot of the unnecessary complexity.

Got a question? Post it on our Windows Server 2008 forums!