Memory Performance Information
Memory performance information is available from the memory manager through the system performance counters and through functions such as GetPerformanceInfo, GetProcessMemoryInfo, and GlobalMemoryStatusEx. Applications such as the Windows Task Manager, the Reliability and Performance Monitor, and the Process Explorer tool use performance counters to display memory information for the system and for individual processes.
This topic associates performance counters with the data returned by memory performance functions and the Windows Task Manager:
System Memory Performance Information
The following table associates memory object performance counters with the data returned by the memory performance functions in the MEMORYSTATUSEX, PERFORMANCE_INFORMATION, and PROCESS_MEMORY_COUNTERS_EX structures, and with the corresponding information displayed by Task Manager.
Memory object counter (unless otherwise noted) | Structure | Task Manager Performance tab for Windows Server 2008 and Windows Vista | Task Manager Performance tab for Windows Server 2003 and Windows XP |
---|---|---|---|
Available KB | MEMORYSTATUSEX.ullAvailPhys and PERFORMANCE_INFORMATION.PhysicalAvailable | Subtract usage value shown in Memory graph from Physical Memory (MB): Total | Physical Memory: Available |
None | MEMORYSTATUSEX.ullTotalPhys and PERFORMANCE_INFORMATION.PhysicalTotal | Physical Memory (MB): Total | Physical Memory: Total |
Committed Bytes | PERFORMANCE_INFORMATION.CommitTotal | System: Page File first value (in MB) | Commit Charge: Total |
Commit Limit | MEMORYSTATUSEX.ullTotalPageFile and PERFORMANCE_INFORMATION.CommitLimit | System: Page File second value (in MB) | Commit Charge: Limit |
Free & Zero Page List Bytes Windows Server 2003 and Windows XP: This performance counter is not supported. |
None | Physical Memory (MB): Free | Not applicable |
None | PERFORMANCE_INFORMATION.CommitPeak | None | Commit Charge: Peak |
None | PERFORMANCE_INFORMATION.HandleCount | System: Handles | Totals: Handles |
None | MEMORYSTATUSEX.ullAvailPageFile | None | None |
Pool Nonpaged Bytes | PERFORMANCE_INFORMATION.KernelNonpaged | Kernel Memory: Nonpaged | Kernel Memory: Nonpaged |
Pool Paged Bytes | PERFORMANCE_INFORMATION.KernelPaged | Kernel Memory: Paged | Kernel Memory: Paged |
Pool Paged Bytes + Pool Nonpaged Bytes | PERFORMANCE_INFORMATION.KernelTotal | Kernel Memory: Total | Kernel Memory: Total |
Processes (Objects object) | PERFORMANCE_INFORMATION.ProcessCount | System: Processes | Totals: Processes |
Thread Count (Process(_Total) object) | PERFORMANCE_INFORMATION.ThreadCount | System: Threads | Totals: Threads |
Cache Bytes + Sharable pages on the standby and modified lists | PERFORMANCE_INFORMATION.SystemCache | None | System Cache |
Cache Bytes + Modified Page List Bytes + Standby Cache Reserve Bytes + Standby Cache Normal Priority Bytes + Standby Cache Code Bytes Windows Server 2003 and Windows XP: Except for Cache Bytes, these performance counters are not supported. |
None | Physical Memory (MB): Cached | Not applicable |
Process Memory Performance Information
The following table associates process object performance counters with the data returned by the memory performance functions in the MEMORYSTATUSEX, PERFORMANCE_INFORMATION, and PROCESS_MEMORY_COUNTERS_EX structures, and with the corresponding information displayed by Task Manager.
Process object counter | Structure | Task Manager Processes tab for Windows Server 2008 and Windows Vista | Task Manager Processes tab for Windows Server 2003 and Windows XP |
---|---|---|---|
Handle Count | None | Handles | Handles |
Page File Bytes | PROCESS_MEMORY_COUNTERS_EX.PagefileUsage | Commit Size for all processes except the System process. For the System process, Page File Bytes is always 0. | VM Size for all processes except the System process. For the System process, Page File Bytes is always 0. |
Page File Bytes Peak | PROCESS_MEMORY_COUNTERS_EX.PeakPagefileUsage | None | None |
Pool Nonpaged Bytes | PROCESS_MEMORY_COUNTERS_EX.QuotaNonPagedPoolUsage | NP Pool | NP Pool |
Pool Paged Bytes | PROCESS_MEMORY_COUNTERS_EX.QuotaPagedPoolUsage | Paged Pool | Paged Pool |
Private Bytes | PROCESS_MEMORY_COUNTERS_EX.PrivateUsage | Commit Size | VM Size |
Thread Count (Process() for the specified image) | None | Threads | Threads |
Virtual Bytes | MEMORYSTATUSEX.ullTotalVirtual – MEMORYSTATUSEX.ullAvailVirtual | None | None |
Virtual Bytes Peak | None | None | None |
Working Set | PROCESS_MEMORY_COUNTERS_EX.WorkingSetSize | Working Set (Memory) | Mem Usage |
Working Set Peak | PROCESS_MEMORY_COUNTERS_EX.PeakWorkingSetSize | Peak Working Set (Memory) | Peak Mem Usage |
Working Set - Private Windows Server 2003 and Windows XP: This performance counter is not supported. |
None | Private Working Set | Not applicable |
None | PROCESS_MEMORY_COUNTERS_EX.QuotaPeakNonPagedPoolUsage | None | None |
None | PROCESS_MEMORY_COUNTERS_EX.QuotaPeakPagedPoolUsage | None | None |
None | MEMORYSTATUSEX.ullAvailPageFile | None | None |
None | MEMORYSTATUSEX.ullTotalPageFile | None | None |
Related topics