【问题标题】:Perfview is not stoppingPerfview 没有停止
【发布时间】:2017-07-12 11:40:34
【问题描述】:

我正在运行这个 PerfView 命令:

PerfView.exe /Merge:true /zip:true /NoNGenRundown /NoClrRundown /KeepAllEvents /ThreadTime /DumpHeap /NoView /NoGui /MaxCollectSec:30 collect

但似乎即使我将/MaxCollectSec:30 定义为 30 秒,实际的数据收集过程也不会停止并继续向PerfViewData.etl 文件添加数据

这是 Perfview 在运行命令时打开的控制台窗口的输出:

详细登录:PerfViewData.log.txt

执行:PerfView /Merge:true /zip:true /NoNGenRundown /NoClrRundown /KeepAllEvents /ThreadTime /DumpHeap /NoView /NoGui /MaxCollectSec:30 收集

Pre V4.0 .NET Rundown 已禁用,键入“E”以启用 V3.5 进程的符号。

不要关闭此控制台窗口。它将继续收集!

键入 S 停止收集,'A' 将中止。

内核日志:C:\PerfView\PerfViewData.kernel.etl

用户模式日志:C:\PerfView\PerfViewData.etl

12/07/2017 14:26:32 开始收集

收集 10 秒:大小 = 10.5 MB。

收集 20 秒:大小 = 16.4 MB。

超过 MaxCollectSec 30

所以这里是:Exceeded MaxCollectSec 30 但继续写入 etl 文件。

我想向客户端发送一个 Perfview 命令以收集系统范围的数据并将包含来自 Perfview 的所有 ETL 文件的 zip 文件发回给我。目前命令不会停止 - 有人知道为什么吗?我应该从命令中添加/删除什么,使其在 30 秒后自动停止?

【问题讨论】:

  • 我总是使用 WPR.exe 来捕获 ETW 跟踪和超时来设置时间:wpr.exe -start DotNET && timeout 30 && wpr.exe -stop C:\DotNET.etl。 30s后停止命令执行

标签: perfview


【解决方案1】:

我知道这已经有一段时间了,但看起来/DumpHeap 开关是这里的问题 - 如果您删除它,跟踪将按时完成。 I checked the PerfView source code and when DumpHeap is selected there is some interaction with the GUI window:

if (parsedArgs.DumpHeap)
{
    // Take a heap snapshot.
    GuiHeapSnapshot(parsedArgs, true);

    // Ensure that we clean up the heap snapshot state.
    parsedArgs.DumpHeap = false;

}

您可以在perfview 中创建一个问题来描述您的问题。

【讨论】:

    猜你喜欢
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多