在 Performance Viewer 中分析性能分析结果(已弃用)
Performance Viewer 的弃用
在 2022.3 版本之前,采样、跟踪和逐行性能快照必须在旧版 Performance Viewer 中打开,而时间线快照则在更现代的 Timeline Viewer 中打开。 由于这两个查看器的用户界面和快照分析方法不同,这降低了整体用户体验。
在 dotTrace 2022.3 中,我们弃用了 Performance Viewer,转而使用 dotTrace Viewer(前身为 Timeline Viewer)。 dotTrace 使用它来打开所有类型的快照。 尽管如此,如果您希望在 dotTrace 2022.3 中继续使用已弃用的 Performance Viewer,您仍然可以选择这样做。

以下是 dotTrace Viewer 和已弃用的 Performance Viewer 之间的主要区别。
- 分析开始
在 Performance Viewer 中,您可以从 Threads 或 Call Tree 视图开始分析。 Threads 视图的主要问题是它不允许合并方法调用。 假设您的应用程序在不同线程中运行相同的代码(方法)。 在 Performance Viewer 中,您必须逐一打开所有线程,可能甚至没有意识到它们正在运行相同的代码。

在 dotTrace Viewer 中,您的起点是 Call Tree。 与 Performance Viewer 不同,它会向您显示来自所有线程的合并调用。

在 dotTrace Viewer 中, Threads 列表是一个过滤器,不仅可以让您选择特定线程进行分析,还可以根据其他过滤器显示数据。 例如,在您聚焦到一个特定方法后, 线程 将显示方法调用如何分布在不同线程之间。

Performance Viewer 中的 Call Tree 视图与 Threads 视图有相同的问题。 数据按原样显示——视图既不合并用户调用,也不分组系统调用。 当您开始时,树的顶部总是一堆系统调用,而用户调用隐藏在其中。

在您开始深入挖掘树时,您会发现可能感兴趣的用户方法。 问题在于这些是单独的调用实例。

与您在 dotTrace Viewer 中看到的相比——合并的用户方法调用显示在顶部,完全没有系统调用。 系统调用由于 system call folding 而被隐藏。

如果需要,您可以展开系统调用以获得类似于 Performance Viewer 中的视图。 这将按原样显示调用树——系统调用和用户调用实例都在其位置上:

总的来说,使用 Performance Viewer 的主要困难在于起点。 不清楚您应该从哪里开始性能分析。 在 dotTrace Viewer 中,您可以始终从 调用树 开始,并聚焦到一个可疑的方法。 很大概率上, 热点 中的前五个方法就是您要找的。
- 数据分析
dotTrace Viewer 为快照分析提供了 OLAP 方法——每个视图不仅向您展示一些数据,还可以作为其他视图的过滤器。 通过应用这些过滤器,您可以从不同维度切分快照。

Performance Viewer 向您展示几乎原始的调用栈数据。 尽管在某些情况下这种方法可能更可取,但 dotTrace Viewer 中的过滤器为从不同角度分析数据提供了极大的灵活性。
- 线程复杂性分析
Performance Viewer 会自动计算每个线程的树复杂性,并根据此参数对 线程 视图中的线程进行排序。 这种排序可以让您快速了解哪些线程工作量最大并且值得分析。

目前,dotTrace Viewer 尚未提供此类线程分析功能,但我们计划在未来支持它。
- 子系统
由于 OLAP 方法,dotTrace Viewer 中的子系统与其他过滤器一样是完全功能性的过滤器。 您可以选择一个特定的子系统,其他视图将显示过滤后的数据,例如, 调用树 将仅显示调用栈中属于所选子系统的方法部分。

在 Performance Viewer 中,子系统是静态实体。 它们仅显示选定调用树中子系统之间的时间分布。

- 选项卡和分析状态
Performance Viewer 的一个最强大的功能是能够在单独的选项卡中打开调用树的特定部分。 如果您想查看树中某个可疑部分,然后返回分析而不失去焦点,这将非常有用。

在 dotTrace Viewer 中,分析状态由当前启用的过滤器集决定。 一旦您添加或移除过滤器,状态就会发生变化。 在未来的 dotTrace 版本中,我们将添加使用选项卡保存当前状态的功能。
Performance Viewer 简介
当应用程序运行过慢时,可能很难定位问题并确定采取何种行动。 因此,在对应用程序进行性能分析并获取性能快照之后的下一步是分析快照数据。
分析是在 性能查看器 中进行的——一组视图为您提供对收集数据的不同视角。 在您收集性能快照后,查看器会自动运行。
快照分析是一个难以形式化的过程,因此,您不会在本章中找到任何逐步指导。 尽管如此,本章将为您概述性能分析所需的所有基本操作:
此外,本章还包含一些有用的提示,帮助您在海量快照数据中不迷失方向: