我正在运行这个 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 收集
V4.0 之前的 .NET Rundown 已禁用,请键入“E”以启用 V3.5 进程的符号。
不要关闭此控制台窗口。它将继续收集!
输入 S 停止收集,“A”将中止。
内核日志:C:\PerfView\PerfViewData.kernel.etl
用户模式日志:C:\PerfView\PerfViewData.etl
2017年12月7日14:26:32开始采集
收集 10 秒:大小= 10.5 MB。
收集 20 秒:大小= 16.4 MB。
超过 MaxCollectSec 30
所以就是这样:Exceeded MaxCollectSec 30但继续写入 etl 文件。
我想向客户端发送 Perfview 命令来收集系统范围的数据,并将包含来自 Perfview 的所有 ETL 文件的 zip 文件发回给我。目前命令没有停止 - 有人知道为什么吗?我应该从命令中添加/删除什么,以便它会在 30 秒后自动停止?
我知道已经有一段时间了,但看起来/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;
}
Run Code Online (Sandbox Code Playgroud)
您可以在perfview中创建一个问题来描述您的问题。
| 归档时间: |
|
| 查看次数: |
940 次 |
| 最近记录: |