.NET perfmon, high CPU utilization, and the perfmoncollectoragent

Document ID : KB000048509
Last Modified Date : 14/02/2018
Show Technical Document Details


Are you seeing high CPU usage on a .NET agent?

Are you using the perfmoncollectoragent?

To verify that perfmon is causing high CPU utilization, disable perfmon. Knowledge Document:


explains how to diagnose perfmon as the root cause.


If perfmon is the root cause of the high CPU, then use the epagent for perfmon instead of the standard perfmoncollectoragent.

The epagent for perfmon is as an unsupported field pack for .NET Agent versions 8.x and 9.0.x which can be requested from Support.

Note: For .NET Agents 9.1.x and above, the Perfmon Collector Agent is now part of the standard .NET Agent Release.

The epagent can greatly reduce CPU overhead compared to the perfmoncollectoragent.

PerfMonCollectorService executes an internal Introscope .NET agent that requests data via Microsoft PerfMon APIs. This agent is designed to run locally on the monitored machine. The PerfMon data is collected every 15 seconds and transmitted to the APM Enterprise Manager.

NOTE: this version of the extension requires the .NET 1.1 framework.

This agent provides a 2x+ reduction in overhead over the older VBScript version as tested with Introscope 8.x and 9.0. Recompile with the target Agent DLL.

The PerfMonCollectorService will automatically scan for updates in its configuration file and add or remove metrics - it does not require an agent restart to change metrics.

Note that two versions of the ZIP are included based on which version of .NET is installed on the target machine. The .NET 2.0 version is more efficient but may not always be available.


  1. Unzip the file PerfMonCollectorService.zip into C:\CA Wily\ to get a new folder:

    C:\CA Wily\PerfMonCollectorService
    containing multiple subfolders. If you install in a different directory, update these lines in the startup config file:

    --><add key="com.wily.introscope.agentProfile" value="<install folder>\\PerfMonCollectorService\\config\\IntroscopeAgent.profile" />

    Remember to use two backslashes \\ for directory separators

  2. In config/IntroscopeEPAgent.properties, locate the lines:

    change them to point to your EM

  3. Register the service with INSTALL/install service.bat

  4. Go to Windows Services and startup the new service:
    CA Wily APM PerfMon Collector Service

  5. De-Register the service with UNINSTALL/install service.bat, then delete install directory.

To change the PerfMon data collected:
There is a default set of data requested from PerfMon which is located in config/PerfMonCollector-metrics.config
You can change this list and it will be dynamically reflected in the agent metrics.


  1. Do I need to recompile for later Agent versions?
    No, the package will work with Introscope 8.x and above without modification. The option of recompiling with different agent versions is offered for future compatibility but should not be required in almost all scenarios.

  2. Do I need to restart the service when I change PerfMon metrics?
    No, the agent should notice the file change and reconfigure itself dynamically.