我正在运行这个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运行停止,键入'E‘为V3.5进程启用符号。 不要关闭此控制台窗口。它会留下收藏! 输入S以停止收集,'A‘将中止。 内核日志: C:\PerfView\PerfViewData.kernel.etl 用户模式日志: C:\PerfView\PerfViewData.etl 开始收集时间:2017年7月12日14:26:32 收集10秒: Size= 10.5 MB。 收集20秒: Size= 16.4 MB。 超过MaxCollectSec 30
这里是:Exceeded MaxCollectSec 30,但是继续写到etl文件。
我想向客户端发送一个Perfview命令,以收集系统范围的数据,并从Perfview向我发回zip文件和所有ETL文件。目前命令没有停止-有人知道为什么吗?我应该从命令中添加/删除什么,使它在30秒后自动停止?
发布于 2017-10-30 12:44:12
我知道已经有一段时间了,但是看起来/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;
}您可能会在气镜中创建一个描述问题的问题。
https://stackoverflow.com/questions/45056686
复制相似问题