---
title: "Windows Perfmon"
description: ""
url: "https://docs.itrsgroup.com/docs/geneos/7.11.0/collection/windows-perfmon/index.html"
---
## Introduction

Geneos PERFMON Plug-in brings Windows Performance seamlessly and in real-time into the Geneos 'world'. These parameters become fully Geneos manageable.

In addition to translating Windows Performance parameters into native variables, Geneos PERFMON Knowledge Module enables effective monitoring by providing a 'value added' layer. This layer is based on defining a number of user configurable templates that define mapping of the Windows Performance parameters.

This additional layer provides the following benefits:

- Hide Windows Performance variables organisational complexity - ability to concentrate on the key parameters to manage.
- Remove Windows version dependency. The names and hierarchical positions of the Windows Performance parameters vary between different versions of Windows.

## Views

PERFMON Plug-in allows great flexibility in the way views can be defined. Each instance of the PERFMON Plug-in will create a single view with a title as per the name provided in the SamplerList. Multiple PERFMON samplers can be processed by the same netprobe in order to obtain a full range of parameters.

### View

![windows-perfmon2](https://docscdn.itrsgroup.com/geneos/images/netprobe/system-images/image2_geneos_-_windows_perfmon_plug-in.png)

![windows-perfmon3](https://docscdn.itrsgroup.com/geneos/images/netprobe/system-images/image3_geneos_-_windows_perfmon_plug-in.png)

## Plug-in Configuration

The following parameters can be configured for this plug-in. For object ID and counter ID parameters, it has been observed that numeric ID values for these parameter may not always be resolved by the native Windows Performance Data Helper APIs used by the PERFMON Plug-in. In such cases, it is advisable to use the corresponding text strings for the object and counter IDs over the numeric ID values.

### template

The template specifies the contents that are used to populate a view.

The [template > headlineVariables](#template--headlinevariables) section is used to specify view headline variables. This section is optional.

The table is specified either by the [template > tableDefinition](#template--tabledefinition) section or the [template > records](#template--records) section. (Only one of the 2 sections may be specified.)

In order to construct a template, the full list of the PerfMon variables can be displayed. See [Viewing Complete Set of Windows Performance Parameters](#view-the-complete-set-of-windows-performance-parameters).

Mandatory: Yes

### template > headlineVariables

The variables are defined in terms of objected, instance and counterID.

For example:

```
headlineVariables
        headlineVariable
                name: connectionsEstablished
                objectID: 638
                instance: -
                counterID: 642
        headlineVariable
                name: connectionsFailures
                objectID: 638
                instance: -
                counterID: 648
```

Mandatory: No

### template > headlineVariables > headlineVariable > name

The name of the headline variable to create

Mandatory: Yes if a headline has been defined

### template > headlineVariables > headlineVariable > objectID

The performance object to query. This can be entered as a text string or a numeric ID

Mandatory: Yes if a headline has been defined

### template > headlineVariables > headlineVariable > instance

The instance of the object to query. If this is not applicable then this should be '-'

Mandatory: Yes if a headline has been defined

### template > headlineVariables > headlineVariable > counterID

The counter of the object to query. This can be entered as a text string or a numeric ID

Mandatory: Yes if a headline has been defined

### template > headlines

Deprecated: see [template > headlineVariables](#template--headlinevariables).

The variables are defined in terms of objected, instance and counterID.

For example:

```
headlines
        headline
                name: connectionsEstablished
                objectID: 638
                instance: -
                counterID: 642
        headline
                name: connectionsFailures
                objectID: 638
                instance: -
                counterID: 648
```

Mandatory: No

### template > headlines > headline > name

Deprecated: see [template > headlineVariables](#template--headlinevariables).

The name of the headline variable to create

Mandatory: Yes if a headline has been defined

### template > headlines > headline > objectID

Deprecated: see [template > headlineVariables](#template--headlinevariables).

The performance object to query. This can be entered as a text string or a numeric ID

Mandatory: Yes if a headline has been defined

### template > headlines > headline > instance

Deprecated: see [template > headlineVariables](#template--headlinevariables).

The instance of the object to query. If this is not applicable then this should be '-'

Mandatory: Yes if a headline has been defined

### template > headlines > headline > counterID

Deprecated: see [template > headlineVariables](#template--headlinevariables).

The counter of the object to query. This can be entered as a text string or a numeric ID

Mandatory: Yes if a headline has been defined

### template > tableDefinition

This section constructs a table in the view. This is useful for a set of variables that has instances, so that each instance can be represented as a table row and the counters are represented as table columns.

When instances are specified, only the instances that match the tokens in the list are shown. By default all instances are shown.

For example:

```
tableDefinition
        objectID: 230
        instances
                instance: lemmy
                instance: CMD
        counters
                counter
                        name: handleCount
                        value: Handle Count
                counter
                        name: privTime
                        value: 952
```

Mandatory: Yes if a table has been defined

### template > tableDefinition > objectID

The performance object to query for the contents of this table. This can be entered as a text string or a numeric ID

Mandatory: Yes if a table has been defined and objectRegularExpression has not.

### template > tableDefinition > objectRegularExpression


**Geneos PCRE2 upgrade**

 Beginning with version 7.3.x, Geneos now uses `PCRE2 10.44` by default, upgrading from `PCRE 8.44` for improved handling of regular expressions. Please be aware that this may introduce breaking changes to your implementation. For more information about the differences, refer to the [PCRE2 documentation](https://www.pcre.org/current/doc/html/pcre2compat.html). 


A regular expression used to find performance objects to query for the contents of this table. The plug-in will attempt to retrieve values for every object the expression matches against along with the instance and counter definitions that follow.

If the regular expression contains the named capture group "OBJ" then the captured text will be used as a prefix to any instances. Note that OBJ must be in uppercase.

Examples:

<div class="table-container">
<table class="legacy-table"   style="margin-left: 0;margin-right: auto;width: 100%;mc-table-style: url('../Resources/TableStyles/ref_2_col_table.css');" cellspacing="0">
                        <col width="29%" class="TableStyle-ref_2_col_table-Column-Column1"/>
                        <col width="71%" class="TableStyle-ref_2_col_table-Column-Column1"/>
                        <thead>
                            <tr class="TableStyle-ref_2_col_table-Head-Header1">
                                <th class="TableStyle-ref_2_col_table-HeadE-Column1-Header1"><strong>Expression</strong>
                                </th>
                                <th class="TableStyle-ref_2_col_table-HeadD-Column1-Header1"><strong>Result</strong>
                                </th>
                            </tr>
                        </thead>
                        <tbody valign="top">
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>process</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">Matches all objects that contain the word
 process.</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyB-Column1-Body1"><strong>^MyApp_(?&lt;OBJ&gt;[\w_-]+)</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyA-Column1-Body1">Matches all objects starting with MyApp_
 followed by some identifying text.</td>
                            </tr>
                        </tbody>
                    </table>
                    
</div>

The regular expression modifier **i** can be used to make the pattern case insensitive. The modifier **s** applies to multiline regular expressions and does not apply in this case.

Using the example above the objects MyApp\_One, MyApp\_Two and MyApp\_Three with instances alpha, beta and gamma will result in rows

<div class="table-container">
<table class="legacy-table"   style="margin-left: 0;margin-right: auto;width: 100%;mc-table-style: url('../Resources/TableStyles/ref_2_col_table.css');" cellspacing="0">
                        <col width="57%" class="TableStyle-ref_2_col_table-Column-Column1"/>
                        <col width="43%" class="TableStyle-ref_2_col_table-Column-Column1"/>
                        <tbody valign="top">
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>Instance</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1"><strong>counters</strong>
                                </td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>One - alpha</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">...</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>One - beta</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">...</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>One - gamma</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">...</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>Two - alpha</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">...</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>Two - beta</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">...</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>Two - gamma</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">...</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>Three - alpha</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">...</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>Three - beta</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">...</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyB-Column1-Body1"><strong>Three - gamma</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyA-Column1-Body1">...</td>
                            </tr>
                        </tbody>
                    </table>
                    
</div>

Where no OBJ named regular expression is found the instance names alone are used. This could lead to non-unique row names.

<div class="table-container">
<table class="legacy-table"   style="margin-left: 0;margin-right: auto;width: 100%;mc-table-style: url('../Resources/TableStyles/ref_2_col_table.css');" cellspacing="0">
                        <col style="width: 50%;" class="TableStyle-ref_2_col_table-Column-Column1"/>
                        <col style="width: 50%;" class="TableStyle-ref_2_col_table-Column-Column1"/>
                        <tbody valign="top">
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>Instance</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1"><strong>counters</strong>
                                </td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>alpha</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">...</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>beta</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">...</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>gamma</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">...</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>alpha</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">...</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>beta</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">...</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>gamma</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">...</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>alpha</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">...</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>beta</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">...</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyB-Column1-Body1"><strong>gamma</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyA-Column1-Body1">...</td>
                            </tr>
                        </tbody>
                    </table>
                    
</div>

Where there are objects with no instances the extracted name OBJ name of the object is used.

<div class="table-container">
<table class="legacy-table"   style="margin-left: 0;margin-right: auto;width: 100%;mc-table-style: url('../Resources/TableStyles/ref_2_col_table.css');" cellspacing="0">
                        <col style="width: 50%;" class="TableStyle-ref_2_col_table-Column-Column1"/>
                        <col style="width: 50%;" class="TableStyle-ref_2_col_table-Column-Column1"/>
                        <tbody valign="top">
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>Instance</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1"><strong>Counters</strong>
                                </td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>One</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">...</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>Two</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">...</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyB-Column1-Body1"><strong>Three</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyA-Column1-Body1">...</td>
                            </tr>
                        </tbody>
                    </table>
                    
</div>

Alternatively if the OBJ is not defined the full object name is used.

<div class="table-container">
<table class="legacy-table"   style="margin-left: 0;margin-right: auto;width: 100%;mc-table-style: url('../Resources/TableStyles/ref_2_col_table.css');" cellspacing="0">
                        <col width="64%" class="TableStyle-ref_2_col_table-Column-Column1"/>
                        <col width="36%" class="TableStyle-ref_2_col_table-Column-Column1"/>
                        <tbody valign="top">
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>Instance</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1"><strong>counters</strong>
                                </td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>MyApp_One - alpha</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">...</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>MyApp_One - beta</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">...</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>MyApp_One - gamma</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">...</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>MyApp_Two - alpha</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">...</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>MyApp_Two - beta</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">...</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>MyApp_Two - gamma</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">...</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>MyApp_Three - alpha</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">...</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1"><strong>MyApp_Three - beta</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">...</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyB-Column1-Body1"><strong>MyApp_Three - gamma</strong>
                                </td>
                                <td class="TableStyle-ref_2_col_table-BodyA-Column1-Body1">...</td>
                            </tr>
                        </tbody>
                    </table>
                    
</div>

Mandatory: Yes if a table has been defined and objectID has not.

### template > tableDefinition > instances

The instances to show in the table. Each instance of the object represents a row in the GENEOS table.

 Mandatory: Yes

 Default: If not specified then all the instances are shown

### template > tableDefinition > counters

The counters to show in the table. Each counter is
 composed of a name, to be used as the GENEOS column
 name, and a counterID that specifies the Perfmon
 counter. The counterID can be entered as a text string
 or a numeric ID

Mandatory: Yes if a table has been defined

### template > table

Deprecated: see [template > tableDefinition](#template--tabledefinition).

This section constructs a table in the view. This is
 useful for as set of variables that have instances, so
 that each instance can be represented as a table row
 and the counters are represented as table columns.

When instances are specified, only the instances that match the tokens in the list are shown. By default all instances are shown.

For example:

```
table
        objectID: 230
        instances
                instance: lemmy
                instance: CMD
        counters
                counter
                        name: handleCount
                        value: Handle Count
                counter
                        name: privTime
                        value: 952
```

Mandatory: Yes if a table has been defined

### template > table > objectID

Deprecated: see [template > tableDefinition](#template--tabledefinition).

The performance object to query for the contents of this table. This can be entered as a text string or a numeric ID

Mandatory: Yes if a table has been defined

### template > table > instances

Deprecated: see [template > tableDefinition](#template--tabledefinition).

The instances to show in the table. Each instance of the object represents a row in the GENEOS table.

 Mandatory: Yes

 Default: If not specified then all the instances are shown

### template > table > counters

Deprecated: see [template > tableDefinition](#template--tabledefinition).

The counters to show in the table. Each counter is composed of a name, to be used as the GENEOS column name, and a counterID that specifies the Perfmon counter. The counterID can be entered as a text string or a numeric ID

Mandatory: Yes if a table has been defined

### template > items

This section constructs a list of record in the view. This should be used when the names of the items to monitor are known at the time the template is created. This section is similar to the [template > headlineVariables](#template--headlinevariables). Each record will be represented as a single row in the view. A view with 2 columns will be produced. The column called parameterName will be populated with the names specified in the [template > items > item > name](#template--items--item--name). The monitored data will be displayed in a column called value.

For example:

```
items
        item
                name: bytesReceived/sec
                objectID: 510
                instance: VIA Rhine II Fast Ethernet Adapter
                counterID: 264
        item
                name: outputQueueLength
                objectID: 510
                instance: VIA Rhine II Fast Ethernet Adapter
                counterID: 544
```

Mandatory: No

### template > items > item > name

The name of the row to be created for the record

Mandatory: Yes if a record has been defined

### template > items > item > objectID

The performance object to query. This can be entered
 as a text string or a numeric ID

Mandatory: Yes if a record has been defined

### template > items > item > instance

The instance of the object to query. If this is not
 applicable then this should be '-'

Mandatory: Yes if a record has been defined

### template > items > item > counterID

The counter of the object to query. This can be
 entered as a text string or a numeric ID

Mandatory: Yes if a record has been defined

### template > records

Deprecated: see [template > items](#template--items).

This section constructs a list of record in the view. This should be used when the names of the items to monitor are known at the time the template is created. This section is similar to the [*headlines section*](#template--headlines). Each record will be represented as a single row in the view. A view with 2 columns will be produced. The column called parameterName will be populated with the names specified in the [template > records > record > name](#template--records--record--name). The monitored data will be
 displayed in a column called value.

For example:

```
records
        record
                name: bytesReceived/sec
                objectID: 510
                instance: VIA Rhine II Fast Ethernet Adapter
                counterID: 264
        record
                name: outputQueueLength
                objectID: 510
                instance: VIA Rhine II Fast Ethernet Adapter
                counterID: 544
```

Mandatory: No

### template > records > record > name

Deprecated: see [template > items](#template--items).

The name of the row to be created for the record

Mandatory: Yes if a record has been defined

### template > records > record > objectID

Deprecated: see [template > items](#template--items).

The performance object to query. This can be entered as a text string or a numeric ID

Mandatory: Yes if a record has been defined

### template > records > record > instance

Deprecated: see [template > items](#template--items).

The instance of the object to query. If this is not applicable then this should be '-'

Mandatory: Yes if a record has been defined

### template > records > record > counterID

Deprecated: see [template > items](#template--items).

The counter of the object to query. This can be entered as a text string or a numeric ID

Mandatory: Yes if a record has been defined

### languageID

Deprecated on Windows Vista / Windows 2008 and upwards.

The name of the section in the registery section HKEY\_LOCAL\_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib to read for initialisation data.

 Mandatory: No

 Default: 009

### objectRefreshThreshold

This setting determines the number of samples after which the system will be queried to discover if there are new objects and or instances of objects.

Doing this periodically is less CPU-intensive than continually querying each sample.

When set to `0`, the plug-in does not query for new objects or instances of objects throughout its running time, and instead uses objects it initially discovers when it starts.

 Mandatory: No

 Default: 0

### private

The private configuration section holds settings used for debugging the plug-in. Please contact ITRS support if you require assistance with this plug-in.

## View the complete set of Windows Performance Parameters

A facility to display the complete set of the available Windows Performance Parameters is used to help designing the View Templates. On Windows, the metric is available either through Perfmon counters or the Windows Management Instruments (WMI) classes. To see which Perfmon counters are accessible to the Netprobe:

1. In the command prompt, open the Netprobe install folder.
2. Run the Netprobe with `-perf` switch and redirect the output to a file:
```
NetprobeNT.exe -perf > perfmon.txt
```

3. Change the filename extension if you are using a different one.

This saves all the Perfmon counters in the `perfmon.txt` file. Also, this file contains the complete list of
 all the Windows Performance parameters.

To monitor the virtual memory on a Windows machine, you can use and modify the example XML:

```
<sampler name="Vantage Virtual Mem Test">
   <plugin>
     <perfmon>
       <template>
         <tableDefinition>
           <objectID>
             <data>230</data>
           </objectID>
           <instances>
           <instance>
             <data>_Total</data>
           </instance>
           </instances>
           <counters>
           <counter>
             <name>
               <data>Process ID</data>
             </name>
             <value>
         <data>784</data>
       </value>
     </counter>
           <counter>
            <name>
         <data>VirtualMemory size(Bytes</data>
       </name>
       <value>
  <data>186</data>
       </value>
     </counter>
     </counters>
         </tableDefinition>
       </template>
     </perfmon>
   </plugin>
</sampler>
```

For debugging purposes, it is now possible to change how the `perf` data is collected before being displayed. The environment variable `PERF_TYPE` can be set to `PDH` or `REGISTRY`.


**Note**

  Windows Vista and Server 2008 cannot use the REGISTRY setting, any attempt to do so defaults to `PDH`.



The `PERF_TYPE` defaults to `PDH` for Windows Vista /Server 2008 and higher, and the Registry for Windows XP and lower if the environment variable is not set.


**Note**

  The Netprobe on Windows Vista and above uses a different mechanism for getting the perf data. On a few counters the ID is shown as 0. If you want to use these counters, you need to use the counter name instead.



## Error Description

The following error messages are displayed in a cell and/or headline when errors are encountered in getting their values.

<div class="table-container">
<table class="legacy-table"   style="margin-left: 0;margin-right: auto;width: 100%;mc-table-style: url('../Resources/TableStyles/ref_2_col_table.css');" cellspacing="0">
                        <col style="width: 50%;" class="TableStyle-ref_2_col_table-Column-Column1"/>
                        <col style="width: 50%;" class="TableStyle-ref_2_col_table-Column-Column1"/>
                        <thead valign="bottom">
                            <tr class="TableStyle-ref_2_col_table-Head-Header1">
                                <th class="TableStyle-ref_2_col_table-HeadE-Column1-Header1">Error</th>
                                <th class="TableStyle-ref_2_col_table-HeadD-Column1-Header1">Description</th>
                            </tr>
                        </thead>
                        <tbody valign="top">
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1">Invalid counter</td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">The counter of the object is invalid. Check if
 the counter is configured correctly and if it is a
 valid counter for the object being queried.</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyE-Column1-Body1">Invalid data</td>
                                <td class="TableStyle-ref_2_col_table-BodyD-Column1-Body1">The instance of the object does not exist.
 Check if the instance is a valid instance for the
 object being queried.</td>
                            </tr>
                            <tr class="TableStyle-ref_2_col_table-Body-Body1">
                                <td class="TableStyle-ref_2_col_table-BodyB-Column1-Body1">Unable to get formatted value for counter.</td>
                                <td class="TableStyle-ref_2_col_table-BodyA-Column1-Body1">This error can occur because of either a bug in
 the provider or an overflow of values in data
 storage. You can ignore this return value and
 re-sample to get the new values.</td>
                            </tr>
                        </tbody>
                    </table>
                
</div>


