问题标签 [windows-performance-analyzer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - 如何查看 CLR ETW 事件
我想知道是否有一个工具可以用来特别查看 CLR ETW事件,即显示“漂亮”的图表,而不是使用通用图表出现在WPA的通用事件部分中。
在 WPA 中打开一个 .etl 跟踪文件(例如,使用perfmonitor.exe或 WPR 制作)跟踪只给了我 GUID 和事件 ID(用于 CLR 事件)来挖掘,所以我想知道是否有办法解决这些问题以使其更有用WPA 中的名称,或者是否有其他工具可以显示此类事件跟踪。perfmonitor.exe 仅部分有用,因为它只关注 JIT、GC 和 CPU,并且(afaik)忽略其他事件。
performance - 在另一台机器上查看 xperf ETL 文件时出错
我有一台安装了 Windows 8.1 和 ADK (xperf 6.3.9600) 的机器。
我有另一台安装了 Windows 7 SP1 和 8.1 ADK (xperf 6.3.9600) 的机器。
如果我在 8.1 机器上使用 xperf 生成跟踪,我无法在 Win7 机器上加载该跟踪;它给了我错误The file or directory is corrupted and unreadable. (0x80070570).
ETL 文件可以成功加载到生成它的机器上以及另一台同样运行 Windows 8.1 的机器上。
是否只能在与生成它们的操作系统相同或更高的操作系统上加载跟踪文件?为什么它不需要相同的 xperf/WPA 版本?还是这对其他人有用,而我忽略了一些东西?
c++ - 聚合来自 WPR/xperf 分析数据的函数调用,例如 KCacheGrind?
是否可以将WPR/xperf分析数据加载到KCacheGrind中?或者有没有办法直接在WPA中聚合函数调用?还是其他什么工具?gprof2dot /graphviz路线会是最佳选择吗?
我发现 WPA 很有用,但在“CPU 使用率(采样)”表中按堆栈分组似乎不允许按聚合函数调用计数进行排序。例如,如果函数foo
从 10 个不同的地方被平均调用,则很难将其识别foo
为潜在的瓶颈,因为 10 个代码路径中的每一个都foo
将显示为权重的 10% 或更少。KCacheGrind 通过允许您对每个函数的累积时间进行排序来解决这个问题。
如何按在 Windows 上进行分析的每个函数中花费的累积时间进行排序,例如将 malloc 等低级共享函数识别为瓶颈?
performance - 如何使用 xperf 收集 CPU 利用率采样(Windows 性能工具包)
我想分析长流程(6-8 小时)的性能。我需要有关创建/完成的进程(使用命令行)和 CPU 利用率的信息。
我发现,Windows Performance Analyzer (wpa.exe/xperfview.exe) 是很好的分析工具。我创建性能数据收集器,选择提供程序“Windows 内核跟踪”,关键字“进程”并获取有关进程的信息。
但我找不到如何通过采样收集有关 CPU 利用率的信息。我知道
xperf.exe -on 基础
收集CPU信息,但它产生的信息太多......
此外,我可以使用性能计数器作为 *.blg 文件收集 CPU 利用率,但我无法将此文件加载到 Windows 性能分析器中。:(
有任何想法吗?
etw - 如何在 ETW 中正确定义自定义事件时间戳字段,用作 WPA 中甘特图的 StartTime 和 EndTime?
我有兴趣让自定义 ETW 事件显示Start Time和End Time,就像一些默认的 Windows 事件一样,以便以甘特图形式呈现它,如下所示:
我已经破解了Bruce Dawson 的演示清单和多提供程序文件,以将开始时间和结束时间字段添加到事件模板之一。
但是,我什至无法将该字段识别为时间字段。
我按照Microsoft 规范中的描述为事件有效负载编写模板,如下所示
并相应地转换我的 QueryPerformanceCounter 变量:
WPA 在相关字段中显示“无法解析数据”:
然后我查看Microsoft WPA 文档:
如果图形是甘特图,则移动到图形元素区域的每一列都必须仅包含时间戳值。甘特图中水平条中的一个标记代表一个时间戳值。
因此,我查看并看到时间戳只是 LARGE_INT,所以我回到原始格式并像这样编写清单:
然后数据以大量纳秒而不是时间的形式呈现。而且我无法将任一字段选择为“开始时间”或“结束时间”。
我究竟做错了什么?
etw - 在 WPA 中绘制线程的 nr
我想绘制一个进程中的线程数,找到 ThreadID 列并设置唯一计数聚合,这是我想随着时间的推移看到的。我在蓝色条的右侧有这个字段,但没有显示图表(是的,我选择了图例颜色)。
这怎么可能 ?
etw - Windows 性能分析器崩溃
我过去曾成功使用过 WPRUI 和 WPA 应用程序,上一次是一个月前,以确定我们的 C++ 应用程序中的性能问题。但是今天我记录了其中一个的新痕迹,打开它只是为了看到 WPA 崩溃。通过打开 ETL 并转到 Graph Explorer -> Computation -> CPU Usage (sampled) -> 展开,每次都可以重现它。只需单击即可查看 CPU 采样图表列表。有时它会静默崩溃,有时会出现让您调试崩溃的对话框。有没有人遇到过这样的问题?我在 Windows Performance Toolkit 站点中没有看到任何支持论坛,我当然希望为此找到解决方案。任何提示都非常感谢,在此先感谢。
PS:重装没用。删除用户首选项也不会。堆栈仅向我显示了在“任务”类中访问内存越界的问题,但我无法再次显示调试对话框(它现在每次都静默崩溃)。
PS2:我记得上个月做的唯一重大改变是安装 Visual Studio 2015 的 CTP,并让 Windows 升级它有待处理的一堆包(我在一个有上限的子网中,Windows 不会自动升级)。
callstack - 为什么“通用事件”没有调用堆栈
我确实读过
和其他来源,但我想做的最直接的事情就是在 WPA 的“通用事件”图中显示“堆栈”列。
为什么不存在?当然,因为堆栈信息不可用,但为什么呢?我确实知道“xperf -help stackwalk”,但列出的不是我想要的。例如,
无法获取网络事件的调用堆栈。为什么?我肯定错过了什么。谢谢!
etw - WPA“按 Alt + Space 显示更多细节”
将鼠标悬停在 Windows 性能分析器图表视图中的数据点上会弹出一个小的弹出窗口,上面写着“按 Alt + 空格键显示更多详细信息”。但是当我这样做时,我会得到所有窗口共有的顶级对话框,该对话框为您提供恢复、最小化、最大化和关闭的选项。
https://msdn.microsoft.com/en-us/library/windows/hardware/dn450837.aspx上的“WPA 键盘快捷键”页面没有提到“Alt + Space”。谷歌、必应或鸭鸭搜索也不行。
旧的 xperfview 将在悬停在数据点上时显示与数据点关联的所有数据。我如何在 WPA 中做到这一点?
etw - 如何使用 wpa 查看通用事件详细信息?
我为 CLR 提供程序记录 ETW 事件:
然后在 wpa.exe 中打开 clr.etl 并查看大量“通用事件”。但似乎 wpa 不显示一些数据,这在MSDN中有描述
我所看到的都与此类似:
Loo like this is GCStart_V1
event,但我找不到例如字段Reason
是否可以在 wpa 中查看通用事件数据?
WPA 版本 - 10.0.10586.212