我正在尝试跟踪我们的构建脚本以及它为完成创建发布的任务而生成的所有进程的 CPU 使用率。我procmon64.exe
在成功构建发布的过程中运行了一个(带有分析)会话并保存了生成的.pml
文件。后来我启动procmon /noconnect
并加载了该.pml
文件以进行分析。
在工具菜单中,我选择process tree
并找到运行我们脚本的 powershell.exe 的初始调用。选择该父进程后,我将其及其所有子进程 PID 添加到过滤器中。因此,我有一个仅由 PID 包含列表组成的过滤器。
这一切都运行正常,过滤后的进程事件正是我期望和想要的选择。现在我想知道(并记录)每个进程花费的总 CPU 时间。在菜单中Tools
,我选择Process Activity Summary
。我认为这是为了提供过滤器选择的所有“跟踪期间生成事件的进程”的各种进程活动统计信息的摘要。但事实并非如此。在过滤器中的 170 个 PID 中,它仅显示 6 个的摘要。似乎它只会为那些在 procmon 关闭时仍在运行的 PID 生成摘要,即那些没有“退出”时间的 PID。
我该怎么做才能获得我正在过滤的所有流程的摘要?
答案1
以下不是一个正确的答案,而是一个解决方法。对于您想要过滤的进程和事件,使用Save
文件菜单中的功能,然后在Events to save:
选择中选择Events displayed using current filter
(然后选择选项Also include profiling events
)。保存为 PML 格式的文件。这样,您就保存了一个仅包含您感兴趣的事件和进程的文件。退出 Procmon,然后使用重新启动它procmon /accepteula /noconnect /quiet /nofilter
。然后加载您刚刚保存的 .pml 文件(文件菜单,open
)。没有过滤,只有您想要加载的进程和事件,在菜单Process Activity Summary
下选择Tools
现在将显示并保存所有进程,而不仅仅是会话结束时仍在运行的进程。
如果有人知道更好的解决方案,请发布...