Oracle® Developer Studio 12.5:性能分析器

退出打印视图

更新时间: 2016 年 6 月
 
 

性能分析器视图

    以下因素决定了在打开实验时,是否在导航栏中显示数据视图:

  • 实验中数据的类型决定了显示什么数据视图。例如,如果实验包含 OpenMP 数据,则将自动打开 OpenMP 的视图来显示数据。

  • 启动性能分析器时读取的配置文件指定要显示的缺省数据视图。

可以使用 "Views"(视图)菜单或按钮打开 "Settings"(设置)对话框(请参见视图设置),以选择要在当前性能分析器会话中显示的视图。

大多数视图包含上下文菜单,在右键单击视图中的某个项目时将打开上下文菜单。您可以使用上下文菜单来添加过滤器,或者执行与该数据视图相关的其他活动。在一个视图中应用过滤器时,将在可以过滤的所有视图中过滤数据。

"Welcome"(欢迎)页

如果启动性能分析器时未在命令行上指定要打开的实验,显示的第一个页面是 "Welcome"(欢迎)页。可以通过 "Welcome"(欢迎)页轻松地开始应用程序的分析、查看最近的实验、比较实验以及查看文档。打开实验后,在性能分析器会话期间仍可以随时从导航面板选择 "Welcome"(欢迎)页。

下图显示 "Welcome"(欢迎)页。

图 3  性能分析器 "Welcome"(欢迎)页

image:性能分析器 “Welcome“(欢迎)页

"Overview"(概述)屏幕

打开实验时,性能分析器将显示 "Overview"(概述),其中显示已装入实验的性能度量,您可以快速了解度量值高的位置。可以使用 "Overview"(概述)选择要在其他视图中了解的度量。查看 "Overview"(概述)时按 F1 可显示有关 "Overview"(概述)的详细信息。

下图为显示 "Overview"(概述)的性能分析器窗口。

图 4  性能分析器的 "Overview"(概述)屏幕

image:性能分析器的 “Overview“(概述)屏幕

选择度量时,窗口底部的 "Metrics Preview"(度量预览)面板将显示度量在数据视图中的形态。您可以通过两种方法指定要在数据视图中查看的度量,一种是使用选择按钮,另一种是专门选择感兴趣的度量。有关更多信息,请参见帮助中的“概述屏幕”主题。

"Functions"(函数)视图

"Functions"(函数)视图显示目标程序的函数及其度量的列表,这些度量是根据在实验中收集的数据得出的。度量要么是独占度量,要么是非独占度量。独占度量表示仅由函数本身使用。 非独占度量表示可由函数及其所调用的所有函数使用。有关度量的更多详细信息,请参见函数级度量:独占、非独占和归属

collect(1) 手册页和帮助以及性能数据中提供了收集的各种数据类型的可用度量列表。

时间度量显示为秒,精度可达到毫秒。百分比精确到 0.01%。 如果度量值恰好为 0,则时间和百分比显示为 "0"。如果值并非恰好为 0,但是小于精确度,则其值显示为 "0.000",百分比显示为 "0.00"。由于进行了舍入,百分比总和可能不会恰好是 100%。计数度量显示为整数计数。

初始显示的度量基于收集的数据。 如果收集的数据类型多于一种,则显示每种类型的缺省度量。可以选择要在 "Overview"(概述)页面中显示的度量。有关更多信息,请参见"Overview"(概述)屏幕

要搜索函数,请使用工具栏中的查找工具。

要查看函数的源代码,可双击函数以打开 "Source"(源)视图,其中显示源代码中代表该函数的行。

要选择单个函数,请单击该函数,在右侧的 "Selection Details"(选择详细信息)窗口中将显示有关它的更多信息。

要选择在视图中连续显示的多个函数,请选择组中的第一个函数,然后按住 Shift 键并单击组中的最后一个函数。

要选择视图中不连续显示的多个函数,请选择组中的第一个函数,然后通过按住 Ctrl 键并单击每个函数来选择其他函数。

您也可以在 "Function"(函数)视图中右键单击打开上下文菜单,然后选择所选函数的预定义过滤器。有关过滤的详细信息,请参见性能分析器帮助。

"Timeline"(时间线)视图

"Timeline"(时间线)视图以时间函数形式显示所记录的事件和抽样点的图表。数据显示在水平栏中。缺省情况下,对于每个实验,顶部都有一栏用于表示 CPU 利用率抽样,而且还有一组分析数据栏用于表示每个线程。针对每个线程显示的数据由分析应用程序时收集的数据确定。

"Timeline"(时间线)视图可用于对程序执行以下操作:

  • 识别程序活动的各个阶段

  • 使用定制颜色突出显示函数和方法

  • 按时间轴和纵轴放大以查看详细信息

  • 在 "Selection Details"(选择详细信息)面板上查看完整事件信息

  • 按时间范围、线程和 CPU 过滤全局数据

您可能会看到以下数据栏:

CPU Utilization Samples(CPU 利用率抽样)

