SSAS 2012: Collect Processing Pool I/O Job Queue Length

Microsoft.SQLServer.2012.AnalysisServices.PerformanceRule.Instance.ProcessingPoolIOJobQueueLength (Rule)

The rule collects the length of the SSAS processing pool I/O job queue.

Knowledge Base article:

Summary

The rule collects the length of the SSAS processing pool I/O job queue. This allows administrators to detect if queued I/O operations are impacting server performance negatively.

External

TechNet documentation for SSAS Performance Counters

SSAS Multidimensional Performance Guide

Element properties:

TargetMicrosoft.SQLServer.2012.AnalysisServices.Instance
CategoryPerformanceCollection
EnabledTrue
Alert GenerateFalse
RemotableTrue

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.SQLServer.2012.AnalysisServices.DataSource.ScheduledPerfomanceDataProvider Microsoft.SQLServer.2012.AnalysisServices.RunAsProfile.ASMonitoring
Mapper ConditionDetection System.Performance.DataGenericMapper Default
WriteToDatabase WriteAction Microsoft.SystemCenter.CollectPerformanceData Microsoft.SQLServer.2012.AnalysisServices.RunAsProfile.ASMonitoring
WriteToDW WriteAction Microsoft.SystemCenter.DataWarehouse.PublishPerformanceData Microsoft.SQLServer.2012.AnalysisServices.RunAsProfile.ASMonitoring

Source Code:

<Rule ID="Microsoft.SQLServer.2012.AnalysisServices.PerformanceRule.Instance.ProcessingPoolIOJobQueueLength" Enabled="true" Target="SQLAS!Microsoft.SQLServer.2012.AnalysisServices.Instance" ConfirmDelivery="false" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>PerformanceCollection</Category>
<DataSources>
<DataSource ID="DS" TypeID="Microsoft.SQLServer.2012.AnalysisServices.DataSource.ScheduledPerfomanceDataProvider" RunAs="SQLAS!Microsoft.SQLServer.2012.AnalysisServices.RunAsProfile.ASMonitoring">
<PrincipalName>$Target/Host/Property[Type='Windows!Microsoft.Windows.Computer']/PrincipalName$</PrincipalName>
<PerformanceCounterObjectName>$Target/Property[Type='SQLAS!Microsoft.SQLServer.2012.AnalysisServices.Instance']/PerformanceCounterObject$:Threads</PerformanceCounterObjectName>
<PerformanceCounterName>Processing pool I/O job queue length</PerformanceCounterName>
<PerformanceCounterInstanceName/>
<Divider>1</Divider>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
</DataSource>
</DataSources>
<ConditionDetection ID="Mapper" TypeID="SystemPerf!System.Performance.DataGenericMapper">
<ObjectName>SSAS Instance</ObjectName>
<CounterName>Processing pool I/O job queue length</CounterName>
<InstanceName>$Target/Property[Type="SQLAS!Microsoft.SQLServer.2012.AnalysisServices.ServerRole"]/InstanceName$</InstanceName>
<Value>$Data/Property[@Name='Processing pool I/O job queue length']$</Value>
</ConditionDetection>
<WriteActions>
<WriteAction ID="WriteToDatabase" TypeID="SC!Microsoft.SystemCenter.CollectPerformanceData" RunAs="SQLAS!Microsoft.SQLServer.2012.AnalysisServices.RunAsProfile.ASMonitoring"/>
<WriteAction ID="WriteToDW" TypeID="SCDW!Microsoft.SystemCenter.DataWarehouse.PublishPerformanceData" RunAs="SQLAS!Microsoft.SQLServer.2012.AnalysisServices.RunAsProfile.ASMonitoring"/>
</WriteActions>
</Rule>