【问题标题】:How to determine NonPaged pool leak using WPA如何使用 WPA 确定非分页池泄漏
【发布时间】:2021-04-11 23:46:51
【问题描述】:

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

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

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

WPA analysis

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

@magicandre1981 问题是,在我的情况下,堆栈没有列出: WPA 我不能在这里依赖 Impacting size,因为这里的泄漏速度非常慢,但是 NP 池的 400 MB 太大了。

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

PoolMon right after restart

PoolMon after several hours

【问题讨论】:

  • answered it on superuser.com 前段时间。按我显示的顺序放置列。在我的回答中,我还展示了 Razor Cortex。导致 FMic 和 Irp 的使用。也许你也用过这个软件
  • @magicandre1981 在初始消息 + WPA 屏幕截图中添加了 PoolMon 截图。问题是 Stack 在这里不可见。
  • 添加Type列,只关心AIFO(在trace内部分配但不在trace内部释放)
  • 您是否按照我告诉您的那样更改了列顺序?你现在看到原因了吗?如果您需要帮助,请提供压缩的 ETL 文件(onedrive、Dropbox 共享链接)
  • 抱歉,没有时间检查。一定会更新你。

标签: windows memory-leaks pool xperf


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-14
    • 2017-12-07
    • 1970-01-01
    • 2021-09-29
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    相关资源
    最近更新 更多