etwr/etwd 内存使用率极高

etwr/etwd 内存使用率极高

在 stackoverflow 上发布了此问题,并建议在此处发布以获得更好的帮助。

我一直在使用一个我编写的基于 .NET 6 的程序,简单地说,它执行一些与 TCP 和 SQL 相关的操作。在购买了一些新的 HP Z 系列(W11 和 W10 不同型号)后,我注意到该程序会崩溃,SQL 将停止工作,因为没有可用内存。有问题的 PC 有 32GB 和 16GB 的 RAM,在启动时它总共使用约 6-7GB 的 RAM。如果我在运行大约 2-3 天后运行该程序,PC 已经完全用完了其物理 RAM 并开始使用 30-60GB 以上的分页内存。如果我终止该程序,内存需要几个小时才能恢复可用,这不是即时的。

我在网上做了很多研究,试图缩小发生这种情况的范围,这就是我所做的和发现的。我使用 RamMap 尝试查看正在使用内存的是什么。我可以看到,例如在 16GB PC 上,9.3GB 用作非分页池,2.8GB 用作分页池,2GB 用作进程专用。我觉得进程专用是有意义的,因为它加起来差不多。但是,当我查看任务管理器详细信息或 RamMap 进程选项卡时,池内存并没有加起来。

在任务管理器中,如果我汇总详细信息选项卡列中的内容,它仅显示不到 1-2MB 的总 NP 池使用量,并在分页池列中显示总计约 10MB。如果我转到任务管理器上的“性能”选项卡,它会显示 15.4GB 使用中、1.9GB 压缩、282MB 可用、62.7/63.2 已提交、278MB 缓存、43.9GB 分页池、10.1GB 非分页池和 295MB 硬件保留。

在试图弄清楚这些 10 GB 的内存去向后,我了解了 Poolmon.exe 并尝试使用它。我看到 EtwD/EtwR 分别使用了 40GB 的分页池和 9GB 的非分页池。然后我使用 Tracelog -l 和 Logmon 尝试查看 Etw 的哪个方面使用了这么多内存。我查看了返回的列表,没有看到缓冲区大小或段最大大小超过几 MB 的内容,也没有看到任何明显的东西可以解释问题所在。

我尝试过更新 BIOS/驱动程序等,但无济于事。

此时,我完全不知道下一步该尝试什么,我将非常感激任何建议。

相关内容