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:
- Parse the value correctly.
- Adjust for the scale factor.
- 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.
You’re so wrong. Perfmon use scale only when it comes to graph lines or other graph types. Avg, min, max value are absolute. You can set any scale in perfmon, but it’ll have no affect on this numbers, just change where line will be on Y-axis.
I assume the numbers above were fabricated, and are just shown as an example. It would be too much of a coincidence for them to be multiples of e and pi.
Pretty much every number Raymond uses in all of his posts are derived from e, pi, or √2. He’s been using them as his example ticket numbers and the like for a very long time.
It’s a handy way to say “This is a fake number, for demonstration purposes only,” when I want to anonymize data.