### Calculations for Raw Counter Data

This section lists the types of performance counters and the calculations that the Performance Monitor uses to convert the raw data to the information you would expect from the counter name. The counter types and calculations are defined in winperf.h. For the calculations, the following key applies:

Symbol | Symbol Definition
N | Numerator
D | Denominator
TB | Time base (indicates the units of raw data if not used in calculation)
B | Base count (number of entries)
N0 | Oldest or first sample taken (of the numerator in this case; D0 would be of the denominator)
N1 | More recent sample
Nx | Most recent sample in calculation array (for average calculation)

##### PERF_100NSEC_MULTI_TIMER

Timer for when multiple instances are in use, so the result can exceed 100%. The number of instances is in the next counter.

Element | Value
Numerator | CounterData
Denominator | 100NsTime
Time base | 100Ns
Calculation | (N1-N0)/(D1-D0)
Average function | (Nx-N0)/(Dx-D0)

##### PERF_100NSEC_MULTI_TIMER_INV

The inverse of the timer for multiple instances (when the object is not in use).

Element | Value
Numerator | CounterData
Denominator | 100NsTime
Time base | 100Ns
Calculation | (B-((N1-N0)/(D1-D0)))
Average function | (B-((Nx-N0)/(Dx-D0)))

##### PERF_100NSEC_TIMER

Timer for when the object is in use.

Element | Value
Numerator | CounterData
Denominator | 100NsTime
Time base | 100Ns
Calculation | (N1-N0)/(D1-D0)
Average function | (Nx-N0)/(Dx-D0)

##### PERF_100NSEC_TIMER_INV

The inverse of the timer (when the object is not in use).

Element | Value
Numerator | CounterData
Denominator | 100NsTime
Time base | 100Ns
Calculation | (1-((N1-N0)/(D1-D0)))
Average function | (1-((Nx-N0)/(Dx-D0)))

##### PERF_AVERAGE_BASE

Used as the denominator in the computation of time or count averages.

Element | Value
Numerator | N/A
Denominator | N/A
Time base | N/A
Calculation | N/A
Average function | N/A

##### PERF_AVERAGE_BULK

A count which usually gives the bytes per operation when divided by the number of operations.

Element | Value
Numerator | CounterData
Denominator | BaseData
Time base | N/A
Calculation | (N1-N0)/(D1-D0)
Average function | (Nx-N0)/(Dx-D0)

##### PERF_AVERAGE_TIMER

A timer which usually gives time per operation when divided by the number of operations.

Element | Value
Numerator | CounterData
Denominator | BaseData
Time base | PerfFreq
Calculation | ((N1-N0)/TB)/(D1-D0)
Average function | ((Nx-N0)/TB)/(Dx-D0)

##### PERF_COUNTER_BULK_COUNT

Used to count byte transmission rates.

Element | Value
Numerator | CounterData
Denominator | PerfTime
Time base | PerfFreq
Calculation | (N1-N0)/((D1-D0)/TB)
Average function | (Nx-N0)/((Dx-D0)/TB)

##### PERF_COUNTER_COUNTER

Rate of counts. The most common counter.

Element | Value
Numerator | CounterData
Denominator | PerfTime
Time base | PerfFreq
Calculation | (N1-N0)/((D1-D0)/TB)
Average function | (Nx-N0)/((Dx-D0)/TB)

##### PERF_COUNTER_DELTA

Difference between two counters.

Element | Value
Numerator | CounterData
Denominator | N/A
Time base | N/A
Calculation | (N1-N0)
Average function | (Nx-N0)/x

##### PERF_COUNTER_LARGE_DELTA

Difference between two counters.

Element | Value
Numerator | CounterData
Denominator | N/A
Time base | N/A
Calculation | (N1-N0)
Average function | (Nx-N0)/x

##### PERF_COUNTER_LARGE_QUEUELEN_TYPE

Average count per time interval.

Element | Value
Numerator | CounterData
Denominator | PerfTime
Time base | PerfFreq
Calculation | (N1-N0)/(D1-D0)
Average function | (Nx-N0)/(Dx-D0)

##### PERF_COUNTER_LARGE_RAWCOUNT

Instantaneous counter value.

Element | Value
Numerator | CounterData
Denominator | N/A
Time base | N/A
Calculation | (N0)
Average function | SUM(N)/x

##### PERF_COUNTER_LARGE_RAWCOUNT_HEX

Instantaneous counter value, as a hexadecimal number.

Element | Value
Numerator | CounterData
Denominator | N/A
Time base | N/A
Calculation | (N0)
Average function | SUM(N)/x

