VM Dynamic Memory Status

QND.Hyperv.2012R2.VMMemoryStatus (UnitMonitor)

Knowledge Base article:

Summary

This montior monitors the amount of memory demanded by the VM vs amount of memory assigned to the VM.

Configuration

This montior calcuate the VM memory pressure percentage using the formula: MemoryDemand / MemoryAssigned. An alert is generated if this figure has reached the treshold (default 105%).

Resolutions

Review the dynamic memory configuration for the VM. Assign additional memory if required.

Additional

http://blogs.technet.com/b/haroldwong/archive/2013/03/08/hyper-v-2012-dynamic-memory-what-does-the-vm-think-it-has-versus-what-it-really-has.aspx

Element properties:

TargetQND.Hyperv.2012R2.VM
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeQND.Hyperv.2012R2.VMMemoryStatus.MT
RemotableTrue
AccessibilityPublic
Alert Message
Hyper-V - Dynamic Memory pressure
{0} is under memory pressure. Performance can be impacted.
Current Memory Status:{1}
Current Pressure Level:{2}
RunAsDefault

Source Code:

<UnitMonitor ID="QND.Hyperv.2012R2.VMMemoryStatus" Accessibility="Public" Enabled="true" Target="QND.Hyperv.2012R2.VM" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="QND.Hyperv.2012R2.VMMemoryStatus.MT" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="QND.Hyperv.2012R2.VMMemoryStatus.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="QND.Hyperv.2012R2.VM"]/VirtualMachineName$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name="MemStatus"]$</AlertParameter2>
<AlertParameter3>$Data/Context/Property[@Name="Pressure"]$</AlertParameter3>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Healthy" MonitorTypeStateID="OK" HealthState="Success"/>
<OperationalState ID="UnderPressure" MonitorTypeStateID="UnderPressure" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>3611</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>120</TimeoutSeconds>
<TraceLevel>2</TraceLevel>
<VMId>$Target/Property[Type='QND.Hyperv.2012R2.VM']/VirtualMachineId$</VMId>
<PressureThreshold>105</PressureThreshold>
</Configuration>
</UnitMonitor>