问题标签 [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.
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 不会自动升级)。
c# - xperf WinDBG C# .NET 4.5.2 应用程序 - 了解进程转储
在重负载下,我们的应用程序正在使强大的服务器达到 100% 的 CPU 使用率。阅读进程转储,查看线程,其中一些是 10 分钟。在使用 !CLRStack 时,它们都没有给我任何见解。
!runaway 给了我:
在其中一个线程上调用 !DumpStack ,我得到:
它在告诉我什么?我看到很多对 CLR 的调用,但我不明白问题出在哪里。在 .reload(Thomas 建议)之后,现在我可以看到 GC 调用了。
更新 1
运行 xperf 后,每个 w3wp.exe 消耗大约 45% 的 CPU。按其中一个过滤并按功能分组,有一个功能标记为“?” 占 13.62%,其他为 2.67% 或更少。我怎么知道这是什么“?”?
更新 2
再次运行 xperf,函数JIT_MonEnterWorker_InlineGetThread_GetThread_PatchLabel
占 CPU 使用率的 12.31%。这 ”?” 功能仍然存在。
按堆栈分组:
如您所见,这两个占 CPU 使用率的 27% 以上(对于每个进程,这很重要)。
更新 3
使用 wpr.exe 后(@magicandre1981 建议):
我发现 FormsAuthentication 和在关键路径上对 Ninject 的一些不必要的调用导致了大约 16% 的 CPU 使用率。我仍然不明白运行 gor 10 分钟或更长时间的线程。
更新 4
尝试了 DebugDiag(来自@leppie 的建议),它刚刚确认挂起的线程都类似于:
或由于 StackExchange.Redis:
或者
window - 如何使用 wpaexporter(Windows 性能工具包)在文本文件中导出完整的堆栈
如何使用"Windows Performance Toolkit"
实用程序将完整的堆栈导出到文本文件中wpaexporter
。我正在使用这个命令,但这只给出了根元素而不是完整的堆栈。
xperf - xperf - 进程为给定的一对 ETW 事件消耗的 CPU 周期
场景: 1. 启动 Xperf。
- 应用程序已启动。App中有ETW事件(E1,E2)。
- 在运行 App 时,会引发 ETW(E1,E2) 事件,(T1,T2) 是对应于 (E1, E2) 事件的时间戳。
- 停止 Xperf。生成 ETL 文件。
- (T1,T2) 时间戳是从 ETL 文件中获取的。
查询:如何使用xperf获取App在时间戳(T1,T2)之间消耗的CPU周期?
multithreading - 我如何分析多线程问题?
这是我第一次尝试分析多线程程序。
我怀疑问题是它在等待什么,但我不知道是什么,程序永远不会达到 100% 的 CPU、GPU、RAM 或 I/O 使用率。
直到最近,我只从事单线程的项目,或者线程非常简单的项目(例如:通常一个额外的线程只是为了确保在程序运行时 UI 不会被锁定,或者一旦我用一个单独的线程来处理 .XM 和 .IT 文件音乐,以便主线程可以做所有事情,而另一个内核中的另一个线程可以负责解码这些文件)。
该程序有多个线程,它们不会在相同的任务上进行并行工作,每个线程都有自己完全独立的目的(例如,一个线程专用于处理对操作系统的所有与声音相关的 API 调用)。
我下载了 Microsoft 性能工具,有一个前 Valve 员工的博客解释说他们努力做到这一点,但尽管我什至设法制作了一些配置文件之类的东西,但我并不真正理解我所看到的,它是对我来说只有一堆漂亮的图表(除了 CPU 使用图表,我已经从对单线程应用程序进行基于样本的分析中知道了),那么,我如何找到程序等待某些东西的原因?或者我如何找到它在等待什么?我如何找到哪个线程阻塞了其他线程?
callstack - 为什么“通用事件”没有调用堆栈
我确实读过
和其他来源,但我想做的最直接的事情就是在 WPA 的“通用事件”图中显示“堆栈”列。
为什么不存在?当然,因为堆栈信息不可用,但为什么呢?我确实知道“xperf -help stackwalk”,但列出的不是我想要的。例如,
无法获取网络事件的调用堆栈。为什么?我肯定错过了什么。谢谢!
bios - 来自休眠恢复 ETW 跟踪的 BiosInitTime
查看使用“tracerpt.exe”解析的 ETW 事件中的“BiosInitTime”,我注意到休眠/S4 恢复它始终为 0(参见最后的示例)。使用 XPERF 或通过 ADK Windows 评估控制台直接收集的 etl 跟踪也会发生同样的情况。但通过 WAC/WPA 分析和 GUI,将显示 BIOS。所以看起来信息在那里,但“tracerpt.exe”正在解析错误的事件来计算“BiosInitTime”。
我应该检查哪些特定的开始/停止事件以通过 etl 跟踪计算 Bios 初始化时间,例如,使用 xperf?
谢谢
windows - 当我在 SSD 驱动器上的 Windows 10 (TH2) 上执行重启跟踪时,为什么会出现错误:“在 300 秒后放弃等待预取程序”?
我正在尝试使用 Windows 性能工具包 (WPT) 测量重启性能。我遇到错误的系统在 SSD 驱动器上有 Windows 10 Threshold 2。
我使用的命令是:
错误如下: 重新启动后系统等待 60 秒,然后在接下来的 300 秒内,我在屏幕上看到“等待预取器”。然后我得到一个错误说
在旋转驱动器 (HDD) 上安装相同版本的操作系统时,我看不到此错误,但仅在 SSD 上看到此错误。我还在早期版本的操作系统(Windows 10 RTM 240)上运行了相同的命令,但没有遇到任何问题。
我也比较了以下注册表项,但这些项的值没有区别: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SysMain
是什么导致此错误专门发生在带有 Windows 10 TH2 的 SSD 上,而不是在其他提到的系统上?
windows - 如何更改 WPR 跟踪文件名称?
我是 Windows 性能记录器 (WPR) 的新手,想知道在运行 RebootCycle 时是否可以更改跟踪文件的名称。
我现在使用的命令是:
wpr -start GeneralProfile -filemode -onoffscenario RebootCycle -onoffresultspath C:\traces -numiterations 1
使用上述命令,WPR 生成启动和关闭跟踪文件,文件名格式如下:
机器名称.Date.Time.RebootCycle_1.Boot.etl。
这会导致每次运行命令时跟踪文件都具有不同的名称,但我希望具有预定义的名称,例如boot.etl和shutdown.etl。我怎样才能做到这一点?
etw - WPA“按 Alt + Space 显示更多细节”
将鼠标悬停在 Windows 性能分析器图表视图中的数据点上会弹出一个小的弹出窗口,上面写着“按 Alt + 空格键显示更多详细信息”。但是当我这样做时,我会得到所有窗口共有的顶级对话框,该对话框为您提供恢复、最小化、最大化和关闭的选项。
https://msdn.microsoft.com/en-us/library/windows/hardware/dn450837.aspx上的“WPA 键盘快捷键”页面没有提到“Alt + Space”。谷歌、必应或鸭鸭搜索也不行。
旧的 xperfview 将在悬停在数据点上时显示与数据点关联的所有数据。我如何在 WPA 中做到这一点?