Share via


System.Performance.OptimizedDataProvider

Applies To: Operations Manager 2007 R2

The System.Performance.OptimizedDataProvider is a data source module type that outputs Windows performance data as System.Performance.Data data on a timed interval.

Usage

Use this module type to output either optimized or unoptimized data. Unoptimized data results in a performance data item being returned once every specified polling interval. Optimized data results in a performance data item being returned only when the value delta has changed by the specified tolerance amount.

Type Definition

<DataSourceModuleType ID="System.Performance.OptimizedDataProvider" Accessibility="Public">
  <Configuration>
    <xsd:element minOccurs="0" maxOccurs="1" name="ComputerName" type="xsd:string" />
    <xsd:element minOccurs="1" maxOccurs="1" name="CounterName" type="xsd:string" />
    <xsd:element minOccurs="1" maxOccurs="1" name="ObjectName" type="xsd:string" />
    <xsd:element minOccurs="1" maxOccurs="1" name="InstanceName" type="xsd:string" />
    <xsd:element name="AllInstances" type="xsd:boolean" minOccurs="0" maxOccurs="1" />
    <xsd:element name="Frequency" type="xsd:unsignedInt" />
    <xsd:element name="ScaleBy" type="xsd:double" minOccurs="0" maxOccurs="1" />
    <xsd:element minOccurs="1" maxOccurs="1" name="Tolerance" type="xsd:double" />
    <xsd:element minOccurs="0" maxOccurs="1" name="ToleranceType">
      <xsd:simpleType>
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="Absolute" />
          <xsd:enumeration value="Percentage" />
        </xsd:restriction>
      </xsd:simpleType>
    </xsd:element>
    <xsd:element minOccurs="1" maxOccurs="1" name="MaximumSampleSeparation" type="xsd:unsignedInt" />
  </Configuration>
  <OverrideableParameters>
    <OverrideableParameter ID="Frequency" ParameterType="int" Selector="$Config/Frequency$" />
    <OverrideableParameter ID="Tolerance" ParameterType="double" Selector="$Config/Tolerance$" />
    <OverrideableParameter ID="MaximumSampleSeparation" ParameterType="int" Selector="$Config/MaximumSampleSeparation$" />
  </OverrideableParameters>
  <ModuleImplementation>
    <Composite>
      <MemberModules>
        <DataSource TypeID="System.Performance.DataProvider" ID="DataSource">
          <ComputerName>$Config/ComputerName$</ComputerName>
          <CounterName>$Config/CounterName$</CounterName>
          <ObjectName>$Config/ObjectName$</ObjectName>
          <InstanceName>$Config/InstanceName$</InstanceName>
          <AllInstances>$Config/AllInstances$</AllInstances>
          <Frequency>$Config/Frequency$</Frequency>
          <ScaleBy>$Config/ScaleBy$</ScaleBy>
        </DataSource>
        <ConditionDetection ID="OptimizedFilter" TypeID="System.Performance.OptimizedCollectionFilter">
          <Tolerance>$Config/Tolerance$</Tolerance>
          <ToleranceType>$Config/ToleranceType$</ToleranceType>
          <MaximumSampleSeparation>$Config/MaximumSampleSeparation$</MaximumSampleSeparation>
          <SamplingPeriodInSeconds>$Config/Frequency$</SamplingPeriodInSeconds>
        </ConditionDetection>
      </MemberModules>
      <Composition>
        <Node ID="OptimizedFilter">
          <Node ID="DataSource" />
        </Node>
      </Composition>
    </Composite>
  </ModuleImplementation>
  <OutputType>System.Performance.Data</OutputType>
</DataSourceModuleType>

Parameters

The System.Performance.OptimizedDataProvider supports the following configuration parameters:

Parameter Type Description

ComputerName

String

Optional parameter. Contains the name of the computer to collect performance data from.

CounterName

String

Required parameter. Specifies the name of the Windows performance counter.

ObjectName

String

Required parameter. Specifies the Windows performance object name.

InstanceName

String

Optional parameter. Contains the Windows performance instance, if applicable.

AllInstances

Boolean

Optional parameter. Defaults to false. Specifies whether to collect all instances for a multi-instance counter.

Frequency

Unsigned Integer

Required parameter. Specifies the interval in seconds between performance data collection. Data might not actually be output from the module on this frequency if optimization is being used.

ScaleBy

Double

Operations Manager 2007 R2 only. Optional parameter. Specifies the scale value of the raw performance counter value to make that value more readable. Defaults to 1.0.

Tolerance

Double

Required parameter. Specifies the delta change in value that causes a collection to happen.

ToleranceType

ToleranceType

Optional parameter. Specifies the type of value that is specified in the tolerance parameter. This value can be either “Absolute” or “Percentage”. Defaults to “Absolute”.

MaximumSampleSeparation

Unsigned Integer

Specifies the maximum separation between samples when using optimization.

For information about the ComputerName, CounterName, ObjectName, InstanceName, and AllInstances parameters, see System.Performance.DataProvider.

Optimization

