Percentage of Committed Memory in Use

Microsoft.Windows.Server.10.0.OperatingSystem.PercentCommittedBytesInUse (UnitMonitor)

Monitor the performance counter Memory\\% Committed Bytes in Use

Knowledge Base article:

Summary

The % Committed Bytes In Use (Memory\% Committed Bytes In Use) for the system has exceeded the threshold. Overall system performance may significantly diminish which will result in poor operating system and application performance.

The % Committed Bytes In Use performance counter represents the ratio of Memory\Committed Bytes to the Memory\Commit Limit. Committed Bytes is the amount of committed virtual memory while Commit Limit is the amount of virtual memory that can be committed without having to extend the paging file(s).

When this performance threshold has been exceeded, it often indicates that the page file could not be expanded, or expanded fast enough, to satisfy application memory requirements.

Causes

The amount of available physical memory can become low under the following circumstances:

Resolutions

To confirm whether excessive paging is occurring, add the Avg. Disk sec/Transfer (a physical disk counter) and Pages/sec counter values. If the product of these counters exceeds 0.1, paging is taking more than 10 percent of disk access time. If this occurs over a long period, you probably need more memory.

Next, check for excessive paging due to running applications. If possible, stop the application with the highest working set value, and see if that dramatically changes the paging rate. If you suspect excessive paging, check the Pages/sec counter in System Monitor. This counter, which is part of the Memory object type, shows the number of pages that had to be read from disk because they were not in physical memory. (Notice the difference between this counter and Page Faults/sec, which indicates only that data was not immediately available in the specified working set in memory.)

To address a low physical memory condition an administrator may chose one or more of the following options:

If the system has been adequately provisioned with physical memory and application load but it continually exceeds the available physical memory threshold over time it’s possible that an application is leaking memory. To identify an application that is leaking memory an administrator can do the following:

Open up System Monitor and monitor the following system wide performance counters over time:

If any one of these counters continually increase over time it is possible that an application may be leaking memory. To view recent history for these performance counters you can use the following view:

If the system appears to be leaking memory, the specific application can be identified by monitoring the following counters for each running process using System Monitor:

If a consistent and significant increase in any of these counters is observed it may be necessary to contact the application vendor for support.

Element properties:

TargetMicrosoft.Windows.Server.10.0.OperatingSystem
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Instance NameMemory
Counter Name\% Committed Bytes In Use
Frequency120
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeSystem.Performance.ConsecutiveSamplesThreshold
RemotableTrue
AccessibilityPublic
Alert Message
Percentage of Committed Memory in Use is too high
The threshold for the Memory\\% Committed Bytes In Use performance counter has been exceeded.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.Windows.Server.10.0.OperatingSystem.PercentCommittedBytesInUse" Accessibility="Public" Enabled="false" Target="ServervNext!Microsoft.Windows.Server.10.0.OperatingSystem" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="SystemPerf!System.Performance.ConsecutiveSamplesThreshold" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.Windows.Server.10.0.OperatingSystem.PercentCommittedBytesInUse.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters/>
</AlertSettings>
<OperationalStates>
<OperationalState ID="UnderThreshold" MonitorTypeStateID="ConditionFalse" HealthState="Success"/>
<OperationalState ID="OverThreshold" MonitorTypeStateID="ConditionTrue" HealthState="Error"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<CounterName>% Committed Bytes In Use</CounterName>
<ObjectName>Memory</ObjectName>
<InstanceName/>
<Frequency>120</Frequency>
<Threshold>80</Threshold>
<Direction>greater</Direction>
<NumSamples>3</NumSamples>
</Configuration>
</UnitMonitor>