实验包含抽样数据时,显示的顶部栏为 CPU 利用率抽样。抽样点中的数据表示该点和前面点之间所用的 CPU 时间。抽样数据包括微观状态信息,在 Oracle Solaris 系统上可以获得该信息。

Oracle Solaris 操作系统使用称为微观状态计数的技术收集有关每个事件的执行状态的统计信息。性能分析器显示的事件计时度量对应于在各状态中花费的相对时间长度。CPU 利用率抽样显示实验中所有线程的计时度量的摘要。单击某个抽样可在右侧的"Selection Details"(选择详细信息)面板中显示该抽样的计时度量。可以通过显示事件状态来在时间线中显示各个事件的计时度量。

分析和跟踪数据栏

时钟分析、硬件计数器分析和跟踪数据的数据栏针对每个记录的事件显示一个事件标记。事件标记包含随事件一起记录的调用堆栈的颜色编码表示形式。

单击某个事件标记可以在"Selection Details"(选择详细信息)面板中查看有关该事件的信息,并在 "Call Stack"(调用堆栈)面板中查看调用堆栈函数。双击 "Call Stack"(调用堆栈)面板中的函数可以转至 "Source"(源)视图并查看该函数的源代码以及度量。

对于某些类型的数据,事件可能会因重叠而不可见。如果两个或多个事件恰好出现在同一位置,则只能绘制一个事件;如果一个或两个像素内有两个或多个事件,将绘制全部事件,但是可能无法从视觉上区分它们。不管哪种情况,都会在事件下方显示一个小型的灰色勾选标记,指示该事件的边界。可以进行放大来查看事件。可以使用左右方向键沿任意方向在事件之间切换,以及显示隐藏的事件。可以通过显示事件密度查看有关事件的更多信息。

堆大小

仅当启用了 heaptrace 收集选项时,堆大小数据才可用。堆大小由两个图形构成。"Net Bytes Allocated"(分配的净字节)跟踪已分配字节数减去已释放字节数后得到的数据。"Net Bytes Leaked"(泄漏的净字节)会显示累计的从未释放的已分配字节数。

Event States(事件状态)

事件状态显示在条形图中,该条形图将应用程序处于各种状态的时间的分布显示为时间函数。

对于在 Oracle Solaris 上记录的时钟分析数据,事件状态图显示 Oracle Solaris 微状态。事件状态的颜色编码与 CPU 利用率抽样栏相同。

缺省情况下显示事件状态。可以通过单击 "Timeline"(时间线)工具栏中的 "Timeline Settings"(时间线设置)按钮或 "Timeline settings"(时间线设置)图标,然后在 "Settings"(设置)对话框的 "Timeline"(时间线)区域中取消选择 "Event States"(事件状态)来隐藏事件状态。

事件密度

事件密度由一条蓝色的线表示,这条线将事件频率显示为时间函数。

要显示事件密度,请单击 "Timeline"(时间线)工具栏中的 "Timeline Settings"(时间线设置)按钮或 "Timeline settings"(时间线设置)图标,然后在 "Settings"(设置)对话框的 "Timeline"(时间线)区域中选择 "Event Density"(事件密度)。

然后事件密度会立即显示在每种数据类型的时间线数据栏的下方。事件密度显示每个水平时间段内发生的事件计数。折线图垂直轴的刻度为 0 到该特定数据栏在可见时间范围内的最大事件计数。

如果所使用的时间线缩放设置使得每个可见时间段内有许多事件时,可使用事件密度识别事件发生频率较高的时间段。要找出这样的时间段,您可以放大。然后可以右键单击并选择一个上下文过滤器以仅包括可见时间范围内的数据,并使用其他性能分析器数据视图分析该特定时间段的数据。

"Source"(源)视图

如果有源代码可用,"Source"(源)视图显示包含所选函数源代码的文件,在每个源代码行左侧的列中,都提供有性能度量注释。

高度量值用黄色高亮显示,指明这些源代码行位于资源使用的热点区域。对于每个热点源代码行,还在滚动条旁边的右边界中显示一个橙色的导航标记。低于热点阈值的非零度量不突出显示,但用灰色导航标记进行标记。

要快速导航到具有度量的源代码行,请单击右边界中的黄色标记以跳到具有度量的行。要跳到下一个具有度量的代码行,可以右键单击度量本身并选择诸如 "Next Hot Line"(下一个热点行)或 "Next Non-Zero Metric Line"(下一个非零度量行)之类的选项。

可以在 "Settings"(设置)对话框的 "Source/Disassembly"(源/反汇编)标签中设置突出显示度量的阈值。

"Source"(源)视图在源代码的列标题中显示源文件和相应对象文件的完整路径以及装入对象的名称。少数情况下,会使用同一源文件编译多个对象文件,此时 "Source"(源)视图显示包含所选函数的对象文件的性能数据。

