Affinity mask conflict rule

AK79929.AffinityMaskConflict (UnitMonitor)

Generate alert when "affinity mask" and "affinity io mask" conflicts.

Knowledge Base article:

External

http://go.microsoft.com/fwlink/?LinkId=199742

Element properties:

TargetMicrosoft.KnowledgeServices.SQLServer.DBEngine
Parent MonitorSystem.Health.ConfigurationState
CategoryConfigurationHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.KnowledgeServices.Library.ScriptMonitorEx
RemotableTrue
AccessibilityPublic
Alert Message
SQL Server configuration "affinity mask" and "affinity I/O mask" are in conflict and could result in performance problems

<Details>
<Content>The SQL Server configuration parameters "affinity mask" and "affinity I/O mask" conflict (or "affinity 64 mask" and " affinity 64 I/O mask"). This could result in a performance problem for SQL Server. Check these settings and ensure they do not conflict.</Content>
<CollectedInformation>
<Info>
<Name>affinity mask</Name>
<Value>{0}</Value>
</Info>
<Info>
<Name>affinity mask in use</Name>
<Value>{1}</Value>
</Info>
<Info>
<Name>affinity I/O mask</Name>
<Value>{2}</Value>
</Info>
<Info>
<Name>affinity I/O mask in use</Name>
<Value>{3}</Value>
</Info>
<Info>
<Name>affinity 64 mask</Name>
<Value>{4}</Value>
</Info>
<Info>
<Name>affinity 64 mask in use</Name>
<Value>{5}</Value>
</Info>
<Info>
<Name>affinity 64 I/O mask</Name>
<Value>{6}</Value>
</Info>
<Info>
<Name>affinity 64 I/O mask in use</Name>
<Value>{7}</Value>
</Info>
</CollectedInformation>
</Details>
RunAsDefault
CommentSupportTopic=SQL Server Performance\Other;VersionNumber=1.0.0.11;

Source Code:

<UnitMonitor ID="AK79929.AffinityMaskConflict" Comment="SupportTopic=SQL Server Performance\Other;VersionNumber=1.0.0.11;" Accessibility="Public" Enabled="true" Target="KnowledgeServicesSQLServerLibrary!Microsoft.KnowledgeServices.SQLServer.DBEngine" ParentMonitorID="Health!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="KnowledgeServicesLibrary!Microsoft.KnowledgeServices.Library.ScriptMonitorEx" ConfirmDelivery="true">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="AlertMessageIDcb17702395b04d4aa49b1c6daf5ccab9">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="KnowledgeServicesSQLServerLibrary!Microsoft.KnowledgeServices.SQLServer.DBEngine"]/AffinityMaskUncommittedValue$</AlertParameter1>
<AlertParameter2>$Target/Property[Type="KnowledgeServicesSQLServerLibrary!Microsoft.KnowledgeServices.SQLServer.DBEngine"]/AffinityMask$</AlertParameter2>
<AlertParameter3>$Target/Property[Type="KnowledgeServicesSQLServerLibrary!Microsoft.KnowledgeServices.SQLServer.DBEngine"]/AffinityIOMaskUncommittedValue$</AlertParameter3>
<AlertParameter4>$Target/Property[Type="KnowledgeServicesSQLServerLibrary!Microsoft.KnowledgeServices.SQLServer.DBEngine"]/AffinityIOMask$</AlertParameter4>
<AlertParameter5>$Target/Property[Type="KnowledgeServicesSQLServerLibrary!Microsoft.KnowledgeServices.SQLServer.DBEngine"]/Affinity64MaskUncommittedValue$</AlertParameter5>
<AlertParameter6>$Target/Property[Type="KnowledgeServicesSQLServerLibrary!Microsoft.KnowledgeServices.SQLServer.DBEngine"]/Affinity64Mask$</AlertParameter6>
<AlertParameter7>$Target/Property[Type="KnowledgeServicesSQLServerLibrary!Microsoft.KnowledgeServices.SQLServer.DBEngine"]/Affinity64IOMaskUncommittedValue$</AlertParameter7>
<AlertParameter8>$Target/Property[Type="KnowledgeServicesSQLServerLibrary!Microsoft.KnowledgeServices.SQLServer.DBEngine"]/Affinity64IOMask$</AlertParameter8>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="Success" HealthState="Success"/>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Error"/>
</OperationalStates>
<Configuration>
<ScriptName>AffinityMaskConflict.vbs</ScriptName>
<Arguments>$Target/Property[Type="KnowledgeServicesSQLServerLibrary!Microsoft.KnowledgeServices.SQLServer.DBEngine"]/AffinityMask$ $Target/Property[Type="KnowledgeServicesSQLServerLibrary!Microsoft.KnowledgeServices.SQLServer.DBEngine"]/AffinityIOMask$ $Target/Property[Type="KnowledgeServicesSQLServerLibrary!Microsoft.KnowledgeServices.SQLServer.DBEngine"]/Affinity64Mask$ $Target/Property[Type="KnowledgeServicesSQLServerLibrary!Microsoft.KnowledgeServices.SQLServer.DBEngine"]/Affinity64IOMask$</Arguments>
<ScriptBody><Script>
'#Include File:AffinityMaskConflict.vbs
' Copyright (c) Microsoft Corporation. All rights reserved.
' Parameters that should be passed to this script
' 0 affinityMask
' 1 affinity I\O Mask
' 2 affinity64 Mask
' 3 affinity64 I\O Mask

Option Explicit
SetLocale("en-us")

Dim oAPI, oBag
Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreatePropertyBag()

Dim oArgs
Set oArgs = WScript.Arguments

' We should have atleast 2 inputs. If not quit
If oArgs.Count &lt; 2 Then
Call oBag.AddValue("AffinityConflict", "0")
Call oAPI.Return(oBag)
Wscript.Quit()
End If

Dim affinityMask, affinityIOMask, affinity64Mask, affinity64IOMask
affinityMask = oArgs(0)
affinityIOMask = oArgs(1)

Dim affinityConflict
affinityConflict = 0
If (affinityMask And affinityIOMask) &lt;&gt; 0 Then
affinityConflict = 1
End If

' If we dont have a conflict, then check for 64bit values if they exist.
If (affinityConflict = 0) And (oArgs.Count = 4) Then
affinity64Mask = oArgs(2)
affinity64IOMask = oArgs(3)

If (affinity64Mask And affinity64IOMask) &lt;&gt; 0 Then
affinityConflict = 1
End If
End If

Call oBag.AddValue("AffinityConflict", affinityConflict)

Call oAPI.Return(oBag)
</Script></ScriptBody>
<TimeoutSeconds>60</TimeoutSeconds>
<ErrorExpression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='AffinityConflict']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">1</Value>
</ValueExpression>
</SimpleExpression>
</ErrorExpression>
<SuccessExpression>
<Not>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='AffinityConflict']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">1</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</Not>
</SuccessExpression>
<Schedule>86397</Schedule>
</Configuration>
</UnitMonitor>