Memory Usage

Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.MemoryUsage (UnitMonitor)

The monitor reports a warning when memory allocations by the SSAS instance surpass the configured WarningThreshold, expressed as a percentage of the TotalMemoryLimit setting for the SSAS instance. The monitor issues a critical alert when these allocations surpass the configured CriticalThreshold.

Knowledge Base article:

Summary

The monitor reports a warning when memory allocations by the SSAS instance surpass the configured WarningThreshold, expressed as a percentage of the TotalMemoryLimit setting for the SSAS instance. The monitor issues a critical alert when these allocations surpass the configured CriticalThreshold.

Causes

SSAS can approach or exceed the TotalMemoryLimit setting under some circumstances. In some cases, a single operation requires memory beyond these limit, and despite the server’s best effort to clear memory from other less immediate tasks, allocations may sometimes necessarily exceed the configured limits, or else the operations must be forced to fail.

This can occur when processing large dimensions or fact data, particularly if there exist attributes with data types consuming large amounts of space (e.g. long strings, binary data, etc.), or if the dimension contains numerous members. Also, queries executed on the server may cover very large spaces, particularly if multiple dimensions are being cross joined or significant calculations are required to derive results for cells not aggregated previously by a wise administrator, or simply not possible to aggregate in advance.

Resolutions

When memory limits for a server are exceeded, there are numerous approaches administrators may use to remediate the issue. After considering the underlying activity causing the memory usage, requirements for workload on the server, available resources, and other factors, as well as reviewing and considering the SSAS Multidimensional Performance Guide thoroughly, or consulting Microsoft support, as necessary, any of the following approaches may be used to address the issue:

External

TechNet documentation for Analysis Services memory properties

Configure Server Properties in Analysis Services

SSAS Multidimensional Performance Guide

Overrideable Parameters

Name

Description

Default Value

Critical Threshold (%)

Health State changes to Critical when Analysis Services Memory Usage (%) exceeds the threshold.

95

Enabled

Enables or disables the workflow

True

Generates Alerts

Defines whether the workflow generates an Alert

True

Interval Seconds

The recurring interval of time in seconds in which to run the workflow.

900

Synchronization Time

The synchronization time specified by using a 24-hour format. May be omitted.

 

Warning Threshold (%)

Health State changes to Warning when Analysis Services Memory Usage (%) exceeds the threshold but is still lower than the Critical Threshold (%).

80

Element properties:

TargetMicrosoft.SQLServer.2008.AnalysisServices.Instance
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2008.AnalysisServices.MonitorType.Instance.MemoryUsagePercent
RemotableTrue
AccessibilityPublic
Alert Message
SSAS 2008: High Memory Utilization
Current memory utilization for SSAS ({3} GB) surpasses the configured threshold, expressed as a percentage of the TotalMemoryLimit setting for the instance.
Total memory on the server: {2} GB
Total memory usage: {5} GB
Memory used by non-SSAS processes: {4} GB
Memory used by SSAS: {3} GB
SSAS Memory Limit Low: {6} GB ({7}\%)
SSAS Memory Limit High: {0} GB ({8}\%)
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.MemoryUsage" Accessibility="Public" Enabled="true" Target="SQLAS!Microsoft.SQLServer.2008.AnalysisServices.Instance" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2008.AnalysisServices.MonitorType.Instance.MemoryUsagePercent" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.MemoryUsage.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='MemoryLimitHighGB']$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='MemoryLeavesForOsGB']$</AlertParameter2>
<AlertParameter3>$Data/Context/Property[@Name='TotalPhysicalMemoryGB']$</AlertParameter3>
<AlertParameter4>$Data/Context/Property[@Name='MemoryUsageGB']$</AlertParameter4>
<AlertParameter5>$Data/Context/Property[@Name='MemoryUsageByOtherProcessGB']$</AlertParameter5>
<AlertParameter6>$Data/Context/Property[@Name='UsedPhysicalMemoryGB']$</AlertParameter6>
<AlertParameter7>$Data/Context/Property[@Name='MemoryLimitLowGB']$</AlertParameter7>
<AlertParameter8>$Data/Context/Property[@Name='MemoryLimitLowPercent']$</AlertParameter8>
<AlertParameter9>$Data/Context/Property[@Name='MemoryLimitHighPercent']$</AlertParameter9>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Error" MonitorTypeStateID="Above" HealthState="Error"/>
<OperationalState ID="Warning" MonitorTypeStateID="Between" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="Below" HealthState="Success"/>
</OperationalStates>
<Configuration>
<WarningThreshold>80</WarningThreshold>
<CriticalThreshold>95</CriticalThreshold>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>