如果性能分析器找不到源文件,您可以单击 "Source"(源)视图中的 "Resolve"(解析)按钮,浏览到源文件,或键入指向源文件的路径或浏览到该路径,源代码随后将从新位置显示出来。另外,还可以选择 "Archive Source Files Inside Experiment"(在实验内归档源文件)。这会将源文件复制到实验中。有关此按钮的更多信息,请参见 "Help"(帮助)菜单中的 "Resolve Source File"(解析源文件)主题。

有关用于查找实验源代码的过程的说明,请参见工具如何查找源代码

双击 "Function"(函数)视图中的函数打开 "Source"(源)视图时,显示的源文件是该函数的缺省源代码上下文。函数的缺省源上下文是包含函数的第一条指令(对于 C 代码,为函数的左花括号)的文件。紧接着第一条指令,带注释的源文件为函数添加索引行。源窗口用尖括号中的红色斜体文本显示索引行,格式如下:

<Function: f_name>

函数可能具有替代源上下文,即包含归属于该函数的指令的其他文件。这些指令可能来自头文件或内联到所选函数中的其他函数。如果存在替代源上下文,则缺省源上下文的开头将包含指示替代源上下文所在位置的扩展索引行列表。

<Function: f, instructions from source file src.h>

双击引用其他源上下文的索引行,将在与索引函数关联的位置打开包含该源上下文的文件。

为了便于导航,替代源上下文也以一个索引行列表开头,通过这些索引行可以返回到缺省源上下文和替代源上下文中定义的函数。

源代码与选择显示的编译器注释交错显示。 可以在 "Settings"(设置)对话框中设置显示的注释类别。可以在 .er.rc 缺省值文件中设置缺省类别。

可以更改或重新组织 "Source"(源)视图中显示的度量。有关详细信息,请参见 "Help"(帮助)菜单。

有关 "Source"(源)视图内容的详细信息,请参见性能分析器 "Source"(源)视图布局

"Call Tree"(调用树)视图

"Call Tree"(调用树)视图将程序的动态调用图显示为树,其中每个函数调用显示为可以展开和折叠的节点。展开的函数节点显示由该函数生成的所有函数调用,以及这些函数调用的性能度量。

当您选择某个节点时,"Selection Details"(选择详细信息)窗口将显示该函数调用及其被调用方的度量。归属度量的百分比是总程序度量的百分比。树的缺省根目录是 <Total>,这不是一个函数,而是表示程序的所有函数的 100% 的性能度量。

使用 "Call Tree"(调用树)视图可以查看特定调用跟踪的详细信息并分析哪些跟踪具有最大的性能影响。可以通过程序结构进行导航,搜索高度量值。


提示  -  要轻松查找花费时间最多的分支,请右键单击任一节点,然后选择 "Expand Hottest Branch"(展开最热分支)。

要为所选分支或所选函数设置预定义过滤器,可以在 "Call Tree"(调用树)视图中右键单击打开上下文菜单。采用这种方法过滤,您可以筛选掉所有分析器视图中您不感兴趣的区域的数据。

"Callers-Callees"(调用方-被调用方)视图

"Callers-Callees"(调用方-被调用方)视图显示代码中函数之间的调用关系,同时显示性能度量。"Callers-Callees"(调用方-被调用方)视图允许通过一次为一个调用构建调用堆栈片段详细检查代码分支的度量。

该视图显示三个独立的面板:"Callers"(调用方)面板位于顶部,"Stack Fragment"(堆栈片段)面板位于中部,"Callees"(被调用方)面板位于下部。首次打开 "Callers-Callees"(调用方-被调用方)视图时,"Stack Fragment"(堆栈片段)面板中的函数即为在其他分析器视图之一中选择的函数,例如,"Function"(函数)视图或 "Source"(源)视图。"Callers"(调用方)面板列出用于调用 "Stack Fragment"(堆栈片段)面板中函数的函数,"Callees"(被调用方)面板列出由 "Stack Fragment"(堆栈片段)面板中函数调用的函数。

通过将调用方或被调用方添加到调用堆栈,可以以一次一个调用的方式围绕中心函数构造调用堆栈片段。

要添加对堆栈片段的调用,可在 "Callers"(调用方)窗格或 "Callees"(被调用方)窗格中双击一个函数,也可以选择一个函数并单击 "Add"(添加)按钮。

要删除函数调用,可双击位于调用堆栈片段顶部或底部的函数,或者选择顶部或底部函数并单击 "Remove"(删除)。


提示  -  要通过上下文菜单执行 "Add"(添加)和 "Remove"(删除)任务,可右键单击一个函数并选择适当的命令。

要将函数设置为调用堆栈片段的头部(顶部)、中心或尾部(底部),请选择函数并单击 "Set Head"(设置头部)、"Set Center"(设置中心)或 "Set Tail"(设置尾部)。这种新的排序可使当前位于调用堆栈片段中的其他函数,相对于所选函数在堆栈片段中的新位置,移动到 "Callers"(调用方)或 "Callees"(被调用方)区域中的相应位置。

使用位于 "Stack Fragment"(堆栈片段)面板上方的 "Back"(后退)和 "Forward"(前进)按钮查看您对调用堆栈片段的更改历史记录。

