Memory consumed by others

Microsoft.SQLServer.2014.ReportingServices.UnitMonitor.Instance.MemoryUsageOnServer (UnitMonitor)

The monitor alerts if the memory consumed by processes other than SSRS does not allow SSRS to allocate the amount of memory prescribed by WorkingSetMinimum setting. The monitor uses following formula to determine state:
({WorkingSetMinimum} + {Memory Consumed By Others})*100/{Total Memory} < {Threshold (\%)}

Knowledge Base article:

Summary

The monitor alerts if the memory consumed by processes other than SSRS does not allow SSRS to allocate the amount of memory prescribed by WorkingSetMinimum setting. The monitor uses following formula to determine state:

({WorkingSetMinimum} + {Memory Consumed By Others})*100/{Total Memory} < {Threshold (%)}

Causes

Reporting services may require lots of memory for variety of reasons, some of them being

Memory pressure conditions may occur if there are other memory consuming applications running on the same server.

Resolutions

You may consider adding more memory to the server or removing other applications from the server.

Following article talks about the memory configuration for reporting services - http://technet.microsoft.com/en-us/library/ms159206.aspx

Configure Server Properties in Reporting Services: Configure Server Properties

Overrideable Parameters

Name

Description

Default Value

Enabled

 

1

Generates Alerts

 

Yes

Interval (seconds)

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

900

Synchronization Time

 

 

Threshold

The monitor alerts if the sum of memory consumed by processes other than SSRS and value of WorkingSetMinimum, expressed as a percentage of total server memory, exceeds the threshold.

100

Element properties:

TargetMicrosoft.SQLServer.2014.ReportingServices.Instance
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2014.ReportingServices.MonitorType.Instance.MemoryUsageOnServer
RemotableTrue
AccessibilityPublic
Alert Message
SSRS 2014: Other processes use too much memory
Other processes can affect performance of SSRS.
Total memory on the server: {0} GB
SSRS WorkingSetMinimum: {1} GB
SSRS WorkingSetMaximium: {2} GB
Memory consumed by SSRS: {3} GB ({4}\%)
Memory consumed by other processes: {5} GB ({6}\%)
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2014.ReportingServices.UnitMonitor.Instance.MemoryUsageOnServer" Accessibility="Public" Enabled="true" Target="SQLRS!Microsoft.SQLServer.2014.ReportingServices.Instance" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2014.ReportingServices.MonitorType.Instance.MemoryUsageOnServer" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2014.ReportingServices.UnitMonitor.Instance.MemoryUsageOnServer.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='TotalPhysicalMemoryGB']$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='WorkingSetMinimumGB']$</AlertParameter2>
<AlertParameter3>$Data/Context/Property[@Name='WorkingSetMaximumGB']$</AlertParameter3>
<AlertParameter4>$Data/Context/Property[@Name='MemoryUsageGB']$</AlertParameter4>
<AlertParameter5>$Data/Context/Property[@Name='MemoryUsagePercent']$</AlertParameter5>
<AlertParameter6>$Data/Context/Property[@Name='MemoryUsageByOtherProcessGB']$</AlertParameter6>
<AlertParameter7>$Data/Context/Property[@Name='MemoryUsageByOtherProcessPercent']$</AlertParameter7>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="Success" HealthState="Success"/>
</OperationalStates>
<Configuration>
<Threshold>100</Threshold>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>