问题标签 [xperf]

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.

0 投票
2 回答
242 浏览

windows - 查看 DLL 使用的注册表项和文件

我对分析 Windows 进程很陌生,上周发现 Xperf 非常有用,我对分析 DLL 有一些疑问。

我想知道是否可以查看进程使用的特定 DLL 映像使用了哪些注册表项和文件路径,以及我可以使用哪些工具来实现这一点。

如果这不可能,我想知道什么是找出 DLL 正在使用哪些资源的好策略,或替代方法。

0 投票
1 回答
1553 浏览

profiling - 使用 cygwin 进行 Gpuview 日志记录不起作用

当我从 Windows 命令行运行时,我会因为说文件已经存在而log.cmd收到错误消息。我知道其他进程也使用 Windows ETL,并且由于用于跟踪事件,它在某种意义上“冲突”。尽管如此,我还是得到了大量通过再次运行合并的 ETL 文件。xperf*.etlgpuviewxperflog.cmd

我讨厌使用cmd并尝试使用cygwin bash. 我得到类似的错误,但除非DXCstate.etl,我没有看到其他任何东西。

我正在以管理员权限运行终端,并log.cmd拥有 755 权限。

0 投票
1 回答
448 浏览

debugging - 如何自动停止 Xperf / WPR

是否可以定义可以停止正在进行的循环跟踪的性能计数器和阈值?无人值守停止跟踪的其他可能性?

0 投票
2 回答
1862 浏览

windows - 在 Xperf 中捕获调用堆栈和事件

抱歉这个愚蠢的问题。我是 Xperf 的新手。

我在 64 位 Windows 8.1 上,我的应用程序也是 x64。我想使用 Xperf 在应用程序中捕获调用堆栈和我定义的事件。

我在我的应用程序中注册了 GUID 35f7872e-9b6d-4a9b-a674-66f1edd66d5c

当我使用时:

我可以获得所有事件,但没有调用堆栈。但是,如果我删除-on 35f7872e-9b6d-4a9b-a674-66f1edd66d5c 并且命令行变为:

这样,我能够捕获所有调用堆栈但没有定义事件。

谁能告诉我用于捕获调用堆栈和事件的正确命令行是什么?此外,如果您能指出任何好的 Xperf 参考资料,那就更好了。

0 投票
0 回答
427 浏览

c++ - 聚合来自 WPR/xperf 分析数据的函数调用,例如 KCacheGrind?

是否可以将WPR/xperf分析数据加载到KCacheGrind中?或者有没有办法直接在WPA中聚合函数调用?还是其他什么工具?gprof2dot /graphviz路线会是最佳选择吗?

我发现 WPA 很有用,但在“CPU 使用率(采样)”表中按堆栈分组似乎不允许按聚合函数调用计数进行排序。例如,如果函数foo从 10 个不同的地方被平均调用,则很难将其识别foo为潜在的瓶颈,因为 10 个代码路径中的每一个都foo将显示为权重的 10% 或更少。KCacheGrind 通过允许您对每个函数的累积时间进行排序来解决这个问题。

如何按在 Windows 上进行分析的每个函数中花费的累积时间进行排序,例如将 malloc 等低级共享函数识别为瓶颈?

0 投票
1 回答
599 浏览

node.js - 如何使用xperf检查nodejs的调用栈?

我正在尝试学习 Node.js 应用程序的性能调优。我想要的第一件事是火焰图。由于我在 Windows 平台上工作,因此我按照本手册获取火焰图。

但是,我在这一步堆叠:

xperf -i perf.etl -o perf.csv -symbols 在此处输入图像描述

我不擅长 xperf。有人可以告诉我如何通过这个问题并获得火焰图吗?

0 投票
1 回答
5082 浏览

performance - 如何使用 xperf 收集 CPU 利用率采样(Windows 性能工具包)

我想分析长流程(6-8 小时)的性能。我需要有关创建/完成的进程(使用命令行)和 CPU 利用率的信息。

我发现,Windows Performance Analyzer (wpa.exe/xperfview.exe) 是很好的分析工具。我创建性能数据收集器,选择提供程序“Windows 内核跟踪”,关键字“进程”并获取有关进程的信息。

但我找不到如何通过采样收集有关 CPU 利用率的信息。我知道

xperf.exe -on 基础

收集CPU信息,但它产生的信息太多......

此外,我可以使用性能计数器作为 *.blg 文件收集 CPU 利用率,但我无法将此文件加载到 Windows 性能分析器中。:(

有任何想法吗?

0 投票
0 回答
543 浏览

etw - 如何在 ETW 中正确定义自定义事件时间戳字段,用作 WPA 中甘特图的 StartTime 和 EndTime?

我有兴趣让自定义 ETW 事件显示Start TimeEnd Time,就像一些默认的 Windows 事件一样,以便以甘特图形式呈现它,如下所示:

自定义 ETW 事件的期望结果

我已经破解了Bruce Dawson 的演示清单和多提供程序文件,以将开始时间结束时间字段添加到事件模板之一。

但是,我什至无法将该字段识别为时间字段。

我按照Microsoft 规范中的描述为事件有效负载编写模板,如下所示

并相应地转换我的 QueryPerformanceCounter 变量:

WPA 在相关字段中显示“无法解析数据”: WPA 无法解析数据

然后我查看Microsoft WPA 文档

如果图形是甘特图,则移动到图形元素区域的每一列都必须仅包含时间戳值。甘特图中水平条中的一个标记代表一个时间戳值。

因此,我查看并看到时间戳只是 LARGE_INT,所以我回到原始格式并像这样编写清单:

然后数据以大量纳秒而不是时间的形式呈现。而且我无法将任一字段选择为“开始时间”或“结束时间”。

我究竟做错了什么?

0 投票
1 回答
262 浏览

udp - WPA 显示 NIC 驱动程序 DPC 片段运行了 232 毫秒

我在一台有 8 个逻辑 CPU 的机器上对我的 UDP 代理进行压力测试。在大约 14,000 个 UDP 客户端时,其中一个 CPU (CPU 4) 开始出现峰值,并且 UDP 吞吐量(如任务管理器所示)骤降至零。我使用 WPR 记录峰值期间的 CPU 使用率,WPA 显示 CPU 4 处理的 DPC/ISR 片段(~11K)是所有其他 CPU(每个~5K)的两倍。最长的 DPC 片段运行了 232 毫秒,接下来的 5 个 DPC 片段都运行了超过 100 毫秒,接下来的 57 个运行了 1 到 90 毫秒。

片段被定义为“DPC 或 ISR 不间断运行的一段时间”。(见https://msdn.microsoft.com/en-us/library/windows/hardware/jj679884.aspx

Microsoft 建议 DPC 片段的运行时间不超过 100 微秒!(参见https://msdn.microsoft.com/en-us/library/windows/hardware/ff546551(v=vs.85).aspx

bxvbda.sys 是模块(Broadcom NetXtreme II GigE VBD),um_bdrv_dpc 是所有这些长时间运行的 DPC 片段的函数。

所以我的问题是:我是否正确解释了 DPC 的 WPA 数据?

所有 CPU DPC/ISR

0 投票
1 回答
95 浏览

etw - 在 WPA 中绘制线程的 nr

我想绘制一个进程中的线程数,找到 ThreadID 列并设置唯一计数聚合,这是我想随着时间的推移看到的。我在蓝色条的右侧有这个字段,但没有显示图表(是的,我选择了图例颜色)。

这怎么可能 ?