当您在堆栈片段中添加和删除函数时,将为整个片段计算度量,并将结果显示在片段中的最后一个函数旁边。

可以在 "Callers-Callees"(调用方-被调用方)视图的任意面板中选择一个函数,然后右键单击打开上下文菜单并选择过滤器。将根据您在此视图以及所有分析器数据视图中所做的选择来过滤数据。有关使用上下文过滤器的详细信息,请参见联机帮助。

    "Callers-Callees"(调用方-被调用方)视图显示归属度量:

  • 对于 "Stack Fragment"(堆栈片段)面板中的调用堆栈片段,归属度量表示该调用堆栈片段的独占度量。

  • 对于被调用方,归属度量表示被调用方度量中归属于调用堆栈片段调用的那一部分。被调用方的归属度量与调用堆栈片段之和应该等于调用堆栈片段的度量。

  • 对于调用方,归属度量表示调用堆栈片段的度量中归属于调用方的调用的那一部分。所有调用方的归属度量之和同样应等于调用堆栈片段的度量。

有关度量的更多信息,请参见函数级度量:独占、非独占和归属

Index Objects(索引对象)视图

每个 "Index Objects"(索引对象)视图显示归属于各种索引对象的数据的度量值,例如,"Threads"(线程)、"CPUs" (CPU) 和 "Seconds"(秒)。由于索引对象不是分层结构,因此不显示非独占度量和独占度量。对于每一种类型,只显示一个度量。

有多个预定义的 "Index Objects"(索引对象)视图:"Threads"(线程)、"CPUs" (CPU)、"Samples"(抽样)、"Seconds"(秒)、"Processes"(进程)和 "Experiment IDs"(实验 ID)。这些视图将在下文中分别予以说明。

还可以定义定制索引对象。单击 "Settings"(设置)对话框中的 "Add Custom View"(添加定制视图)按钮,在 "Add Index Objects"(添加索引对象)对话框中为对象设置值。

"Threads"(线程)视图

"Threads"(线程)视图显示线程及相应度量的列表。线程使用进程和线程对表示,并且缺省情况下显示 CPU 总时间。如果装入的实验中存在其他度量,则缺省情况下还会显示这些度量。缺省情况下,不显示 "Threads"(线程)视图。您可以从 "Views"(视图)菜单选择它。

您可以使用过滤器按钮来过滤在此视图和性能分析器视图中显示的数据。

"CPUs" (CPU) 视图

"CPUs" (CPU) 视图显示处理目标应用程序运行的 CPU 及其度量的列表。CPU 使用 CPU 编号表示,并且缺省情况下显示 CPU 总时间。如果装入的实验中存在其他度量,则缺省情况下还会显示这些度量。如果 "CPUs" (CPU) 视图不可见,可以从 "Views"(视图)菜单中选择。

您可以使用过滤器按钮来过滤在此视图和性能分析器视图中显示的数据。

"Samples"(抽样)视图

"Samples"(抽样)视图显示抽样点及其度量的列表,这些度量反映在已装入实验的每个抽样点处记录的微观状态。抽样使用抽样编号进行表示,并在缺省情况下显示 CPU 总时间。如果在 "Overview"(概述)面板或 "Settings"(设置)对话框中选择了其他度量,则这些度量也会显示。如果 "Samples"(抽样)视图不可见,可以从 "Views"(视图)菜单中选择。

您可以使用过滤器按钮来过滤在此视图和性能分析器视图中显示的数据。

有关抽样点的更多信息,请参见性能分析器帮助主题“抽样点”。

"Seconds"(秒)视图

"Seconds"(秒)视图显示在实验中捕获的每秒程序运行情况,以及在那一秒内收集的度量。"Seconds"(秒)视图与 "Samples"(抽样)视图的不同之处在于,前者显示定期抽样,从 0 开始每一秒都进行抽样,而且无法更改间隔。"Seconds"(秒)视图缺省情况下列出执行秒数和 CPU 总时间。如果装入的实验中存在其他度量,则还会显示这些度量。如果在 "Overview"(概述)中或使用 "Settings"(设置)对话框选择了其他度量,则那些度量也会显示。

您可以使用过滤器按钮来过滤在此视图和性能分析器视图中显示的数据。

"Processes"(进程)视图

"Processes"(进程)视图显示应用程序创建的进程及其度量的列表。进程使用进程 ID (process ID, PID) 编号表示,缺省情况下显示"Total CPU time"(CPU 总时间)度量。如果装入的实验中存在其他度量,则还会显示这些度量。如果在 "Overview"(概述)中或使用 "Settings"(设置)对话框选择了其他度量,则那些度量也会显示。

使用 "Processes"(进程)视图可以查找使用最多资源的进程。如果存在您希望使用其他视图隔离或浏览的特定进程集,则可以使用上下文菜单中提供的过滤器来过滤出其他进程。

"Experiment IDs"(实验 ID)视图

