当前位置:   article > 正文

dll依赖查看工具_PerfView 性能分析工具

perfview性能分析工具

PerfView是一款性能分析工具,是由微软制作推出的一款软件,能帮助用户对电脑的硬件进行分析,跟踪收集机器在各种情况下使用时的信息事件,帮助用户了解机器硬件的使用情况,对每一个进程的使用进行分析,解决配置程序性能数据问题。是一款非常方便实用的软件,能帮用户快速了解程序在运行时调用哪个函数以及他们所需的频率,节省大量的时间提高工作效率。软件小巧无需安装,解压之后即可使用。

6ebc7e5d2eca3007974fb60de669bcfd.png

软件介绍

PerfView是一个快速、方便地收集和查看时间和内存性能数据的工具。PerfView使用操作系统的事件跟踪for Windows(ETW)功能,该功能可以收集信息机器范围内的各种有用事件,如高级收集部分所述。ETW是windows performance group几乎专门用于跟踪和了解windows性能的强大技术,也是其Xperf工具的基础。PerfView可以看作是该工具的简化和用户友好版本。此外,PerfView还能够收集.netgc堆信息,以便进行内存调查(即使对于非常大的GC堆也是如此)。PerfView解码.NET符号信息和GC堆的能力使PerfView成为托管代码调查的理想选择。

d082147eaf4063abb25757da8949d7dc.png

软件功能

1.CPU调查:其中一个比较有用的事件(默认情况下是打开的)是“profile”采样事件。此事件每隔毫秒对计算机的每个CPU的指令指针进行采样。每个示例捕获当前正在执行的线程的完整调用堆栈;提供有关该线程在高抽象级别和低抽象级别上正在做什么的非常详细和有用的信息。PerfView聚合这些堆栈跟踪,并将它们显示在堆栈查看器中,该查看器具有强大的分组操作,使理解这些数据比大多数探查器简单得多。如果应用程序的性能问题与CPU使用率过高有关,那么PerfView将告诉您这一点,并为您提供所需的工具,以准确了解应用程序的哪些部分出现了错误行为。

2.托管内存调查:PerfView还可以获取.netgc堆的快照。由于这些堆可能非常大,PerfView允许控制采样的大小,如果堆太大而无法完整地捕获,则获取具有代表性的样本会遇到一些麻烦。然后它将堆中对象的图形转换为树,并在用于CPU调查的同一堆栈查看器中显示。

3.响应时间调查:通过使用“ThreadTime”选项收集足够的信息,以便PerfView能够测量每个线程(阻塞与否),收集与每个请求相关的所有线程时间,并将其显示为树。这就是“线程时间(有开始-停止活动)视图。

4.挂钟/阻塞时间调查:如果您的程序太慢,但它没有消耗过多的CPU,那么它必须被阻止等待其他东西(磁盘网络,…)。PerfView可以指示操作系统在线程睡眠或唤醒时记录事件,并有一个显示程序正在等待的位置。

5.内存调查:您还可以在每次OS堆内存分配器分配或释放对象时打开事件。使用这些事件,您可以看到哪些调用堆栈负责大多数非托管内存分配。CPU调查:PerfView能够读取Linux内核中内置的Linux“Perf Events”收集器的输出。

6.CPU调查:PerfView能够读取Linux内核中内置的Linux“Perf Events”收集器的输出。

7.在PerfView的stack viewer中查看自己的层次数据:PerfView的stack viewer功能强大,但也非常灵活。PerfView定义了一个非常简单的XML或JSON格式,可以读入这个查看器。这使您可以轻松生成数据,然后可以在PerfView强大的堆栈查看器中查看这些数据。

使用说明

7ecc5666ed2ecfa84a9846b21cf24e68.png

1.单击主页上的“运行命令”超链接。 这将弹出一个对话框,指示要运行的命令以及要创建的数据文件的名称。

2.在“命令”文本对话框中输入“ Tutorial.exe”,然后单击。

3.除非您从提升的环境中启动PerfView,否则操作系统将启动用户访问控制以管理员身份运行(收集配置文件数据是特权活动)。 单击确定接受。

4.此时,它将开始运行命令。 状态栏将闪烁以指示它正在执行您的命令。 您可以点击右下角的“日志”按钮来监视其进度。 完成后,将弹出一个过程选择对话框。 PerfView正在询问您专注于哪个过程。 在这种情况下,我们对“教程”过程很感兴趣,因此我们应该选择该过程。 如果您对所有过程都感兴趣,也有一个按钮。

常见问题

我怎么摆脱?在节点名中(例如ntdll!?)?

PerfView发出一个?对于无法解析为符号名的任何程序地址。

什么是“破”堆?是什么原因造成的?

如果在数据采样时获取的堆栈跟踪没有在启动线程的OS DLL中终止,则认为堆栈已损坏。更多信息请参见破碎的堆栈。

堆栈帧似乎丢失。怎么回事?

用于抓取堆栈的算法并不完美。在某些情况下,堆栈上没有足够的信息来快速找到调用者。编译器还执行内联、tailcall和其他操作,这些操作实际上在运行时完全删除框架。好消息是,虽然有时令人困惑,但通常很容易填补空白。

.NET程序在清除器.dll(或mscorwks.dll)停机时。那是什么?

为了获得.NET方法的良好符号信息,CLR运行时必须转储从本机指令位置到方法名称的映射。当进程关闭时(或者当PerfView请求并显式关闭时)完成此操作。从分析的角度来看,它所消耗的CPU是无趣的(因为它不会正常发生)。排除此时间的最简单方法是设置一个不包括进程关闭的时间范围。

更新日志

支持从主机而不是从容器内部捕获Windows进程隔离容器的跟踪:

在事件容器内提供enablesinmode以启用事件容器内的事件发送标志。

添加/EnableSourceContainerTracking标志,以通知ETW用容器ID标记源自容器的每个用户模式事件。

暴露TraceEvent.ContainerID对于具有容器ID的用户模式事件(使用/EnableSourceContainerTracking启用)。

启用容器化DLL的主机上符号解析,方法是只要容器仍处于活动状态,并提取PDB信息。

将/ImageIDsOnly标志添加到merge命令中,以在主机上启用合并,并在一个或多个容器内启用符号解析关闭框。

在主机上不带此标志的情况下合并一次,然后在每个容器内使用此标志进行合并。

将vcruntime140_1.dll与amd64本机依赖项打包以修复amd64 msdia140.dll的加载

修复GLAD api中可能的内存泄漏。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/115329
推荐阅读
相关标签
  

闽ICP备14008679号