PoolMon 使用
PoolMon 在命令窗口中显示有关池内存分配的数据列。使用箭头键、PAGE UP 和 PAGE DOWN 键在数据间滚动。
注意 若要查看全部 PoolMon 显示,则命令提示符窗口必须至少为 80 个字符宽(宽度 = 80)和 53 行高(高度 = 53);并且命令提示符窗口缓冲区必须至少 500 个字符宽度(宽度 = 500)和 2000 行高度(高度 = 2000)。否则,显示可能会被截断。
下表说明了 PoolMon 显示中的列。
列名称 | 说明 |
---|---|
Tag |
分配给池分配的 4 字节标记。 |
Type |
内存分配是采用页面缓冲字节还是非页面缓冲字节。 |
Allocs |
分配的数量。 |
( ) |
自上次更新以来分配数量的变化。 |
Frees |
释放操作的数量。 |
( ) |
自上次更新以来分配数量的变化。 |
Diff |
分配的数量与释放操作的数量的差额。 |
Bytes |
分配的大小,以字节为单位表示。 |
( ) |
自上次更新以来分配大小的变化。 |
Per Alloc |
Bytes 的值除以 Allocs 的值。 |
Mapped_Driver |
本地驱动程序 (/c) 和其他常用的驱动程序以及分配了池标记值的系统组件 (/g)。此列仅在使用 /c 或 /g 参数时显示。 |
以下示例 PoolMon 输出按分配的数量排序。(若要采用此方式排序显示,请使用 /a 参数启动 PoolMon。)
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
更新频率
PoolMon 每五秒更新一次其显示。你不能更改更新频率。
累积值
启用池标记时 Windows 收集和计算的 PoolMon 显示的数据。从 Windows 启动时累积的分配、释放操作和使用的字节的值,且在 Windows 重新启动前单调递增。如果在 Windows 已启动后启动驱动程序或组件,则该值从驱动程序或组件上次启动时累积,且仅在驱动程序或系统重新启动时初始化。
解释标记值
所有池内存分配均具有标记,但不是所有的池内存分配均具有特征标记值。在分配内存的驱动程序使用 ExAllocatePoolWithTag 或ExAllocatePoolWithQuotaTag 设置标记值时,池内存分配具有特征标记值。如果驱动程序未分配标记值( ExAllocatePool、ExAllocatePoolWithQuota),则 Windows 仍创建标记,但分配默认的标记值 None。因此,你无法从其他池分配的统计信息中分辨出该驱动程序的分配的统计信息。