Increase in CPU utilization

For the latest, most advanced host monitoring, check out New Relic Infrastructure.

Problem

You see an increase in CPU utilization after you install Servers for Windows.

Cause

After you install Servers for Windows, the WMI provider process (WMIPrvSE.exe) will show an increase in CPU utilization. This increase is due to Servers for Windows querying WMI every 20 seconds for its metrics sampling cycle.

This is normal and expected behavior. The fewer resources a server has, the more pronounced the spike.

The following sections describe some calculations that contribute to the increase in CPU utilization. These examples as well as the actual transmission of data are representative and not the sole cause for the increase in CPU utilization.

Overall CPU utilization

The Server monitor agent obtains data for CPU utilization every 20 seconds using WMI to gather the system statistics. The WMI query used via managementobjectsearcher is:

 SELECT PercentPrivilegedTime,PercentUserTime,TimeStamp_Sys100NS FROM Win32_PerfRawData_PerfOS_Processor WHERE Name = '_Total' 

Note: All the values returned are ticks (100ns periods), not percentages as implied by the query names.

For each 20 second period, the agent calculates percent usage, %CPUx for each CPU for both System and User time using PercentPrivilegedTime (System), PercentUserTime (User), and the TimeStamp according to this formula:

 %CPUx = ((currentCPUTicks - previousCPUTicks) / (currentTimestamp - previousTimestamp)) * 100 

It then uses the average System and User CPU utilization for the time period to calculate the average % CPU usage  using this formula:

% CPU usage = ( %CPU1 + %CPU2 + %CPU3 + ... + %CPUN ) /  N  

Every minute the agent averages the % CPU usage data for the three previous 20 second periods, for both the System and User CPU, and sends it to New Relic.

It is possible that a few short term spikes on one CPU or during a few data harvest periods can lead to the average being higher than Windows or version WSM 2.x reported.

Process CPU utilization

The Server monitor agent obtains data for Process CPU utilization every 20 seconds using the GetProcessById method to retrieve the elapsed CPU Ticks for each process and the DateTime.UtcNow.Ticks method for the elapsed ticks (100ns periods) for the CPU.

Every 20 seconds the agent calculates the percentage of time used by each process using this formula:

% Usage = ((currentProcessTicks - previousProcessTicks) / (currentTotalCPUTicks - previousTotalCPUTicks)) *100 

At the end of each minute, the agent averages the % Usage for each process for the three previous 20-second periods and sends it to New Relic.

For more help

Additional documentation resources include Processes page (details about processes by memory or CPU usage, including the top five CPU consumers for the server).

Discuss New Relic Servers in the New Relic Online Technical Community! Troubleshoot and ask questions, or discuss Servers for Linux or Servers for Windows in detail.

If you need additional help, get support at support.newrelic.com.