"Experiment IDs"(实验 ID)视图显示应用程序创建的进程及其度量的列表。实验 ID 使用进程 ID (process ID, PID) 编号表示,缺省情况下显示 CPU 总时间度量。如果装入的实验中存在其他度量,则还会显示这些度量。如果在 "Overview"(概述)中或使用 "Settings"(设置)对话框选择了其他度量,则那些度量也会显示。度量值反映了装入的实验中在每个采样点记录的微状态。这些值反映了所装入实验的每个实验中记录的度量的值或百分比。

"MemoryObjects"(内存对象)视图

每个 "MemoryObjects"(内存对象)视图显示归属于各种内存对象(例如页)的数据空间度量的度量值。如果一个或多个装入的实验包含数据空间分析,您可以在 "Settings"(设置)对话框的 "Views"(视图)标签中选择要显示其视图的内存对象。可以显示任意数量的 "MemoryObjects"(内存对象)视图。

预定义了多种 "MemoryObjects"(内存对象)视图。为虚拟页面和物理页面预定义了内存对象,名称包括 Vpage_8K、Ppage_8K、Vpage_64K 等等。还可以定义定制内存对象。单击 "Settings"(设置)对话框中的 "Add Custom Object"(添加定制对象)按钮,然后为 "Add Memory Objects"(添加内存对象)对话框中的对象设置值。

"DataLayout"(数据布局)视图

"DataLayout"(数据布局)视图显示所有程序数据对象的带注释的数据对象布局,其中还包括这些对象的数据派生度量数据。 该视图仅适用于包括数据空间分析的实验,包括数据空间分析的实验是对硬件计数器溢出分析的扩展。有关更多信息,请参见数据空间分析和内存空间分析

总的来说,视图中显示的布局按照结构的数据排序度量值进行排序。视图显示每个聚集的数据对象及归属于该对象的总度量,后跟数据对象中的所有元素(按偏移量顺序)。每个元素相应地具有其自己的度量,并且在一个 32 字节的块中指示其大小和位置。

要显示 "DataLayout"(数据布局)视图,可在 "Settings"(设置)对话框的 "Views"(视图)标签中选择它(请参见视图设置)。与 "DataObjects"(数据对象)视图相同,仅在一个或多个装入的实验包含数据空间分析时 "DataLayout"(数据布局)视图才可见。

要选择单个数据对象,请单击该对象。

要选择在视图中连续显示的多个对象,请选择第一个对象,然后按住 Shift 键并单击最后一个对象。

要选择在视图中不连续显示的多个对象,请选择第一个对象,然后通过按住 Ctrl 键并单击每个对象来选择其他对象。

"DataObjects"(数据对象)视图

"DataObjects"(数据对象)视图显示数据对象及其度量的列表。该视图仅适用于包括数据空间分析的实验,包括数据空间分析的实验是对硬件计数器溢出分析的扩展。有关更多信息,请参见数据空间分析和内存空间分析

要显示该视图,可在 "Settings"(设置)对话框的 "Views"(视图)标签中选择它(请参见视图设置)。仅在一个或多个装入的实验包含数据空间分析时 "DataObjects"(数据对象)视图才可见。

该视图显示程序中的各种数据结构和变量的硬件计数器内存操作度量。

要选择单个数据对象,请单击该对象。

要选择在视图中连续显示的多个对象,请选择第一个对象,然后按住 Shift 键并单击最后一个对象。

要选择在视图中不连续显示的多个对象,请选择第一个对象,然后通过按住 Ctrl 键并单击每个对象来选择其他对象。

I/O 视图

使用 I/O 视图可以识别应用程序的 I/O 模式并确定影响其性能的 I/O 瓶颈。如果针对 I/O 跟踪数据分析了应用程序,则 I/O 视图可用。

可以根据以下选项之一聚集 I/O 数据:

文件名

以表显示程序访问的文件。每行代表一个文件。每行的度量代表针对该文件的所有访问聚集的 I/O 统计信息。

文件描述符

以表显示程序访问的文件的文件描述符。每行代表单个打开的文件实例。如果同一文件打开了多次,则该表有多行对应同一文件。每行的度量适用于单个打开的文件实例。

调用堆栈

以表显示列有任意堆栈编号的调用堆栈。单击某个堆栈时,该堆栈中的函数调用将显示在 "Call Stack"(调用堆栈)面板中。度量适用于所选的调用堆栈。

"Heap"(堆)视图

"Heap"(堆)视图显示具有指示可能存在内存泄漏的内存分配度量的调用堆栈列表。 调用堆栈使用任意的堆栈编号进行标识。一个调用堆栈用于指示内存使用量峰值。

单击某个调用堆栈将在 "Selection Details"(选择详细信息)面板中显示度量详细信息,并在 "Call Stack"(调用堆栈)面板中显示调用堆栈的函数调用。可以在 "Call Stack"(调用堆栈)面板中双击某个函数以查看源代码。还可以设置过滤器以过滤掉选择的调用堆栈,或者过滤掉未选择的调用堆栈。仅当一个或多个装入的实验包含堆跟踪数据时,才可以在 "Settings"(设置)对话框的 "Views"(视图)标签中选择 "Heap"(堆)视图。"Heap"(堆)视图的底部面板显示代表完整目标应用程序的 <Total> pseudo 函数的详细数据。