The System.Performance.OptimizedDataProvider module type can output both optimized and unoptimized data. Unoptimized data results in a performance data item being returned once every specified polling interval. Use this when you want to collect every performance data value, regardless of whether the value has changed since the last polling interval.

To specify unoptimized collection, set the Tolerance parameter to 0 and set the MaximumSampleSeparation to 1. For example:

<ComputerName>$Target/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<CounterName>Available MBytes</CounterName>
<ObjectName>Memory</ObjectName>
<InstanceName />
<AllInstances>false</AllInstances>
<Frequency>120</Frequency>
<Tolerance>0</Tolerance>
<ToleranceType>Absolute</ToleranceType>
<MaximumSampleSeparation>1</MaximumSampleSeparation>

The recommended approach to performance collection is to use optimization to reduce the amount of data that is stored in the Operations Manager database and data warehouse. You do this by specifying a threshold (the tolerance) that causes a new data point to be collected. For example, if an absolute tolerance of 10 is specified, a new data item is not generated unless the new performance data differs in value by at least -10 or +10. The tolerance can be specified in absolute value or in a percentage change.

The MaximumSampleSeparation parameter is used to ensure that data is collected at least once in a given period of time. If a performance counter does not change for 24 hours, the module does not output a new data point, which might lead to issues in reporting. Specifying a value in this parameter forces the module to output a data point after a set number of samples, even if the tolerance has not met the criteria. The separation is expressed as a multiple of the frequency. For example, if the frequency is set to 120 seconds, and the MaximumSampleSeparation parameter is set to 20, a data item is output at least every 40 minutes.

The following configuration example shows an optimized configuration:

<ComputerName>$Target/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<CounterName>Available MBytes</CounterName>
<ObjectName>Memory</ObjectName>
<InstanceName />
<AllInstances>false</AllInstances>
<Frequency>120</Frequency>
<Tolerance>10</Tolerance>
<ToleranceType>Percentage</ToleranceType>
<MaximumSampleSeparation>20</MaximumSampleSeparation>

Composition

The System.Performance.OptimizedDataProvider module is a composite module that contains the following member modules:

Workflow Run Order Module Type Usage

1

System.Performance.DataProvider

Provides the performance data from the specified counter.

2

System.Performance.OptimizedCollectionFilter

Filters the incoming performance data based on the specified configuration parameters.

None.

External Module References

None.

Sample

The following code example shows an un-optimized performance collection rule. This rule collects a counter with a single instance on a 15-minute interval, and it writes the data to both the Operations Manager database and the data warehouse.

<Rule ID="Microsoft.Samples.CollectThreads" Target="Microsoft.Samples.ApplicationX">
  <Category>Custom</Category>
  <DataSources>
    <DataSource ID="DS" TypeID="Perf!System.Performance.OptimizedDataProvider">
      <ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
      <CounterName>Threads</CounterName>
      <ObjectName>System</ObjectName>
      <InstanceName />
      <AllInstances>false</AllInstances>
      <Frequency>900</Frequency>
      <Tolerance>0</Tolerance>
      <ToleranceType>Absolute</ToleranceType>
      <MaximumSampleSeparation>1</MaximumSampleSeparation>
    </DataSource>
  </DataSources>
  <WriteActions>
    <WriteAction ID="WriteToDB" TypeID="SC!Microsoft.SystemCenter.CollectPerformanceData" />
    <WriteAction ID="WriteToDW" TypeID="SCDW!Microsoft.SystemCenter.DataWarehouse.PublishPerformanceData" />
  </WriteActions>
</Rule>

The following example shows an optimized performance collection rule that collects a counter with multiple instances and optimizes the collection by using an absolute tolerance. The rule uses $Target properties to associate the collected values with a specific instance.

<Rule ID="Microsoft.Windows.Server.2003.LogicalDisk.FreeMB.Collection" Target="Microsoft.Windows.Server.2003.LogicalDisk">
  <Category>PerformanceCollection</Category>
  <DataSources>
    <DataSource ID="PerformanceDS" TypeID="SystemPerf!System.Performance.OptimizedDataProvider">
      <ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
      <CounterName>Free Megabytes</CounterName>
      <ObjectName>LogicalDisk</ObjectName>
      <InstanceName>$Target/Property[Type="Windows!Microsoft.Windows.LogicalDevice"]/DeviceID$</InstanceName>
      <AllInstances>false</AllInstances>
      <Frequency>300</Frequency>
      <Tolerance>100</Tolerance>
      <ToleranceType>Absolute</ToleranceType>
      <MaximumSampleSeparation>12</MaximumSampleSeparation>
    </DataSource>
  </DataSources>
  <WriteActions>
    <WriteAction ID="WriteToDB" TypeID="SC!Microsoft.SystemCenter.CollectPerformanceData" />
    <WriteAction ID="WriteToDW" TypeID="SCDW!Microsoft.SystemCenter.DataWarehouse.PublishPerformanceData" />
  </WriteActions>
</Rule>

Information

   

Module Type

DataSourceModuleType

InputType

None

Output Type

System.Performance.Data

Implementation

Composite

Library

System.Performance.Library