Monitor the performance counter Memory\Free System Page Table Entries
A page table is the data structure used by the Windows Virtual Memory Manager (VMM) to store the mapping between virtual addresses and physical addresses in memory. The performance counter Free System Page Table Entries is the number of page table entries not currently used by the system.
When a system starts running low on free page table entries applications or drivers might have requests for memory denied, or the computer may stop responding to network requests, seeming to disappear from the network. Attempts to log onto the system may not be possible, because the server may not be able to respond.
Generally speaking, the issue is caused by high memory utilization. The issue may be more common on 32bit systems or systems using special boot switches to change the default memory management behaviors of the operating system.
Possible resolutions include the following:
Ensure that that the operating system, drivers and the significant applications on the server have the most recent patches applied.
Determine if any special boot switches are being used for the operating system in the BOOT.INI, which may impact how the system managed virtual memory. If so, then ensure they are necessary and implemented in the best possible way.
For very detailed instructions on how to diagnose issues with free system page table entries depletion refer to the document “Detection, Analysis, and Corrective Actions for Low Page Table Entry Issues” which can be downloaded from the Microsoft Download Center at http://go.microsoft.com/fwlink/?LinkId=201347.
If the issue continues and the system is 32bit and/or running on an operating system prior to Windows Server 2008, consider upgrading to Microsoft Windows Server 2008 or beyond and/or moving the workload to a 64bit system.
Target | Microsoft.Windows.Server.2008.OperatingSystem | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Instance Name | Memory | ||
Counter Name | Free System Page Table Entries | ||
Frequency | 300 | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | System.Performance.ConsecutiveSamplesThreshold | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.Windows.Server.2008.OperatingSystem.MemoryFreeSystemPageTableEntries" Accessibility="Public" Enabled="true" Target="Server2008!Microsoft.Windows.Server.2008.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.2008.OperatingSystem.MemoryFreeSystemPageTableEntries.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters/>
</AlertSettings>
<OperationalStates>
<OperationalState ID="OverThreshold" MonitorTypeStateID="ConditionTrue" HealthState="Warning"/>
<OperationalState ID="UnderThreshold" MonitorTypeStateID="ConditionFalse" HealthState="Success"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<CounterName>Free System Page Table Entries</CounterName>
<ObjectName>Memory</ObjectName>
<InstanceName/>
<Frequency>300</Frequency>
<Threshold>5000</Threshold>
<Direction>lessequal</Direction>
<NumSamples>6</NumSamples>
</Configuration>
</UnitMonitor>