Investigating Memory Problems

After you have observed memory usage under normal conditions and established your memory baseline, you might notice that the memory counters sometimes stray from the typical range. The following sections describe how to investigate conditions that cause memory values to deviate from the baseline.

The following activities help you to learn about and analyze memory usage and memory bottlenecks using System Monitor counters and other tools.

  • Investigating memory shortages

  • Investigating disk paging

  • Investigating user-mode memory leaks

  • Investigating kernel-mode memory leaks

  • Monitoring the cache

  • Resolving memory and cache bottlenecks

Table 6.2 summarizes the most important counters to monitor for analyzing memory usage.

Table   6.2 Counters for Analyzing Memory Usage

To monitor for

Use this Object \ Counter

Memory shortages

Memory\Available Bytes or Available KBytes (to see the amount in kilobytes) or Available MBytes (to see the amount in megabytes) Process ( All_processes )\Working Set Memory\Pages/sec Memory\Cache Bytes

Frequent hard page faults

Memory\Pages/sec Process ( All_processes ) \Working Set Memory\Pages Input/sec Memory\Pages Output/sec

Excess paging with a disk bottleneck

Memory\Page Reads/sec Physical Disk\Avg. Disk Bytes/Read

Paging file fragmentation

PhysicalDisk\Split IOs\sec PhysicalDisk\% Disk Read Time PhysicalDisk\Current Disk Queue Length Process\Handle Count

Memory leaks; memory-intensive applications

Memory\Pool Nonpaged Allocations Memory\Pool Nonpaged Bytes Memory\Pool Paged Bytes Process( process_name) \Pool Nonpaged Bytes Process( process_name )\Handle Count Process( process_name )\Pool Paged Bytes Process( process_name )\Virtual Bytes Process( process_name )\Private Bytes

Cache Manager efficiency

Cache\Copy Read Hits % Cache\Copy Reads/sec Cache\Data Map Hits % Cache\Data Maps/sec Cache\MDL Read Hits % Cache\MDL Reads/sec Cache\Pin Read Hits % Cache\Pin Reads/sec To identify cache bottlenecks, also use Memory\Pages Input/sec with these counters.



The LogicalDisk object counters are not available by default. If you want to monitor the values for these counters, you must first activate the counters by typing diskperfyv at the Windows command prompt.