Intel Performance Counter Monitor

If you want to know what each core on each CPU in your system is doing, you need a more sophisticated tool than the Windows Performance Monitor.  Intel offers a tool that you can download and compile to get core-level CPU information.  This is the Intel Performance Counter Monitor.  It works on Windows and Linux.

The reason you need that, Intel says, is the CPU % utilization shown on the Windows Task Monitor Performance Monitor screen is not a 100% accurate statistic for measuring CPU performance.  The algorithm used to calculate it is not accurate on multi core and multiple CPU systems with simultaneous multithreading (in other words, pretty much every system).  The definition of “CPU% utilization” is the number of time slots available to handle an instruction.  That assumes the CPU can only do one the thing at a time in a time-slicing manner.  Not only can a multiple-core, multiple-CPU processor handle more than one task at a time, those CPUs (e.g. I3, I5, I7) that use Intel’s hyper threading technology let each thread to handle more than one task at a time.  (Intel says that gives a 30% boost.)

As you can see from the screen below, the Performance Monitor shipped with Windows 8 just gives information on the aggregate of all cores, and as we said above, Intel says this number is not necessarily correct, plus it does not give you core-level visibility.



PCM shows information on each core.  It either works as a standalone program, pcmon.exe:


or is installed inside the Microsoft Performance Monitor, it gives an additional tab with CPU-level information.


Installation Instructions

Here is what I did to get PCM installed on my system:

  1. Download Visual C++ 2010 Express, so that you can compile the code.
  2. Download Intel Performance Counter Monitor from here
  3. Compile this Visual C++ project IntelPerformanceCounterMonitorV2.6PCM_Winpcm.vcxproj
  4. Create a folder and copy this compiled executable intelperformancecountermonitorv2.6IntelPerformanceCounterMonitorV2.6PCM_WinDebugpcm.exe there.
  5. Download this CPU temperature monitoring utility (so that you do not have to compile the .DLLs yourself, which would also require that you learn how to digitally sign them)
  6. Unzip that then copy these four .dlls below into the same folder that you just created:


Then run pcm.exe.

When I ran it, I got stuck, because some other process had already loaded up the PCM .dlls already on the system. So it would be necessary to stop that performance monitoring service first.  I got the error message shown below.  If you work with it some more, you could figure out which Windows service would need to be stopped to get it working.  I will do that in a future post, but so far I was not able to find instructions on which Windows service to stop.