MEMORY LEAK / RESOURCE DEPLETION
Description: A memory leak is a situation that occurs on a system when a process is consuming a memory resource and never levels off. Examples of a memory resource can be virtual memory, pool memory, handles or heap.
Scoping the Issue: Memory leaks may occur in any environment and for any number of reasons. The best means of determining what is going on with the system is gathering data when the system is in the problem state.
Data Gathering: In all instances, collecting either MPS Reports with the General, Internet and Networking, Business Networks and Server Components diagnostics, or a Performance-oriented MSDT manifest must be done. Additional data required may include the following:
- Performance Monitor logs that include the timeframe when the Working Set Trimming occurred. The length of time it takes the server to go from a normal state, to a memory leak state will determine the Perfmon capture interval. Please use the table below to set the capture interval. You can create the log parameters manually , or by using the Performance Monitor Wizard . Required counters include:
- Cache / All Counters / All Instances
- Memory / All Counters / All Instances
- Process / All Counters / All Instances
- Processor / All Counters / All Instances
- Physical Disk / All Counters / All Instances
If the average time to issue is: | The capture interval should be: |
Weekly | 14 minutes |
Daily | 120 seconds |
Hourly | 5 seconds |
If the average time to issue is: | The capture interval should be: |
Weekly | 1 hours |
Daily | 15 minutes |
Hourly | 60 seconds |
Troubleshooting / Resolution: After you have gathered this data, review the following:
- MPS Reports
- Outdated drivers & firmware – in particular for the NIC and Disk / Storage subsystems as well as Anti-virus
- Event ID’s look for the Event ID’s listed above and also any 2019’s or 2020’s. These events are indicative of NonPaged / Paged Pool depletion
- Performance Monitor Logs
- Look for evidence of any upward trending processes. This may display as either an upward slanting line, or a stair-stepping increase over time.
- If there is evidence of a leaking process, test removing or disabling the product to see if the issue goes away. If so, contact the product vendor for a resolution.
- PoolMon logs
- Look for trending increase of paged pool or non-paged pool memory which may indicate a leak
- If there is evidence of a leaking pool tag, research what it correlates to . If possible test removing or disabling the product to see if the issue goes away. If so, contact the product vendor for a resolution
- Complete Memory Dump
- Analysis of the memory dump requires some knowledge of debugging. The dump file should be provided to Microsoft support for analysis.
Additional Resources:
-
Microsoft KB Article 177415: How to Use Memory Pool Monitor (Poolmon.exe) to Troubleshoot Kernel Mode
-
Microsoft KB Article 254649: Overview of memory dump file options for Windows Vista, Windows Server 2008, Windows Server 2003, Windows XP and Windows 2000
-
Microsoft KB Article 244139: Windows Feature Allows a Memory.dmp File to Be Generated
-
Microsoft KB Article 927069: How to generate a complete crash dump file or a kernel crash dump file by using an NMI on a Windows-based system
-
Microsoft KB Article 108393: MAXMEM Option in Windows NT BOOT.INI File
-
Microsoft KB Article 139609: High Number of Pages /Sec does not necessarily indicate a Low Memory Condition
-
AskPerf Blog: An Overview of Troubleshooting Memory Issues
- AskPerf Blog: Two Minute Drill: UMDH.EXE