"Data Size"(数据大小)视图

针对包含的数据具有大小元素(例如字节数)的实验提供了 "Data Size"(数据大小)视图。包括堆跟踪、I/O 跟踪或 MPI 跟踪的实验具有 "Data Size"(数据大小)视图。

"Data Size"(数据大小)视图将数据组织为数据大小范围,并为其数据落在某个给定范围内的事件计算度量。没有大小元素的数据归属到数据大小 0。

您可以使用 "Data Size"(数据大小)视图来过滤数据。例如,在包含堆跟踪数据的实验中,您可以选择对于 "Bytes Leaked"(泄漏的字节数)具有较高度量的一个大小范围行并添加过滤器 "Include only events with selected items"(仅包括含有所选项的事件)。当转到其他数据视图时,将对数据进行过滤以仅显示产生的内存泄漏处于您选择的大小范围内的事件。

"Duration"(持续时间)视图

针对包含的数据具有持续时间的实验提供了 "Duration"(持续时间)视图。包括 I/O 跟踪数据、MPI 跟踪、堆跟踪和同步跟踪数据的实验具有 "Duration"(持续时间)视图。

"Duration"(持续时间)视图将数据组织为持续时间范围,并为其数据落在各个持续时间范围内的事件计算度量。对于 I/O 跟踪、MPI 跟踪和同步跟踪,都会记录函数调用的持续时间。对于堆跟踪,持续时间是指分配内存与释放内存之间的时间。没有持续时间元素的数据归属到持续时间 0。

您可以使用 "Duration"(持续时间)视图来过滤数据。例如,在包含堆跟踪数据的实验中,您可以选择对于 "Bytes Allocated"(分配的字节数)具有较高度量的一个持续时间范围行并添加过滤器 "Include only events with selected items"(仅包括含有所选项的事件)。当转到其他数据视图时,将对数据进行过滤以仅显示其持续时间与您选择的范围匹配的事件,这些事件可能表明内存分配的持续时间比预期时间要长。

"OpenMP Parallel Region"(OpenMP 并行区域)视图

对于使用通过 Oracle Developer Studio 编译器编译的 OpenMP 任务的程序,"OpenMP Parallel Region"(OpenMP 并行区域)视图仅适用于使用 OpenMP 3.0 收集器记录的实验。有关更多信息,请参见OpenMP 分析的限制

该视图列出程序执行期间遇到的所有并行区域和从相同分析数据计算得出的度量值。针对当前并行区域计算独占度量。非独占度量反映嵌套并行性。它们归属于当前并行区域以及从中创建该区域的父代并行区域。归属进一步递归追溯,最终将追溯到最顶层的隐式 OpenMP 并行区域,该区域表示程序的串行执行(在任何并行区域之外)。如果程序中不存在嵌套并行区域,独占度量和非独占度量具有相同的值。

如果多次调用包含并行区域的函数,并行区域的所有实例将聚集在一起,呈现为相应视图中的一个行项目。

该视图对导航很有用。您可以选择感兴趣的项,例如具有最长 OpenMP 等待时间的并行区域,然后分析其源代码或者选择一个上下文过滤器以便仅包括与选定的项相关的数据。然后,您可以通过使用其他视图("Functions"(函数)、"Timeline"(时间线)、"Threads"(线程)等)来分析其他程序对象是如何表示数据的。

"OpenMP Task"(OpenMP 任务)视图

"OpenMP Task"(OpenMP 任务)视图显示 OpenMP 任务及其度量的列表。对于使用通过 Oracle Developer Studio 编译器编译的 OpenMP 任务的程序,此视图中的选项仅适用于使用 OpenMP 3.0 收集器记录的实验。有关更多信息,请参见OpenMP 分析的限制

该视图列出在程序执行期间遇到的任务,以及从分析数据计算的度量值。独占度量仅应用于当前任务。非独占度量包括 OpenMP 任务的度量及其子任务的度量,父子关系是在任务创建时间建立的。来自隐式并行区域的 OpenMP 任务表示以串行方式执行程序。

如果多次调用包含任务的函数,并行区域的所有实例将聚集在一起,呈现为相应视图中的一个行项目。

该视图对导航很有用。可以选择感兴趣的项目(如具有最高 OpenMP 等待时间的任务),通过单击 "Source"(源)视图分析其源代码。您还可以右键单击选择上下文过滤器,从而只包含与所选项相关的数据,然后使用以下的其他视图来分析其他程序对象如何表示该项:"Functions"(函数)、"Timeline"(时间线)、"Threads"(线程)等等。

"Lines"(行)视图

"Lines"(行)视图显示包含源行及其度量的列表。

