Windows 10 内存泄漏 - 标签 (poolmon) FMic 和 Irp - 非分页池,大小为 5.7GB

Windows 10 内存泄漏 - 标签 (poolmon) FMic 和 Irp - 非分页池,大小为 5.7GB

所以我最近注意到内存使用率极高。仅打开 20 个标签的 Chrome 就占用了 13.5 / 16GB 的内存。任务管理器报告 Chrome 仅使用大约 3GB 的内存。任务管理器中报告的其余所有进程加起来占用的额外内存不到 1GB,因为它们中的大多数占用 10MB 到 50MB 的内存。

我使用 RamMap 获取了更多详细信息,发现非分页池非常高,达到 5.7GB。以下是拉姆地图

我使用过poolmon,发现有两个东西占用了大量的非分页池。下面是一个poolmon 的圖像

根据 Google 标签搜索和此列表在这里,这两个标签的用途如下:

  • FMic - fltmgr.sys - IRP_CTRL 结构
  • Irp - 未知 - Io,IRP 数据包

但现在我陷入了困境。我见过其他类似的问题,但没有一个与这些标签有关。其他人的问题通常来自驱动程序,他们只需更新它即可。但在这种情况下,我不知道如何解决这个问题。

我找到了文件管理控制台C:\Windows\System32\驱动程序,但这似乎是微软的事情。在属性 -> 详细信息,其名称为“Microsoft Windows 操作系统”,其文件描述为“Microsoft Filesystem Filter Manager”。也就是说,这不仅仅是一个我可以更新的驱动程序。

至于信息处理程序标签,我不知道。

有什么建议吗?我应该从哪里开始,我能做什么?

编辑 03/03/18:我没有 Killer NIC。

我用 xperf 录制过,并且到目前为止。不太确定接下来该怎么做,或者我可以上传 .etl 文件,虽然它很大,所以不确定在哪里。如果上传它会有帮助,请告诉我。

重启后大概需要 40 分钟,并且已经有 517MB 的非分页池。

编辑 04/03/18 #1:非分页池当前一天后为 1GB。似乎以每天约 1GB 的速度增加。fltmc可以找到的输出这里

至于信息处理程序- 我不使用防病毒或备份程序,除非算上 Windows Defender。但是,我会使用从 C: 驱动器 (SSD) 到 F: 驱动器 (HDD) 的符号链接来存储 Google Chrome 和 Skype 的缓存文件夹,因为它们每天会在磁盘上写入 20GB,而我并不想在 SSD 上写入这些内容。不过,这个缓存运行良好,可以正常写入 HDD,我认为它不会导致 I/O 失败。

我确实有一个由 2 个硬盘(每个 1 TB)组成的 Raid 0 阵列,它是通过 Windows 的内置存储空间创建的,而不是通过 BIOS 或类似的东西创建的。我不认为这可能与信息处理程序事也?

最后,我还会录制我玩视频游戏时的游戏过程。只要我启动游戏,它就会使用名为 Plays.TV 的客户端在后台自动运行。但同样,这是成功的,我不明白为什么 I/O 请求会发出但无法完成。只要我退出游戏,视频就会录制完毕。

编辑 04/03/18 #2:我按照@HelpingHand 的建议使用了typeperf "Memory\Pool Nonpaged Bytes" -si 20 -o npptracker.csv结果并绘制了图表。我还用所有事件对图表进行了注释,这样您就可以看到哪些操作与非分页字节数的上升或下降相对应。这里这是图表。在图表上,您可能会看到一些您不认识的东西:

  • 绝地求生- 是 PlayerUnknown’s BattleGrounds 的缩写,这是我最近在玩的一款电子游戏
  • 电视游戏- 视频录制客户端,在我进入游戏时自动开始录制,在我退出游戏时停止录制。它还会记录某些游戏的元数据,并将其作为标记放在视频的时间线上,例如,当我杀死某人时,我会在时间线上看到标记。此元数据记录在.框架文件。
  • Twitch.tv- 一个流媒体网站
  • 浏览器游戏机器人- 只是一个执行 HTML 请求的机器人。它每次只运行大约 30 到 60 分钟,而且我相当确信它没有任何效果。

正如您在图表上看到的,我使用以下命令使用 Xperf 大约 7 分钟:Xperf -on PROC_THREAD+LOADER+POOL -stackwalk PoolAlloc+PoolFree+PoolAllocSession+PoolFreeSession -BufferSize 1024 -MinBuffers 256 -MaxBuffers 256 -MaxFile 1024 -FileMode Circular

这产生了 1GB.etl我已压缩并上传的文件这里 (80MB)

poolmon最后,我停用后大约2-3分钟又使用了xperf。我忘了把它放在时间线图上。这里是结果的图像。

答案1

分析踪迹在 WPA.exe 中显示FMic池使用来自RazerCortex.exe创建文件时发生的(KernelBase.dll!CreateFileW)。

在此处输入图片描述

这也会导致 IRP(代表输入/输出请求数据包) 用法:

在此处输入图片描述

rzudd.sys 驱动程序也会导致 IRP 使用:

在此处输入图片描述

因此更新剃刀工具或者最好将其删除(以及所有其他与 Razor 相关的软件/驱动程序)。

答案2

我遇到了完全相同的问题。如果我的计算机长时间处于打开状态而没有正确重新启动,FMic 和 IRP 标签始终位于顶部,占用了 GB 的非分页池。我将其归咎于 Razer Cortex,这是我当时唯一的 Razer 软件,在我卸载它的那一刻,我的非分页池缩小到 1.2GB,而不是 3-4GB,在我的计算机打开几天后。之前我曾尝试重新安装 Killer Network 驱动程序并删除不再使用的设备的 Razer 驱动程序,但都没有删除 Cortex 有帮助。

相关内容