Windows Tools

PoolMon Notes

Overview | Notes | Syntax | Examples | Related Tools Open Command Prompt

Before Using PoolMon

Before running PoolMon, you must enable pool tagging on your computer. The easiest way to do this is to use Gflags.exe to edit the registry entry for you.

To enable pool tagging using the GUI method:

  1. Run the Global Flags Editor.
  2. Click Enable Pool Tagging.
  3. Click Apply, and then click OK.
  4. Restart the computer. You are now ready to run PoolMon.

To enable pool tagging using the command-line method:

  1. Type the following at the command line:
    gflags -r +ptg
  2. Restart the computer. You are now ready to run PoolMon.

Using PoolMon

PoolMon displays pool tag information within a command window. Use the arrow keys, or PAGE UP and PAGE DOWN keys, to display all tag information returned by the tool.

Once you have started PoolMon, use the following keys to change how the information is displayed:

General functions Action
p Sorts tag list by paged, non-paged, or both. Press the key again to cycle through each option.
l Toggles highlighting of changed lines on and off.
e Toggles pool totals at the bottom of the data on and off.
h or ? Displays PoolMon help. To exit help, press the ESC key.
q or ESC Quits PoolMon.
Sorting functions Action
t Sorts tags alphabetically by tag name.
a Sorts tags by allocation size.
f Sorts tags by "frees".
d Sorts tags by difference between allocs and frees.
b Sorts tags by maximum byte usage.
m Sorts tags by maximum byte allocation.


PoolMon Output

The columns displayed by PoolMon in the command window show usage for each tag name. By monitoring periodically which tag's bytes are increasing in allocation without being freed up, you may be able to identify a possible leakage.

Column name Description
Tag The 4-byte tag given to the pool allocation.
Type Paged or non-paged bytes.
Allocs A count of all allocations.
( ) The difference in Allocs column from last update.
Frees A count of all frees.
( ) The difference in Frees column from last update.
Diff The difference between Allocs and Frees.
Bytes The total bytes consumed in pool.
( ) The difference in Bytes column from last update.
Per Alloc The Bytes value divided by the Diff value.

The following shows an excerpt of PoolMon output:

Memory: 16224K Avail: 4564K PageFlts: 31 InRam Krnl: 684K P: 680K
 Commit: 24140K Limit: 24952K Peak: 24932K  Pool N: 744K P: 2180K

 Tag  Type	Allocs		Frees		 Diff   Bytes	Per Alloc

 CM   Paged	1283 (   0)	1002 (   0)	281 1377312 (	 0) 4901
Strg  Paged   10385 (  10)	6658 (   4)   3727  317952 (   512)   85
 Fat  Paged	6662 (   8)	4971 (   6)   1691  174560 (   128)  103
MmSt  Paged	 614 (   0)	 441 (   0)	173   83456 (	 0)  482