源行标有行所在的函数以及行号和源文件名称。如果函数无行号信息或函数的源文件未知,则在行显示中,函数的所有程序计数器 (program counter, PC) 聚集在一起,显示为该函数的单个条目。 在行显示中,来自隐藏了其函数的装入对象中的函数中的 PC 聚集在一起,显示为该装入对象的单个条目。如果从 "Lines"(行)视图中选择一个行,则会在 "Selection Details"(选择详细信息)窗口中显示指定行的所有度量。如果从 "Lines"(行)视图中选择一个行后选择 "Source"(源)或 "Disassembly"(反汇编)视图,则会将显示定位到相应的行。

"PCs" (PC) 视图

"PCs" (PC) 视图列出程序计数器 (program counter, PC)及相应度量。 PC 标有其所来自的函数及在该函数中的偏移。在 PC 显示中,隐藏了函数的装入对象中的函数中的 PC 聚集在一起,显示为装入对象的单个条目。 在 "PCs" (PC) 视图中选择一行,会在 "Summary"(摘要)标签中显示该 PC 的所有度量。 如果从 "PCs" (PC) 视图中选择一个行后选择 "Source"(源)视图或 "Disassembly"(反汇编)视图,则会将显示定位到相应的行。

有关 PC 的更多信息,请参见调用堆栈和程序执行一节。

"Disassembly"(反汇编)视图

"Disassembly"(反汇编)视图显示包含所选函数的对象文件的反汇编列表,且每条指令带有性能度量注释。 要查看反汇编代码列表,需要在工具栏的 "View Mode"(查看模式)列表中选择 "Machine"(计算机)。

反汇编列表中插入了源代码(如果有)以及所有选择显示的编译器注释。在 "Disassembly"(反汇编)视图中查找源文件的算法与在 "Source"(源)视图中使用的算法相同。

与 "Source"(源)视图一样,"Disassembly"(反汇编)视图中也显示索引行。 但与 "Source"(源)视图不同的是,替代源上下文的索引行不能直接用于导航。此外,替代源上下文的索引行显示在 #included 或内联代码插入位置的开头,而不是仅在 "Disassembly"(反汇编)视图的开头列出。

#included 代码或来自其他文件的内联代码显示为原始反汇编指令,不与源代码交叉在一起显示。但是,将光标置于这些指令之一上并选择 "Source"(源)视图可以打开包含 #included 代码或内联代码的源文件。显示此文件时选择 "Disassembly"(反汇编)视图将在新上下文中打开 "Disassembly"(反汇编)视图,从而显示插入了源代码的反汇编代码。

可以在 "Settings"(设置)对话框中设置显示的注释类别。通过单击对话框中的 "Save"(保存)按钮,可在 .er.rc 缺省值文件中设置缺省类。

性能分析器突出显示度量等于或大于特定于度量的阈值的热点行,以便于查找重要的行。 可以在 "Settings"(设置)对话框中设置阈值。

在 "Source"(源)视图中,对于每个带有度量的源代码行,在滚动条旁边的右边界中将显示黄色的导航标记。低于热点阈值的非零度量不高亮显示,但用黄色导航标记进行标记。要快速导航到具有度量的源代码行,可以单击右边界中的黄色标记以跳到具有度量的行。还可以右键单击度量本身并选择诸如 "Next Hot Line"(下一个热点行)或 "Next Non-Zero Metric Line"(下一个非零度量行)之类的选项以跳到下一个具有度量的代码行。

有关 "Disassembly"(反汇编)视图内容的详细信息,请参见带注释的反汇编代码

"Source/Disassembly"(源/反汇编)视图

"Source/Disassembly"(源/反汇编)视图在上面的窗格中显示带注释的源代码,在下面的窗格中显示带注释的反汇编代码。这些窗格是协同工作的,因此在一个窗格中选择行时,在另一个窗格中也会选中相关行。缺省情况下,该视图不显示。

"Races"(争用)视图

"Races"(争用)视图显示在数据争用实验中检测到的所有数据争用列表。可以单击数据争用,然后在右侧面板的 "Race Details"(争用详细信息)窗口中查看有关它的详细信息。有关更多信息,请参见Oracle Developer Studio 12.5:线程分析器用户指南

"Deadlocks"(死锁)视图

"Deadlocks"(死锁)视图显示在死锁实验中检测到的所有死锁列表。可以单击死锁,然后在右侧面板的 "Deadlock Details"(死锁详细信息)窗口中查看有关它的详细信息。有关更多信息,可按 F1 以查看帮助并参见Oracle Developer Studio 12.5:线程分析器用户指南

"Dual Source"(双源)视图

"Dual Source"(双源)视图显示所选数据争用或死锁涉及到的两个源上下文。仅当装入了数据争用检测或死锁实验时才会显示此视图。有关更多信息,请参见Oracle Developer Studio 12.5:线程分析器用户指南

"Statistics"(统计信息)视图

"Statistics"(统计信息)视图显示所选的实验和抽样的各种系统统计信息的总和。 总和后面是每个实验的选定抽样的统计信息。有关显示的统计信息的信息,请参见 getrusage(3C) 和 proc(4) 手册页。

"Experiments"(实验)视图

