Poolmon Remarks

Applies To: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2

Poolmon Remarks

Enabling Pool Tagging

Before running Poolmon on Windows XP and earlier systems, you must use Gflags.exe to enable pool tagging.

Important

  • Pool tagging is permanently enabled on Windows Server 2003.

To enable pool tagging by using a dialog box:

  1. At the command line, or in the Run dialog box, type Gflags.

  2. Check the Enable Pool Tagging check box.

  3. Restart the computer.

To enable pool tagging by using the command line:

  1. Type the following at the command line: gflags /r +ptg

  2. Restart the computer.

About Pool Tagging

The pool tagging feature collects and calculates statistics about pool memory sorted by the tag value of the allocation.

To set a tag value, use ExAllocatePoolWithTag or ExAllocatePoolWithQuotaTag to allocate pool memory. If you do not assign a tag value (ExAllocatePool, ExAllocatePoolWithQuota), the system still creates a tag, but it assigns the default tag value, "None". As a result, you cannot distinguish the statistics for your allocation from that of other pool memory allocations.

For more information on pool tagging, see Gflags Flag Reference. For more information about pool tags, see the Windows Driver Development Kit.

About Poolmon

Command-line Syntax and Running Syntax

You can configure the Poolmon display at the command line when you start Poolmon or while Poolmon is running. The command line parameters are described in the "Command-line Syntax" section of Poolmon Syntax. The keys that you press to configure the Poolmon display while it is running are described in the "Running Syntax" section of Poolmon Syntax.

Accumulated Values

The data that Poolmon displays is collected and calculated by the system whenever pool tagging is enabled. The values for allocations, frees, and bytes used accumulate from the time that the system starts, and increase monotonically until the system is restarted. If a driver or component is started independently of the system, the values are accumulated from the last time that the driver or component started and reset only when the driver or system are restarted.

Update Rate

Poolmon updates its display every five seconds. You cannot change the update rate.

Saving Poolmon Output

You can add the /n parameter to a command to save a snapshot of the Poolmon output to a file. Because the data saved to the file is static, the columns that show the change in values between updates are not included in the file.

Terminal Server Session Support

Poolmon can display allocations from the Terminal Services session pools, as well as the system pools. When the computer is configured as a Terminal Server, the kernel-mode portions of the Win32 subsystem allocate memory from the session pools. Otherwise, the system allocates pool memory for Terminal Services from the system pool.

Terminal Server, previously known as Terminal Services in Application Server mode, is available on all Windows Server 2003 operating systems, except for Windows Server 2003, Web Edition.

Poolmon can display allocations from a particular session pool, or from all session pools collectively. To display only the pool for a particular session, you specify the session ID. To find a Terminal Server session ID, use Task Manager. After Task Manager opens, click the Users tab to see the session IDs.

To display session IDs in Task Manager:

  • From the View menu, click Select Column, and then select the Session ID check box.

Viewing Driver Names

Poolmon has two features that display the names of drivers that assign each pool tag.

  • Local drivers. The /c parameter displays the names of drivers on the local computer that assign the pool tag. The data for this feature comes from Localtag.txt, a file that Poolmon generates automatically when you use the /c parameter. Poolmon generates a new Localtag.txt file when it cannot find a Localtag.txt file in the current directory and you do not specify an alternate file.

  • Windows components and other drivers. The /g parameter displays the names of Windows components and commonly used drivers that assign the pool tag. The data for this feature comes from Pooltag.txt, a file provided by Microsoft that is installed in the Support Tools folder with Poolmon.exe.

To display the driver name, Poolmon adds a column called "Mapped_Driver" to the right edge of the display and populates the column with data from Localtag.txt (for /c) or Pooltag.txt (for /g). The "Mapped_Driver" column appears only when you use the /c or /g parameters. You can use both the /c and /g parameters in a single command. In response, Poolmon displays the data from both files in the "Mapped_Driver" column.

You can also use /c and /g to display data from alternate files in the "Mapped_Driver" column by specifying a file name and location with either parameter (poolmon /cfilename | poolmon /cfilename). In that case, the /c and /g parameters behave identically and can be used interchangeably.

Note

  • Poolmon cannot generate a Localtag.txt file on 64-bit versions of Windows Server 2003.

Updating Pooltag.txt

Poolmon can display the name of the Windows component or commonly used driver that assigns each pool tag. This feature uses data from Pooltag.txt, a file installed with Poolmon and with Windows debuggers. Occasionally, Microsoft updates this file. To check for updates, go to the Microsoft Product Support Services Web page, https://support.microsoft.comand search for "Pooltag.txt."

About the Poolmon Display

Poolmon displays columns of data about pool memory allocations in a command window. Use the arrow keys, page up and page down keys to scroll through the data. Poolmon updates the display every five seconds. You cannot change the update rate.

Note

  • To see the entire Poolmon display, the command window screen must be at least 80 characters wide (width=80) and at least 53 rows high (height=53); and the command window screen buffer must be at least 500 characters wide (width=500) and at least 2000 rows high (height=2000). Otherwise, the display might be truncated.

The following table describes the columns in the Poolmon display

Column name Description

Tag

The 4-byte tag assigned to the pool allocation.

Type

Whether the memory allocations are in paged or non-paged bytes.

Allocs

The number of allocations.

( )

The change in the number of allocations since the last update.

Frees

The number of frees.

( )

The change in the number of allocations since the last update.

Diff

The number of allocations minus the number of frees.

Bytes

The size of the allocations, in bytes used.

( )

The change in the allocation size since the last update.

Per Alloc

The value of Bytes divided by the value of Allocs.

Mapped_Driver

The local drivers (/c) and other commonly used drivers and system components (/g) that assign the pool tag value. This column appears only when you use the /c or /g parameters.

The following sample Poolmon output is sorted by number of allocations. (To sort your display this way, start Poolmon with the /a parameter.)

 Memory:  260620K Avail:   96364K  PageFlts:     0   InRam Krnl: 1916K P:17856K
 Commit: 203500K Limit: 640916K Peak: 260632K            Pool N: 8332K P:27220K
 System pool information
 Tag  Type     Allocs            Frees            Diff   Bytes       Per Alloc

 Wait Nonp    3971107 (   0)   3971077 (   0)       30    8456 (     0)    281
 ObSt Nonp    2791258 (   0)   2791258 (   0)        0       0 (     0)      0
 Gxlt Paged   1161638 (   0)   1161630 (   0)        8     864 (     0)    108
 Ustm Paged   1088342 (   0)   1088298 (   0)       44    2464 (     0)     56
 Io   Nonp    1021112 (   1)   1020985 (   1)      127   91912 (     0)    723
 ObSq Paged    967615 (   0)    967615 (   0)        0       0 (     0)      0
 Key  Paged    954821 (   0)    953979 (   0)      842   87528 (     0)    103
 SePa Nonp     680348 (   0)    680321 (   0)       27    3656 (     0)    135

See Also

Concepts

Poolmon Overview
Poolmon Syntax
Poolmon Examples
Alphabetical List of Tools
Windiff Overview
Remote Overview
Msizap Overview
Msicuu Overview
Memsnap Overview
Gflags.exe
Devcon Overview
Pviewer Overview
Exctrlst Overview
Devcon Overview
Apmstat Overview