如何使用 WPA 确定非分页池泄漏

问题描述

在 Windows 操作系统上遇到问题 - NP 池的大小缓慢增加,几周后消耗高达数 GB。试图确定有问题的驱动程序(?),但运行这个:

xperf -on proc_thread+loader+pool -stackwalk poolalloc -MaxFile 1024 -FileMode Circular

两次(在机器重启后和几个小时后)给了我这个:

WPA analysis

即,我没有看到有关可能导致泄漏的进程\dll 的任何信息。我在进行跟踪时是否遗漏了一些参数,或者 WPA 不足以找到某些类型的泄漏?

@magicandre1981 问题是在我的情况下 Stack 没有列出: WPA 我不能在这里依赖影响大小,因为这里的泄漏非常缓慢,但是 400 MB 的 NP 池太大了。

PoolMon 显示主要是 Irp 和 FMic 泄漏:

PoolMon right after restart

PoolMon after several hours

解决方法

非常感谢@magicandre1981。已经讨论过 https://superuser.com/a/949246/174557,但只是想添加 - 我们应该专注于 AIFO 池类型并在每个池标签中搜索可疑模块(在我的情况下,我对 Fmic、Even 和 IRP 感兴趣)。完成后 - 一一禁用应用程序\驱动程序并检查结果。出于某种原因,WPA 按池标签对数据进行排序,默认情况下未启用类型列。最终,它应该是这样的 Windows Performance Analyzer NP pool trace