##### PERF_COUNTER_MULTI_BASE

Base for MULTI counters.

Element | Value
Numerator | N/A
Denominator | N/A
Time base | N/A
Calculation | N/A
Average function | N/A

##### PERF_COUNTER_MULTI_TIMER

Timer for when multiple instances are in use, so the result can exceed 100%. The number of instances is in the next counter.

Element | Value
Numerator | CounterData
Denominator | PerfTime
Time base | PerfFreq
Calculation | (N1-N0)/(D1-D0)
Average function | (Nx-N0)/(Dx-D0)

##### PERF_COUNTER_MULTI_TIMER_INV

The inverse of the timer for multiple instances (when the object is not in use).

Element | Value
Numerator | CounterData
Denominator | PerfTime
Time base | PerfFreq
Calculation | (B-((N1-N0)/(D1-D0)))
Average function | (B-((Nx-N0)/(Dx-D0)))

##### PERF_COUNTER_NODATA

There is no data for this counter.

Element | Value
Numerator | 0
Denominator | N/A
Time base | N/A
Calculation | 0
Average function | 0

##### PERF_COUNTER_QUEUELEN_TYPE

Average count per time interval.

Element | Value
Numerator | CounterData
Denominator | PerfTime
Time base | PerfFreq
Calculation | (N1-N0)/(D1-D0)
Average function | (Nx-N0)/(Dx-D0)

##### PERF_COUNTER_RAWCOUNT

Instantaneous counter value.

Element | Value
Numerator | CounterData
Denominator | N/A
Time base | N/A
Calculation | (N0)
Average function | SUM(N)/x

##### PERF_COUNTER_RAWCOUNT_HEX

Instantaneous counter value, as a hexadecimal number.

Element | Value
Numerator | CounterData
Denominator | N/A
Time base | N/A
Calculation | (N0)
Average function | SUM(N)/x

##### PERF_COUNTER_TEXT

Indicates the data is not a counter, but is Unicode text.

Element | Value
Numerator | N/A
Denominator | N/A
Time base | N/A
Calculation | N/A
Average function | N/A

##### PERF_COUNTER_TIMER

The most common timer.

Element | Value
Numerator | CounterData
Denominator | PerfTime
Time base | PerfFreq
Calculation | (N1-N0)/(D1-D0)
Average function | (Nx-N0)/(Dx-D0)

##### PERF_COUNTER_TIMER_INV

The inverse of the timer (when the object is not in use).

Element | Value
Numerator | CounterData
Denominator | PerfTime
Time base | PerfFreq
Calculation | (1-((N1-N0)/(D1-D0)))
Average function | (1-((Nx-N0)/(Dx-D0)))

##### PERF_ELAPSED_TIME

The data is the start time of the item being measured. For display, subtract the start time from the snapshot time to yield the elapsed time. The PerfTime member of the PERF_OBJECT_TYPE structure contains the sample time. Use the PerfFreq member of the PERF_OBJECT_TYPE structure to convert the time into seconds.

Element | Value
Numerator | CounterData
Denominator | ObjectTime
Time base | ObjectFreq
Calculation | (D0-N0)/TB
Average function | (Dx-N0)/TB

##### PERF_RAW_BASE

Used as a base. Check that this value is greater than zero before dividing.

Element | Value
Numerator | N/A
Denominator | N/A
Time base | N/A
Calculation | N/A
Average function | N/A

##### PERF_RAW_FRACTION

Instantaneous value, to be divided by the base.

Element | Value
Numerator | CounterData
Denominator | BaseData
Time base | N/A
Calculation | (N0/D0)
Average function | SUM(N/D)/x

##### PERF_SAMPLE_BASE

Used as a base. Check that this value is greater than zero before dividing.

Element | Value
Numerator | N/A
Denominator | N/A
Time base | N/A
Calculation | N/A
Average function | N/A

##### PERF_SAMPLE_COUNTER

A count that is sampled on each sampling interrupt. Must be divided by the base.

Element | Value
Numerator | CounterData
Denominator | PerfTime
Time base | PerfFreq
Calculation | (N1-N0)/((D1-D0)/TB)
Average function | (Nx-N0)/((Dx-D0)/TB)

##### PERF_SAMPLE_FRACTION

A count that is either 1 or 0 on each sampling interrupt.

Element | Value
Numerator | CounterData
Denominator | BaseData
Time base | N/A
Calculation | (N1-N0)/(D1-D0)
Average function | (Nx-N0)/(Dx-D0)