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)StructureTask Manager Performance tab for Windows Server 2008 and Windows VistaTask Manager Performance tab for Windows Server 2003 and Windows XP/2000
Available KBytes MEMORYSTATUSEX.ullAvailPhys and PERFORMANCE_INFORMATION.PhysicalAvailableSubtract usage value shown in Memory graph from Physical Memory (MB): TotalPhysical Memory: Available
NoneMEMORYSTATUSEX.ullTotalPhys and PERFORMANCE_INFORMATION.PhysicalTotalPhysical Memory (MB): TotalPhysical Memory: Total
Committed Bytes PERFORMANCE_INFORMATION.CommitTotalSystem: Page File first value (in MB)Commit Charge: Total
Commit Limit MEMORYSTATUSEX.ullTotalPageFile and PERFORMANCE_INFORMATION.CommitLimitSystem: Page File second value (in MB)Commit Charge: Limit
Free & Zero Page List Bytes
Windows Server 2003 and Windows XP/2000:  This performance counter is not supported.
NonePhysical Memory (MB): FreeNot applicable
NonePERFORMANCE_INFORMATION.CommitPeakNoneCommit Charge: Peak
NonePERFORMANCE_INFORMATION.HandleCountSystem: HandlesTotals: Handles
NoneMEMORYSTATUSEX.ullAvailPageFileNoneNone
Pool Nonpaged Bytes PERFORMANCE_INFORMATION.KernelNonpagedKernel Memory: NonpagedKernel Memory: Nonpaged
Pool Paged Bytes PERFORMANCE_INFORMATION.KernelPagedKernel Memory: PagedKernel Memory: Paged
Pool Paged Bytes + Pool Nonpaged Bytes PERFORMANCE_INFORMATION.KernelTotalKernel Memory: TotalKernel Memory: Total
Processes (Objects object)PERFORMANCE_INFORMATION.ProcessCountSystem: ProcessesTotals: Processes
Thread Count (Process(_Total) object)PERFORMANCE_INFORMATION.ThreadCountSystem: ThreadsTotals: Threads
Cache Bytes + Shareable pages on the standby and modified listsPERFORMANCE_INFORMATION.SystemCacheNoneSystem 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/2000:  Except for Cache Bytes, these performance counters are not supported.
NonePhysical Memory (MB): CachedNot 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 counterStructure Task Manager Processes tab for Windows Server 2008 and Windows Vista Task Manager Processes tab for Windows Server 2003 and Windows XP/2000
Handle Count NoneHandlesHandles
Page File BytesPROCESS_MEMORY_COUNTERS_EX.PagefileUsageCommit 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 PeakPROCESS_MEMORY_COUNTERS_EX.PeakPagefileUsageNoneNone
Pool Nonpaged Bytes PROCESS_MEMORY_COUNTERS_EX.QuotaNonPagedPoolUsageNP PoolNP Pool
Pool Paged BytesPROCESS_MEMORY_COUNTERS_EX.QuotaPagedPoolUsagePaged PoolPaged Pool
Private BytesPROCESS_MEMORY_COUNTERS_EX.PrivateUsageCommit SizeVM Size
Thread Count (Process(<image name>) for the specified image) NoneThreadsThreads
Virtual BytesMEMORYSTATUSEX.ullTotalVirtualMEMORYSTATUSEX.ullAvailVirtualNoneNone
Virtual Bytes PeakNoneNoneNone
Working SetPROCESS_MEMORY_COUNTERS_EX.WorkingSetSizeWorking Set (Memory)Mem Usage
Working Set Peak PROCESS_MEMORY_COUNTERS_EX.PeakWorkingSetSizePeak Working Set (Memory)Peak Mem Usage
Working Set - Private
Windows Server 2003 and Windows XP/2000:  This performance counter is not supported.
NonePrivate Working SetNot applicable
NonePROCESS_MEMORY_COUNTERS_EX.QuotaPeakNonPagedPoolUsageNoneNone
NonePROCESS_MEMORY_COUNTERS_EX.QuotaPeakPagedPoolUsageNoneNone
NoneMEMORYSTATUSEX.ullAvailPageFileNoneNone
NoneMEMORYSTATUSEX.ullTotalPageFileNoneNone

 

See Also

Memory Object
Objects Object
Process Object
Process Explorer tool

Send comments about this topic to Microsoft

Build date: 11/19/2009

Tags :


Community Content

Dwayne Robinson
Private working set
To calculate this quantity, not present in PROCESS_MEMORY_COUNTERS_EX, call QueryWorkingSet() to read all the page entries into a buffer. Then count the number of entries where PSAPI_WORKING_SET_INFORMATION::WorkingSetInfo[nI].Shared is false. Multiply that by the bytes-per-page size (SYSTEM_INFO::dwPageSize) using GetSystemInfo() to get the total private working set (which is not the same as the committed private bytes PrivateUsage.
Tags : memory

Page view tracker