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 |
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 |
Provides the performance data from the specified counter. |
|
2 |
System.Performance.OptimizedCollectionFilter |
Filters the incoming performance data based on the specified configuration parameters. |
Related Modules
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 |
|
InputType |
None |
Output Type |
|
Implementation |
Composite |
Library |
System.Performance.Library |