"Experiments"(实验)视图分为两个面板。 上面的面板包含一个树,树中包含所有装入实验中的装入对象和每个装入实验的节点。展开 "Load Objects"(装入对象)节点时,将显示所有装入对象的列表(附带有关装入对象的处理情况的各种消息)。展开实验节点时,将显示两个区域:"Notes"(说明)区域和 "Info"(信息)区域。

"Notes"(说明)区域显示实验中的所有说明文件的内容。可以通过直接在 "Notes"(说明)区域中键入内容来编辑说明。"Notes"(说明)区域包含其自己的工具栏,其中有用来保存或丢弃说明以及撤消或重做自上次保存以后的所有编辑的按钮。

"Info"(信息)区域包含有关收集的实验以及收集目标访问的装入对象的信息,包括在处理实验或装入对象过程中生成的所有错误消息或警告消息。

底部的面板列出来自性能分析器会话的错误消息和警告消息。

"Inst-Freq"(指令频率)视图

Inst-Freq(指令频率)视图显示计数数据实验中各类指令执行频率的摘要,该数据在 collect –c 中收集。该视图还显示有关装入、存储和浮点指令的执行频率的数据。此外,该视图还包含有关取消的指令和分支延迟槽中的指令的信息。

"MPI Timeline"(MPI 时间线)视图

"MPI Timeline"(MPI 时间线)视图显示一组水平栏,这些水平栏与 MPI 实验中的进程一一对应,其间以指示消息的对角线连接。每个栏中的区域都根据所在的 MPI 函数着色,或者表明该进程不在 MPI 内(即,位于应用程序代码中的其他位置)。

选择栏中的某个区域或消息线,可在 "MPI Timeline Controls"(MPI 时间线控件)窗口中显示有关该选定区域的详细信息。

拖动鼠标可使 "MPI Timeline"(MPI 时间线)视图沿水平(时间)轴或垂直(进程)轴放大,具体取决于拖动的主方向。

可以将 "MPI Timeline"(MPI 时间线)的图像输出到 .jpg 文件。选择 "File"(文件)-> "Export"(导出),然后选择 "Export as JPEG"(导出为 JPEG)。

MPI Timeline Controls(MPI 时间线控件)

"MPI Timeline Controls"(MPI 时间线控件)窗口支持对 "MPI Timeline"(MPI 时间线)视图进行缩放、平移、事件移步和过滤。它包括一个可调整 "MPI Timeline"(MPI 时间线)上显示的 MPI 消息百分比的控件。

通过过滤,可使得当前视图字段以外的数据不再出现在 "MPI Timeline"(MPI 时间线)视图和 "MPI Chart"(MPI 图表)视图中显示的数据集中。单击 "Filter"(过滤器)按钮可应用过滤器。使用反向过滤器按钮撤消上一个过滤器;使用正向过滤器按钮重新应用一个过滤器。过滤器在 "MPI Timeline"(MPI 时间线)视图和 "MPI Chart"(MPI 图表)视图之间共享,但不适用于其他数据视图。

可以调整消息滑块来控制显示消息的百分比。选择小于 100% 时,成本最高的消息具有优先权。"Cost"(成本)定义为消息的发送和接收功能所用的时间。

"MPI Timeline Controls"(MPI 时间线控件)窗口还显示在 "MPI Timeline"(MPI 时间线)视图中选择的函数或消息的详细信息。

"MPI Chart"(MPI 图表)视图

"MPI Chart"(MPI 图表)视图显示 "MPI Timeline"(MPI 时间线)视图中显示的 MPI 跟踪数据的图表。它可显示与 MPI 执行有关的数据图。更改 "MPI Chart"(MPI 图表)视图中的控件然后单击 "Redraw"(重画),将显示一个新的图表。选择图表中的某个元素可在 "MPI Chart Controls"(MPI 图表控件)视图中显示有关该元素的更多详细信息。

拖动鼠标可使 "MPI Chart"(MPI 图表)视图放大拖动鼠标形成的矩形区域。

可以将 "MPI Chart"(MPI 图表)的图像输出到 .jpg 文件。选择 "File"(文件)-> "Export"(导出),然后选择 "Export as JPEG"(导出为 JPEG)。

MPI Chart Controls(MPI 图表控件)

"MPI Chart"(MPI 图表)视图具有一组下拉式列表,可用于控制图表的类型、X 和 Y 轴参数以及用于聚集数据的度量和运算符。单击 "Redraw"(重画)将可绘制一个新图形。

通过过滤,可使得当前视图字段以外的数据不再出现在 "MPI Timeline"(MPI 时间线)视图和 "MPI Chart"(MPI 图表)视图中显示的数据集中。要应用过滤器,请单击 "Filter"(过滤器)按钮。单击反向过滤器按钮可撤消上一个过滤器;单击正向过滤器按钮可重新应用一个过滤器。

"MPI Chart Controls"(MPI 图表控件)窗口也可用于显示 "MPI Chart"(MPI 图表)视图中选项的详细信息。