What does this strange value for “Percent CPU” mean in Performance Monitor?

Raymond Chen

A customer was monitoring the CPU usage of one of their processes in the Performance Monitor tool, and they got a pretty graph and this summary:

Average:   271,828   Minimum:     0,000   Maximum:  3.141,592
Scale Counter Instance Parent Object Computer
0,1 % Processor Time myapp Process \\MYPC

What did the process consume 271828 of? What does this number mean in the context of percent processor time?

FIrst thing to notice is that the comma is a decimal separator, not a thousands separator. You see a clue there in the Scale column, where it says “0,1”. Also in the Maximum, where it says “3.141,592”, where the period after the “3” makes no sense if the comma were a decimal separator. Nope, this information is displayed according to a locale where the comma is the decimal separator and the period is the thousands separator.

Okay, so that unwraps one layer of the onion. We were misreading the value. It’s actually 271.828. But 271.828 what?

The next clue is that Scale. It is set to 0.1, which means that the displayed value is tenths of a unit. So you didn’t consume 271.828 units, but rather 271.828 tenths of a unit, or 27.1828 units.

The next clue is that the value itself is called % Processor Time, which tells you that that it is reporting in percentage of processor time.

Therefore, this process consumed 27% of a processor on average during the period under measurement. The maximum was 3141.592 × 0.1 = 314.1592 percent of a processor. In other words, during its peak, the process used the equivalent of 3.14 processors. (One can infer, then, that this system has at least four processors.)

To get to the final answer, we had to go through three layers:

  1. Parse the value correctly.
  2. Adjust for the scale factor.
  3. Interpret the value as a percentage.

Related: When I try to calculate a performance counter manually, the answer is off by a factor of 100.