Perfview并没有停止

时间:2017-07-12 11:40:34

标签: perfview

我正在运行此PerfView命令:

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

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

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

  

VERBOSE登录:PerfViewData.log.txt

     

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

     

禁用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秒后自动停止?

1 个答案:

答案 0 :(得分:3)

我知道它已经有一段时间了,但看起来/DumpHeap开关是问题所在 - 如果你删除它,跟踪将按时完成。我检查了PerfView源代码,当选择DumpHeap时,会与GUI窗口进行一些交互:

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

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

}

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