跳过导航链接 | |
退出打印视图 | |
![]() |
Oracle Solaris Studio 12.3:性能分析器 Oracle Solaris Studio 12.3 Information Library (简体中文) |
分析器窗口具有菜单栏、工具栏以及一个包含用于显示各种数据的标签的拆分窗格。
菜单栏中包含 "File"(文件)菜单、"View"(视图)菜单和 "Help"(帮助)菜单。
“文件”菜单用来打开、添加和删除实验和实验组。利用“文件”菜单可以通过性能分析器 GUI 来收集实验数据。有关使用性能分析器收集数据的详细信息,请参阅从分析器记录实验。从“文件”菜单,还可以创建新的分析器窗口并将分析器中当前显示的数据打印到文件或打印机。
“帮助”菜单提供性能分析器的联机帮助、新功能摘要、快速参考和快捷键以及故障排除。
工具栏提供了一组用作快捷方式的图标、一个 "View Mode"(查看模式)列表(可用于更改某些实验类型的数据显示方式)以及查找功能(用于帮助您查找某些标签中的文本或突出显示的行)。有关查找功能的详细信息,请参见查找文本和数据。
性能分析器使用拆分窗口将数据显示在两个窗格中。每个窗格都含有标签,以便您可以为同一实验或实验组选择不同的数据显示。
左侧窗格中的标签协同工作,这样,当您在一个标签中选择某个项时(例如一个函数),该项在其他标签中也会选中。左侧窗格中的大部分标签具有上下文菜单,右键单击标签中的项即可打开该菜单。您可以使用上下文菜单来添加过滤器,或者执行与该标签相关的其他活动。在一个标签中应用过滤器时,将在可以过滤的所有标签中过滤数据。
右侧窗格中的标签显示与您在左侧窗格中选中的项相关的更多信息,在某些情况下还会提供用于操作左侧窗格的标签中信息的工具。
在打开实验时,有两个因素确定了某个标签是否在分析器窗口的左侧窗格中显示:
.er.rc 文件,这是在启动分析器时读取的文件,其中包含指定要显示的缺省标签的 tabs 指令。
实验中数据的类型确定了应显示的其他标签。例如,如果实验包含 OpenMP 数据,则将自动打开 OpenMP 的标签来显示数据。
可以使用 "Set Data Presentation"(设置数据显示)对话框中的 "Tab"(标签)标签(请参见`Tab`(标签)标签)选择要在当前分析器会话中显示的标签。如果要更改缺省标签,请参见分析器缺省设置。
左窗格按标签出现的顺序显示主要分析器显示中的标签:
“MPI 时间线”标签显示一组水平栏,这些水平栏与 MPI 实验中的进程一一对应,其间以指示消息的对角线连接。每个栏中的区域都根据所在的 MPI 函数着色,或者表明该进程不在 MPI 内(即,位于应用程序代码中的其他位置)。
选择栏的某个区域或消息线可在“MPI 时间线控件”标签中显示有关该选定区的详细信息。
拖动鼠标可使“MPI 时间线”标签沿水平(时间)轴或垂直(进程)轴放大,具体取决于拖动的主方向。
可以将“MPI 时间线”的图像打印到打印机或 .jpg 文件。选择 "File"(文件)-> "Print"(打印)并选择 "Print"(打印)或 "File"(文件),然后指定打印机或文件名。
“MPI 图表”标签显示“MPI 时间线”标签中显示的 MPI 跟踪数据的图表。它可显示与 MPI 执行有关的数据图。更改“MPI 图表”标签中的控件然后单击“重画”,将显示一个新的图表。选择图表中的某个元素可在“MPI 图表控件”标签中显示有关该元素的更多详细信息。
拖动鼠标可使“MPI 图表”标签在拖动鼠标形成的矩形区域上放大。
可以将 MPI 图表的图像打印到打印机或 .jpg 文件。选择 "File"(文件)-> "Print"(打印)并选择 "Print"(打印)或 "File"(文件),然后指定打印机或文件名。
“争用”标签显示在数据争用实验中检测到的所有数据争用列表。有关更多信息,请参见《Oracle Solaris Studio 12.3:线程分析器用户指南》。
“死锁”标签显示在死锁实验中检测到的所有死锁列表。有关更多信息,请参见《Oracle Solaris Studio 12.3:线程分析器用户指南》。
"Function"(函数)标签显示函数及相应度量的列表。度量是根据在实验中收集的数据得出的。度量可以是独占的,也可以是非独占的。独占的度量表示仅由函数本身使用。非独占的度量表示可由函数及其所调用的所有函数使用。
collect(1) 手册页和第 2 章中提供了收集的各种数据类型的可用度量列表。
时间度量显示为秒,精度可达到毫秒。百分比精确到 0.01%。如果某个度量值正好为零,则其时间和百分比显示为 "0"。如果值不是恰好为零,但小于精度,则其值将显示为 "0.000",其百分比为 "0.00"。由于进行了舍入,百分比总和可能不会恰好是 100%。计数度量显示为整数计数。
初始显示的度量基于收集的数据以及从各种 .er.rc 文件中读取的缺省设置。在最初安装性能分析器时,缺省度量如下所示:
如果收集的数据类型多于一种,则显示每种类型的缺省度量。
可以更改或重新组织显示的度量;有关详细信息,请参见联机帮助。
要搜索函数,请使用 查找 工具。有关“查找”工具的更多详细信息,请参阅查找文本和数据。
要查看函数的源代码,可双击函数以打开 "Source"(源)标签,其中显示源代码中代表该函数的行。
要选择单个函数,请单击该函数。
要选择在标签中连续显示的多个函数,请选择组中的第一个函数,然后按住 Shift 键并单击组中的最后一个函数。
要选择标签中不连续显示的多个函数,请选择组中的第一个函数,然后通过按住 Ctrl 键并单击每个函数来选择其他函数。
您也可以在 "Function"(函数)标签中右键单击以便打开上下文菜单,然后选择所选函数的预定义过滤器。有关过滤的详细信息,请参见过滤器帮助。
“调用方与被调用方”标签显示代码中函数之间的调用关系,同时显示性能度量。“调用方与被调用方”标签允许通过一次为一个调用构建调用堆栈片段详细检查代码分支的度量。
该标签显示三个独立的面板:“调用方”面板位于顶部,“堆栈片段”面板位于中部,“被调用方”面板位于下部。首次打开“调用方与被调用方”标签时,“堆栈片段”面板中的函数即为在分析器的另一个标签(如“函数”标签或“源”标签)中选择的函数。“调用方”面板列出用于调用“堆栈片段”面板中函数的函数,“被调用方”面板列出由“堆栈片段”面板中函数调用的函数。
通过将调用方和被调用方添加到调用堆栈,可以以一次一个调用的方式围绕中心函数构造调用堆栈片段。
在 "Callers"(调用方)窗格或 "Callees"(被调用方)窗格中双击函数可以添加对堆栈片段的调用,也可以通过选择一个函数并单击 "Add"(添加)按钮来完成。删除函数调用与添加类似,方法是双击位于调用堆栈片段顶部或底部的函数,或者选择顶部或底部函数并单击“删除”。添加和删除任务还可以通过上下文菜单执行,方法是右键单击函数并选择适当的命令。
通过选择某个函数并单击“设置头部”、“设置中心”或“设置尾部”,可以将函数设置为调用堆栈片段的头部(顶部)、中心或尾部(底部)。这种新的排序可使当前位于调用堆栈片段中的其他函数,相对于所选函数在堆栈片段中的新位置,移动到 "Callers"(调用方)或 "被调用方"(Callees)区域中的相应位置。
您可以使用位于“堆栈片段”面板上方的“后退”和“前进”按钮查看您对调用堆栈片段的更改历史记录。
当您在堆栈片段中添加和删除函数时,将为整个片段计算度量,并将结果显示在片段中的最后一个函数旁边。
可以在 "Callers-Callees"(调用方-被调用方)标签的任意面板中选择一个函数,然后右键单击以便打开上下文菜单并选择过滤器。将根据您在此标签以及所有分析器数据标签中所做的选择来过滤数据。有关使用上下文过滤器的详细信息,请参见联机帮助。
"Callers-Callees"(调用方与被调用方)标签显示归属度量:
对于“堆栈片段”面板中的调用堆栈片段,归属度量表示该调用堆栈片段的独占度量。
对于被调用方,归属度量表示被调用方度量中归属于调用堆栈片段调用的那一部分。被调用方的归属度量与调用堆栈片段之和应该等于调用堆栈片段的度量。
对于调用方,归属度量表示调用堆栈片段的度量中归属于调用方的调用的那一部分。所有调用方的归属度量之和同样应等于调用堆栈片段的度量。
有关度量的更多信息,请参见函数级度量:独占、非独占和归属。
“调用树”标签将程序的动态调用图显示为树,其中每个函数调用显示为可以展开和折叠的节点。展开的函数节点显示由该函数生成的所有函数调用,以及这些函数调用的性能度量。当您选中某个节点时,右侧的“摘要”选项卡将显示该函数调用方和被调用方的度量。归属度量的百分比是总程序度量的百分比。树的缺省根目录是 <Total>,这不是一个函数,而是表示程序的所有函数的 100% 的性能度量。
“调用树”标签允许向下掘取到具体的调用跟踪并分析哪些跟踪具有最大的性能影响。可以通过程序结构进行导航,搜索高度量值。
提示 - 要轻松查找花费时间最多的分支,请右键单击任一节点,然后选择“展开热门分支”。
您可以在 "Call Tree"(调用树)标签中右键单击以便打开上下文菜单,然后为所选分支或所选函数添加预定义过滤器。采用这种方法过滤,您可以筛选掉所有分析器标签中您不感兴趣的区域的数据。
“双重数据源”标签显示所选数据争用或死锁涉及到的两个源上下文。仅当装入了数据争用检测或死锁实验时才会显示此标签。有关更多信息,请参见《Oracle Solaris Studio 12.3:线程分析器用户指南》。
"Source/Disassembly"(源/反汇编)标签在上面的窗格中显示带注释的源代码,在下面的窗格中显示带注释的反汇编代码。这些窗格是协同工作的,因此在一个窗格中选择行时,在另一个窗格中也会选中相关行。缺省情况下该标签不可见。可以使用 "View"(视图)菜单中的 "Set Data Presentation"(设置数据显示)选项来添加 "Source/Disassembly"(源/反汇编)标签。单击 "Save"(保存)可始终显示该标签。
如果源代码可用,“源”标签显示包含所选函数源代码的文件,在每个源代码行左侧的列中,都提供有性能度量注释。高度量值用黄色高亮显示,指明这些源代码行位于资源使用的热点区域。对于每个热点源代码行,还在滚动条旁边的右边界中显示一个黄色的导航标记。低于热点阈值的非零度量不高亮显示,但用黄色导航标记进行标记。要快速导航到具有度量的源代码行,可以单击右边界中的黄色标记以跳到具有度量的行。还可以右键单击度量本身并选择诸如“下一个热点代码行”或“下一个非零度量代码行”之类的选项以跳到下一个具有度量的代码行。
高亮显示度量的阈值可以在“源/反汇编”标签中的“设置数据显示”对话框中进行设置。可以在 .er.rc 缺省值文件中设置缺省阈值。有关 .er.rc 文件的更多信息,请参见分析器缺省设置。
“源”标签在源代码的列标题中显示源文件和相应对象文件的完整路径以及装入对象的名称。少数情况下,会使用同一源文件编译多个目标文件,此时“源”标签显示包含所选函数的目标文件的性能数据。
有关用于查找实验源代码的过程的说明,请参见工具如何查找源代码。
双击 "Function"(函数)标签中的函数打开 "Source"(源)标签时,显示的源文件是该函数的缺省源代码上下文。函数的缺省源上下文是包含函数的第一条指令(对于 C 代码,为函数的左花括号)的文件。紧接着第一条指令,带注释的源文件为函数添加索引行。源窗口用尖括号中的红色斜体文本显示索引行,格式如下:
<函数:f_name>
函数可能具有其他源上下文,即包含归属于该函数的指令的其他文件。这些指令可能来自头文件或内联到所选函数中的其他函数。如果存在其他源上下文,则缺省源上下文的开头将包含指示其他源上下文所在位置的扩展索引行列表。
<Function: f, instructions from source file src.h>
双击引用其他源上下文的索引行,将在与索引函数关联的位置打开包含该源上下文的文件。
为了便于导航,其他源上下文也以一个索引行列表开头,通过这些索引行可以返回到缺省源上下文和其他源上下文中定义的函数。
源代码中插入了所有选择显示的编译器注释。可以在“设置数据表示”对话框中设置显示的注释类别。可以在 .er.rc 缺省值文件中设置缺省类别。
可以更改或重新组织“源”标签中显示的度量,有关详细信息,请参见联机帮助。
有关 "Source"(源)标签内容的详细信息,请参见性能分析器"源"标签布局。
“行”标签显示包含源行及其度量的列表。源行标有行所在的函数以及行号和源文件名称。如果函数无行号信息或函数的源文件未知,则在行显示中,函数的所有程序计数器 (program counter, PC) 聚集在一起,显示为该函数的单个条目。在行显示中,来自隐藏了其函数的装入对象中的函数中的 PC 聚集在一起,显示为该装入对象的单个条目。如果从“行”标签中选择一个行,则会在“摘要”标签中显示该行的所有度量。如果从“行”标签中选择一个行后选择“源”或“反汇编”标签,则会将显示定位到适当的行。
“反汇编”标签显示包含所选函数的目标文件的反汇编列表,带有针对每条指令的性能度量注释。要查看反汇编代码列表,需要在工具栏的 "View Mode"(查看模式)列表中选择 "Machine"(计算机)。
反汇编列表中插入了源代码(如果有)以及所有选择显示的编译器注释。在“反汇编”标签中查找源文件的算法与在“源”标签中使用的算法相同。
与“源”标签相同,“反汇编”标签中显示索引行。但与“源”标签不同的是,其他源上下文的索引行不能直接用于导航。此外,替代源上下文的索引行显示在 #included 或内联代码插入位置的开头,而不是仅在“反汇编”视图的开头列出。来自其他文件的 #included 或内联代码显示为原始反汇编指令,不与源代码交叉在一起显示。但是,将光标置于这些指令之一上并选择“源”标签可以打开包含 #included 或内联代码的源文件。显示此文件时选择“反汇编”标签将在新上下文中打开“反汇编”视图,从而显示插入了源代码的反汇编代码。
可以在“设置数据表示”对话框中设置显示的注释类别。通过单击对话框中的 "Save"(保存)按钮,可在 .er.rc 缺省文件中设置缺省类。
分析器突出显示度量等于或大于特定于度量的阈值的热点代码行,以便于查找重要的代码行。可以在“设置数据表示”对话框中设置阈值。通过单击对话框中的 "Save"(保存)按钮,可在 .er.rc 缺省文件中设置缺省阈值。
在 "Source"(源)标签中,对于每个带有度量的源代码行,在滚动条旁边的右边界中将显示黄色的导航标记。低于热点阈值的非零度量不高亮显示,但用黄色导航标记进行标记。要快速导航到具有度量的源代码行,可以单击右边界中的黄色标记以跳到具有度量的行。还可以右键单击度量本身并选择诸如“下一个热点代码行”或“下一个非零度量代码行”之类的选项以跳到下一个具有度量的代码行。
有关 "Disassembly"(反汇编)标签内容的详细信息,请参见带注释的反汇编代码。
"PCs" (PC) 标签列出程序计数器(program counter,PC)及相应度量。PC 标有其所来自的函数及在该函数中的偏移。在 "PC" 显示中,来自隐藏了其函数的装入对象中的函数中的 PC 聚集在一起,显示为装入对象的单个条目。在 "PCs" (PC) 标签中选择一行,则会在 "Summary"(摘要)标签中显示该 PC 的所有度量。从 "PC" 标签中选择一个行后选择“源”或“反汇编”标签会将显示定位到适当的行。
有关 PC 的更多信息,请参见调用堆栈和程序执行一节。
对于使用通过 Oracle Solaris Studio 编译器编译的 OpenMP 任务的程序,OpenMP 的 "Parallel Region"(并行区域)标签仅适用于使用 OpenMP 3.0 收集器记录的实验。有关更多信息,请参见OpenMP 分析的限制。
该标签列出程序执行期间遇到的所有并行区域和从相同分析数据计算得出的度量值。针对当前并行区域计算独占度量。非独占度量反映嵌套并行性。它们被归属到当前并行区域和从其创建当前并行区域的父并行区域,甚至进一步递归直至最顶层隐式 OpenMP 并行区域,这表示以串行方式执行程序(在任何并行区域之外)。如果程序中不存在嵌套并行区域,独占度量和非独占度量具有相同的值。
如果多次调用包含并行区域的函数,并行区域的所有实例将聚集在一起,呈现为相应标签中的一个行项目。
该标签可用于进行导航。可以选择感兴趣的项(如具有最高 OpenMP 等待时间的并行区域),分析其源代码或者选择上下文过滤器,从而只包含与所选项相关的数据,然后使用以下标签来分析其他程序对象如何表示数据:"Functions"(函数)、"Timeline"(时间线)、"Threads"(线程)等等。
“OpenMP 任务”标签显示 OpenMP 任务及其度量的列表。对于使用通过 Oracle Solaris Studio 编译器编译的 OpenMP 任务的程序,该标签仅适用于使用 OpenMP 3.0 收集器记录的实验。有关更多信息,请参见OpenMP 分析的限制。
该标签列出在程序执行期间遇到的任务,以及从分析数据计算的度量值。独占度量仅应用于当前任务。非独占度量包括 OpenMP 任务的度量及其子任务的度量,父子关系是在任务创建时间建立的。来自隐式并行区域的 OpenMP 任务表示以串行方式执行程序。
如果多次调用包含任务的函数,并行区域的所有实例将聚集在一起,呈现为相应标签中的一个行项目。
该标签可用于进行导航。可以选择感兴趣的项(如具有最高 OpenMP 等待时间的任务),通过单击 "Source"(源)标签分析其源代码。您还可以选择一项,右键单击以便选择上下文过滤器,从而只包含与所选项相关的数据,然后使用以下标签来分析其他程序对象如何表示该项:"Functions"(函数)、"Timeline"(时间线)、"Threads"(线程)等等。
"Timeline"(时间线)标签以时间函数形式显示收集器所记录的事件和采样点的图表。数据显示在水平栏中。对于每个实验,顶部都有一栏显示样本数据,后面跟随一组显示各个线程的栏。在用于线程的一组栏中,记录的每种数据类型都有一栏:基于时钟的分析、硬件计数器溢出分析、同步跟踪、堆跟踪和 MPI 跟踪。对于硬件计数器溢出分析,每个硬件计数器均有一栏。用于每个数据类型的栏仅在装入的实验包含该类型的数据时才显示。
性能分析器显示的事件计时度量对应于在各状态中花费的相对时间长度。样本栏显示实验中所有线程的计时度量的摘要。单击某个样本可在右侧的 "Timeline Details"(时间线详细信息)标签中显示该样本的计时度量。您也可以通过显示事件状态图表来显示线程中单个事件的计时度量。
分析数据栏或跟踪数据栏显示每个记录的事件的事件标记。事件标记包含随事件一起记录的调用堆栈的颜色编码表示形式。
分析数据栏或跟踪数据栏显示每个记录的事件的事件标记。事件标记包含随事件一起记录的调用堆栈的颜色编码表示形式。单击事件标记可选择事件的对应调用堆栈,并在 "Timeline Details"(时间线详细信息)标签中显示该事件的数据以及调用堆栈函数。在 "Timeline Details"(时间线详细信息)标签的 "Details for Selected Event"(所选事件的调用堆栈)区域中,可以选择单个函数调用,在标签的 "Details for Selected Event"(所选事件的详细信息)区域中查看这些调用的相关详细信息。然后,如果您单击 "Source"(源)标签或 "Disassembly"(反汇编)标签,则将在调用堆栈中突出显示与该帧对应的行。
对于某些类型的数据,事件可能会因重叠而不可见。如果两个或多个事件恰好出现在同一位置,则只绘制一个事件;如果一个或两个像素内有两个或多个事件,将绘制全部事件。但是可能无法从视觉上区分它们。在以上两种情况下,绘制的事件下将显示一个小的灰色勾号,以表示重叠。显示事件频率图可以查看有关事件的更多信息。
利用 "Set Data Presentation"(设置数据显示)对话框的 "Timeline"(时间线)标签可以执行以下操作:更改显示的特定于事件的数据的类型;选择显示线程、LWP、CPU 或实验的特定于事件的数据;选择在根或叶处对齐调用堆栈表示;选择显示的调用堆栈的级别数。在某些时间线栏中,还可以选择显示事件频率图和事件状态图。
事件频率图是一个线形图,其中以时间函数形式显示事件频率。要启用事件频率图,请在 "Set Data Presentation"(设置数据显示)对话框的 "Timeline"(时间线)标签中选择 "Event Frequency Chart"(事件频率图)。对于每个启用的数据类型,将直接在关联的时间线数据栏下显示事件频率图。
事件状态图是一个条形图,其中以时间函数形式显示应用程序在各种不同状态下所花费时间的分布。对于在 Oracle Solaris 上记录的时钟分析数据,事件状态图显示 Oracle Solaris 微状态。事件状态图的颜色编码与时间线样本栏相同。要启用事件状态图,请在 "Set Data Presentation"(设置数据显示)对话框的 "Timeline"(时间线)标签中选择 "Event State Chart"(事件状态图)。随即将在关联的数据栏下显示事件状态图。如果同时启用了事件频率图,则状态图将显示在频率图之下。
有关使用“时间线”标签的详细信息,请参阅联机帮助。
“泄漏列表”标签显示两行,上面一行表示泄漏,下面一行表示分配。每一行包含一个调用堆栈,与“时间线”标签中显示的调用堆栈类似;在中间,上面有一个条,其长度与泄漏或分配的字节数成比例,下面也有一个条,其长度与泄漏或分配数成比例。
选择泄漏或分配将在“泄漏”标签中显示所选的泄漏或分配的数据,并且在调用堆栈中选择一个帧(与在“时间线”标签中相同)。
可以通过在“设置数据表示”对话框的“标签”标签中选择“泄漏列表”标签来显示该标签(请参见`Tab`(标签)标签)。仅在一个或多个装入的实验包含堆跟踪数据时才能使“泄漏列表”标签可见。
“数据对象”标签显示数据对象及其度量的列表。该标签仅应用于包括数据空间分析的实验,包括数据空间分析的实验是对硬件计数器溢出分析的扩展。有关更多信息,请参见数据空间分析和内存空间分析。
可以通过在“设置数据表示”对话框的“标签”标签中选择该标签来显示该标签(请参见`Tab`(标签)标签)。仅在一个或多个装入的实验包含数据空间分析时才能使“数据对象”标签可见。
该标签显示针对程序中的各种数据结构和变量的硬件计数器内存操作度量。
要选择单个数据对象,请单击该对象。
要选择在标签中连续显示的多个对象,请选择第一个对象,然后按住 Shift 键并单击最后一个对象。
要选择在标签中不连续显示的多个对象,请选择第一个对象,然后通过按住 Ctrl 键并单击每个对象来选择其他对象。
“数据布局”标签显示所有程序数据对象(具有数据派生度量数据)的带注释的数据对象布局。该标签仅适用于包括数据空间分析的实验,包括数据空间分析的实验是对硬件计数器溢出分析的扩展。有关更多信息,请参见数据空间分析和内存空间分析。
总的来说,标签中显示的布局按照结构的数据排序度量值进行排序。标签显示每个聚集的数据对象及归属于该对象的总度量,后跟数据对象中的所有元素(按偏移量顺序)。每个元素相应地具有其自己的度量,并且在一个 32 字节的块中指示其大小和位置。
在 "Set Data Presentation"(设置数据显示)对话框的 "Tab"(标签)标签中选择 "DataLayout"(数据布局)标签,显示该标签(请参见`Tab`(标签)标签)。与“数据对象”标签相同,仅在一个或多个装入的实验包含数据空间分析时才可使“数据布局”标签可见。
要选择单个数据对象,请单击该对象。
要选择在标签中连续显示的多个对象,请选择第一个对象,然后按住 Shift 键并单击最后一个对象。
要选择在标签中不连续显示的多个对象,请选择第一个对象,然后通过按住 Ctrl 键并单击每个对象来选择其他对象。
"Inst-Freq"(即“指令频率”)标签显示计数数据实验中各类指令执行频率的摘要,该数据在 collect -c 中收集。该标签还显示有关装入、存储和浮点指令的执行频率的数据。此外,该标签还包含有关取消的指令和分支延迟槽中的指令的信息。
“统计数据”标签显示所选的实验和样本的各种系统统计数据的总和。总和后面是所选的每个实验的样本的统计数据。有关显示的统计数据的信息,请参见 getrusage(3C) 和 proc(4) 手册页。
“实验”标签分为两个面板。上面的面板包含一个树,树中包含所有装入实验中的装入对象和每个装入实验的节点。展开“装入对象”节点时,将显示所有装入对象的列表(附带有关装入对象的处理情况的各种消息)。展开实验节点时,将显示两个区域:"Notes"(说明)区域和 "Info"(信息)区域。
"Notes"(说明)区域显示实验中的所有说明文件的内容。可以通过直接在 "Notes"(说明)区域中键入内容来编辑说明。"Notes"(说明)区域包含其自己的工具栏,其中有用来保存或丢弃说明以及撤消或重做自上次保存以后的所有编辑的按钮。
"Info"(信息)区域包含有关收集的实验以及收集目标访问的装入对象的信息,包括在处理实验或装入对象过程中生成的所有错误消息或警告消息。
底部的面板列出来自分析器会话的错误消息和警告消息。
每个 "Index Objects"(索引对象)标签显示归属于各种索引对象的数据的度量值,例如线程、Cpu 和秒。由于索引对象不是分层结构,因此不显示非独占和独占的度量。对于每一种类型,只显示一个度量。
有多个预定义的 "Index Objects"(索引对象)标签:"Threads"(线程)、"Cpus" (Cpu)、"Samples"(样本)、"Seconds"(秒)、"Processes"(进程)和 "Experiment IDs"(实验 ID)。这些标签将在下文中分别予以说明。
您可以定义定制的索引对象,方法是在“设置数据表示”对话框中单击“添加定制索引标签”按钮,以打开“添加索引对象”对话框。也可以在 .er.rc 文件中使用 indxobj_define 指令来定义索引对象(请参见indxobj_define indxobj_type index_exp)。
"Threads"(线程)标签是一种索引对象标签,缺省情况下不显示。可以在 "Set Data Presentation"(设置数据显示)对话框的 "Tab"(标签)标签中选择该标签。如果在此对话框中单击 "Save"(保存)按钮,则会将选定内容作为缺省值保存到您的 .er.rc 文件中。
"Threads"(线程)标签显示线程及相应度量的列表。线程使用线程号表示,缺省情况下显示时钟分析实验的用户 CPU 时间。如果装入的实验中存在其他度量,则缺省情况下还会显示这些度量。
可以使用单选按钮来显示类型:文本(缺省值)、图形或图表。"Text"(文本)显示与 "Function"(函数)标签相似,但只显示归属各个线程的独占度量。"Graphical"(图形)显示模式将显示各个线程相关值的条形图,每个度量用一个单独的直方图表示。直方图按照在 "Text"(文本)显示模式下使用的数据排序度量进行排序。在 "Text"(文本)和 "Graphical"(图形)显示中,可以使用鼠标单击或者使用箭头键在标签中导航,从而在右侧的 "Summary"(摘要)标签中查看关于当前所选项的更多信息。
"Chart"(图表)显示模式将显示线程与其他度量(例如用户 CPU 时间或同步时间)的图表。缺省情况下将显示负载不平衡图,这有助于检测使用了较多 CPU 时间的线程。
负载不平衡图右侧的 "Thread Chart Controls"(线程图表控件)标签中显示由于不均衡的线程负载而造成的实际时间损失,以秒和百分比为单位来表示。如果线程能实现完美平衡,则将会带来与这些值接近的性能提升。将由高负载的线程所执行的任务分解为较短的任务,并在可用线程之间分配,可以实现更好的负载平衡。
锁定争用图显示在所有线程上同步等待时间的分布,这可以帮助查看由于线程之间的同步而损失的时间,以及哪些线程损失的时间更多。
要更改图表的类型,请在右侧的 "Thread Chart Controls"(线程图表控件)标签上选择 "Chart Name"(图表名称),然后单击 "Redraw"(重画)。
单击图表中的栏或者在 "Thread Chart Controls"(线程图表控件)标签的导航栏中单击 "Up"(向上)和 "Down"(向下)按钮,可以选择特定线程并在 "Thread Chart Controls"(线程图表控件)标签中查看度量信息。
您还可以右键单击并从上下文菜单中选择导航选项。
"Samples"(样本)标签是一种索引对象标签,缺省情况下不显示。可以在 "Set Data Presentation"(设置数据显示)对话框的 "Tab"(标签)标签中选择该标签。如果在此对话框中单击 "Save"(保存)按钮,则会将选定内容作为缺省值保存到您的 .er.rc 文件中。
"Samples"(样本)标签显示采样点及相应度量的列表。样本使用样本号表示,缺省情况下显示时钟分析实验的用户 CPU 时间。如果装入的实验中存在其他度量,则还会显示这些度量。
可以使用单选按钮来显示类型:"Text"(文本)或 "Graphical"(图形)。缺省情况下以 "Text"(文本)模式显示,显示内容与 "Function"(函数)标签类似。度量值反映了装入的实验中在每个采样点记录的微状态。
"Graphical"(图形)显示模式将显示各个样本相关值的条形图,每个度量用一个单独直方图表示。直方图按照在 "Text"(文本)显示模式下使用的数据排序度量进行排序。
您也可以右键单击来添加上下文过滤器,过滤在此标签和其他分析器标签中显示的数据。
"CPUs" (CPU) 标签是一种索引对象标签,缺省情况下不显示。可以在 "Set Data Presentation"(设置数据显示)对话框的 "Tab"(标签)标签中选择该标签。如果在此对话框中单击 "Save"(保存)按钮,则会将选定内容作为缺省值保存到您的 .er.rc 文件中。
"CPUs" (CPU) 标签显示运行实验的 CPU 及相关度量的列表。CPU 使用 CPU 号表示,缺省情况下显示时钟分析实验的用户 CPU 时间。如果装入的实验中存在其他度量,则缺省情况下还会显示这些度量。如果在 "Set Data Presentation"(设置数据显示)对话框中选择了其他度量,则还将显示这些度量。
可以使用单选按钮来显示类型:"Text"(文本)或 "Graphical"(图形)。缺省情况下以 "Text"(文本)模式显示,显示内容与 "Function"(函数)标签类似。这些值反映了所装入实验中在每个 CPU 上记录的度量的值或百分比。
"Graphical"(图形)显示模式将显示各个 CPU 相关值的条形图,每个度量用一个单独直方图表示。直方图按照在 "Text"(文本)显示模式下使用的数据排序度量进行排序。
可以右键单击来添加上下文过滤器,过滤在此标签和其他分析器标签中显示的数据。
"Seconds"(秒)标签是一种索引对象标签,缺省情况下不显示。可以在 "Set Data Presentation"(设置数据显示)对话框的 "Tab"(标签)标签中选择该标签。如果在此对话框中单击 "Save"(保存)按钮,则会将选定内容作为缺省值保存到您的 .er.rc 文件中。
"Seconds"(秒)标签显示在实验中捕获的每秒程序运行情况,以及在那一秒内收集的度量。"Seconds"(秒)与 "Samples"(样本)的不同之处在于,前者为定期采样,从 0 开始每一秒都进行采样,而且无法更改间隔。"Seconds"(秒)标签在缺省情况下列出时钟分析实验的执行秒数及用户 CPU 时间。如果装入的实验中存在其他度量,则还会显示这些度量。
可以使用单选按钮来显示类型:"Text"(文本)或 "Graphical"(图形)。缺省情况下以 "Text"(文本)模式显示,显示内容与 "Function"(函数)标签类似。度量值反映了装入的实验中在每秒记录的微状态。
"Graphical"(图形)显示模式将显示每秒的相关值的条形图,每个度量用一个单独直方图表示。直方图按照在 "Text"(文本)显示模式下使用的数据排序度量进行排序。
可以右键单击来添加上下文过滤器,过滤在此标签和其他分析器标签中显示的数据。
"Processes"(进程)标签是一种索引对象标签,缺省情况下不显示。可以在 "Set Data Presentation"(设置数据显示)对话框的 "Tab"(标签)标签中选择该标签。如果在此对话框中单击 "Save"(保存)按钮,则会将选定内容作为缺省值保存到您的 .er.rc 文件中。
"Processes"(进程)标签显示目标程序运行的进程及相关度量的列表。进程按 PID 列出,缺省情况下显示时钟分析实验的用户 CPU 时间。如果装入的实验中存在其他度量,则缺省情况下还会显示这些度量。如果在 "Set Data Presentation"(设置数据显示)对话框中选择了其他度量,则还将显示这些度量。
使用 "Processes"(进程)标签可以查找使用最多资源的进程。如果存在您希望使用其他标签隔离或浏览的特定进程集,则可以使用上下文菜单中提供的过滤器来过滤出其他进程。
可以使用单选按钮来显示类型:"Text"(文本)或 "Graphical"(图形)。缺省情况下以 "Text"(文本)模式显示,显示内容与 "Function"(函数)标签类似。这些值反映了所装入实验中在每个进程上记录的度量的值或百分比。
"Graphical"(图形)显示模式将显示各个 PID 相关值的条形图,每个度量用一个单独直方图表示。直方图按照在 "Text"(文本)显示模式下使用的数据排序度量进行排序。
"Experiment IDs"(实验 ID)标签是一种索引对象标签,缺省情况下不显示。可以在 "Set Data Presentation"(设置数据显示)对话框的 "Tab"(标签)标签中选择该标签。如果在此对话框中单击 "Save"(保存)按钮,则会将选定内容作为缺省值保存到您的 .er.rc 文件中。
"Experiment IDs"(实验 ID)标签显示装入的实验及关联度量的列表。使用上下文菜单中提供的过滤器可以过滤出其他实验。
可以使用单选按钮来显示类型:"Text"(文本)或 "Graphical"(图形)。缺省情况下以 "Text"(文本)模式显示,显示内容与 "Function"(函数)标签类似。这些值反映了所装入实验中在每个进程上记录的度量的值或百分比。
"Graphical"(图形)显示模式将显示各个 PID 相关值的条形图,每个度量用一个单独直方图表示。直方图按照在 "Text"(文本)显示模式下使用的数据排序度量进行排序。
每个“内存对象”标签显示归属于各种内存对象(例如页)的数据空间度量的度量值。如果一个或多个装入的实验包含数据空间分析,您可以在“设置数据表示”对话框的“标签”标签中选择要显示其标签的内存对象。可以显示任意数量的“内存对象”标签。
有多种预定义的 "MemoryObjects"(内存对象)标签。为虚拟页面和物理页面预定义了内存对象,名称包括 Vpage_8K、Ppage_8K、Vpage_64K 等等。您可以定义定制的内存对象,方法是在“设置数据表示”对话框中单击“添加定制对象”按钮,以打开“添加内存对象”对话框。您也可以在 .er.rc 文件中使用 mobj_define 指令来定义内存对象(请参见mobj_define mobj_type index_exp)。
使用每个“内存对象”标签上的单选按钮,可以选择“文本”显示或“图形”显示。“文本”显示类似于“数据对象”标签中的显示,并且使用同样的度量设置。“图形”显示以图形的形式显示每个内存对象的相关值,每个度量用一个单独的直方图表示,按数据排序度量排序。
右侧窗格中包含 "Summary"(摘要)标签、"Timeline Details"(时间线详细信息)标签、"Thread Chart Controls"(线程图表控件)标签、"MPI Timeline Controls"(MPI 时间线控件)标签、"MPI Chart Controls"(MPI 图表控件)标签、"Race Detail"(争用详细信息)标签、"Deadlock Detail"(死锁详细信息)标签以及"Leak"(泄露)标签。缺省情况下显示“摘要”标签。
“MPI 时间线控件”标签支持对“MPI 时间线”标签进行缩放、平移、事件移步和过滤。它包括一个可调整“MPI 时间线”标签上显示的 MPI 消息百分比的控件。
通过过滤,可使得当前视图字段以外的数据不再出现在“MPI 时间线”标签和“MPI 图表”标签中显示的数据集中。单击“过滤器”按钮可应用过滤器。反向过滤器按钮用来撤消上一个过滤器;正向过滤器按钮用来重新应用一个过滤器。“MPI 时间线”标签和“MPI 图表”标签间可共享过滤器,但目前尚不适用于其他标签。
可以调整消息滑块来控制显示消息的百分比。选择小于 100% 时,成本最高的消息具有优先权。“成本”定义为消息的发送和接收功能所用的时间。
“MPI 时间线控件”标签也可用于显示“MPI 时间线”标签的功能或消息选项的详细信息。
“MPI 图表控件”标签具有一组下拉式列表,可用于控制图表的类型、X 和 Y 轴参数以及用于聚集数据的度量和运算符。单击“重画”将可绘制一个新图形。
通过过滤,可使得当前视图字段以外的数据不再出现在“MPI 时间线”标签和“MPI 图表”标签中显示的数据集中。单击“过滤器”按钮可应用过滤器。反向过滤器按钮用来撤消上一个过滤器;正向过滤器按钮用来重新应用一个过滤器。
“MPI 图表控件”标签也可用于显示“MPI 图表”标签中选项的详细信息。
“摘要”标签同时以值和百分比的形式显示所选函数或装入对象的所有记录的度量,此外还显示所选函数或装入对象的信息。无论何时在任何标签中选择了新的函数或装入对象,都将更新“摘要”标签。
"Timeline Details"(时间线详细信息)标签显示在 "Timeline"(时间线)标签中选择的事件的详细数据,包括事件类型、叶函数、LWP ID、线程 ID 以及 CPU ID。调用堆栈显示在数据面板下。调用堆栈中每一帧的程序计数器 (PC) 显示一个函数以及偏移。为事件标记中的函数所使用的颜色编码显示在 PC 的左侧。在调用堆栈中单击一个函数,使它成为选中的函数,该函数同时也会在主分析器标签(例如 "Function"(函数)标签)中选中。在调用堆栈中双击某个函数可以打开 "Function Color Chooser"(函数颜色选择器),使用该选择器可以更改函数在时间线中使用的颜色。
在 "Timeline"(时间线)标签的 "Samples"(样本)栏中选中某个样本时,"Timeline Details"(时间线详细信息)标签将显示样本编号、采样的开始时间和结束时间、微状态以及在每个微状态中所花费的时间和彩色编码。
在 "Threads"(线程)标签中选择 "Chart"(图表)显示时将显示 "Thread Chart Controls"(线程图表控件)标签。
缺省情况下将显示负载不平衡图,这有助于检测使用了较多 CPU 时间的线程。要查看其他类型的图表,请在右侧的 "Thread Chart Controls"(线程图表控件)标签上选择 "Chart Name"(图表名称),然后单击 "Redraw"(重画)。
负载不平衡图显示由于不均衡的线程负载而造成的实际时间损失,以秒和百分比为单位表示,显示在 "Details"(详细信息)区域中。如果线程能实现完美平衡,则将会带来与这些值接近的性能提升。将由高负载的线程所执行的任务分解为较短的任务,并在可用线程之间分配,可以实现更好的负载平衡。
使用 "Thread Chart Controls"(线程图表控件)标签时,在导航栏中单击 "Up"(向上)和 "Down"(向下)按钮,可以在图表中的线程之间导航。选择某个线程时,度量信息将显示在 "Thread Chart Controls"(线程图表控件)标签的 "Details"(详细信息)区域中。
在导航栏中单击 "Center"(中心)按钮,可以在 "Details"(详细信息)区域重新显示负载不平衡的度量。
锁定争用图显示在所有线程上同步等待时间的分布,这可以帮助查看由于线程之间的同步而损失的时间,以及哪些线程损失的时间更多。
“泄漏”标签显示“泄漏列表”标签中所选的泄漏或分配的详细数据。在数据面板的下方,“泄漏”标签显示检测到所选的泄漏或分配时的调用堆栈。单击调用堆栈中的函数将选中该函数。
“争用详细信息”标签显示“争用”标签中所选数据争用的详细数据。有关更多信息,请参见《Oracle Solaris Studio 12.3:线程分析器用户指南》。
“死锁详细信息”标签显示“死锁”标签中所选的死锁的详细数据。有关更多信息,请参见《Oracle Solaris Studio 12.3:线程分析器用户指南》。
您可以通过“设置数据表示”对话框控制数据的表示。要打开此对话框,请单击工具栏中的“设置数据表示”按钮或选择“视图”->“设置数据表示”。
“设置数据表示”对话框具有一个包含多个标签的窗格,这些标签如下所示:
度量
排序
源/反汇编
格式
时间线
搜索路径
路径映射
标签
此对话框中的“确定”按钮应用对当前会话所做的更改并关闭对话框。“应用”按钮应用对当前会话的更改,但保持对话框开启状态以便进行更多更改。
使用 "Save"(保存)按钮可以将当前设置(包括显示的标签以及任意定制的内存对象)存储到您的起始目录或当前工作目录中的 .er.rc 文件。保存设置会导致所做更改既应用到将来的分析器会话中又应用到当前会话中。
注 - .er.rc 文件为分析器、er_print 实用程序和 er_src 实用程序提供缺省设置。保存“设置数据首选项”对话框中的更改时,这些更改将更新对这三款实用程序的输出都有影响的 .er.rc 文件。有关 .er.rc 文件的更多信息,请参见分析器缺省设置。
使用 "Metrics"(度量)标签可以选择在大多数分析器标签(包括 "Function"(函数)、"Callers-Callees"(调用方-被调用方)、"Source"(源)、"Disassembly"(反汇编)等等)中显示的度量。一些度量可以根据您的选择以时间或百分比显示,而另一些则显示为值。度量列表包括装入的任意实验中可用的所有度量。
每种度量都提供了 "Time"(时间)和 "Percentage"(百分比)复选框,或者 "Value"(值)复选框。选中希望分析器显示的度量类型的复选框。如果希望选中或取消选中特定列中的所有度量,请选中对话框底部一行中的复选框,然后单击 "Apply to all metrics"(应用于全部度量)按钮。
注 - 只能选择显示独占度量和非独占度量。如果显示了独占度量或非独占度量,则归属度量始终显示在 "Call Tree"(调用树)标签中。
“排序”标签显示所显示的度量的顺序以及度量的排序依据选项。双击用于排序的度量,然后使用 "Move Up"(上移)和 "Move Down"(下移)按钮来更改度量的顺序。此处所做的选择决定了分析器数据标签中度量的缺省表示形式。查看数据标签时,可以单击希望作为排序依据的度量的列标题来更改排序顺序。可以通过拖动列标题来更改度量列的顺序。
"Source/Disassembly"(源/反汇编)标签提供了复选框列表,使用这些复选框可以选择显示的信息,如下所示:
"Source"(源)和 "Disassembly"(反汇编)标签中显示的编译器注释。
在 "Source"(源)和 "Disassembly"(反汇编)标签中突出显示重要行的阈值。
突出显示阈值是归属于显示源代码或反汇编代码的文件中任意行的最大度量值百分比。阈值独立应用到各个度量。
"Disassembly"(反汇编)标签中显示的源代码。
如果在 "Disassembly"(反汇编)标签中显示源代码,则还将显示编译器注释。
"Disassembly"(反汇编)标签中的源代码行上的度量。
如果显示反汇编代码列表中源代码行的度量,则 "Find"(查找)工具将在源代码行和反汇编代码行上查找高度量项目。如果希望将搜索限制为反汇编代码行上的高度量项目,则取消选中 "Metrics for Source Lines"(源代码行的度量)复选框。
"Disassembly"(反汇编)标签中十六进制形式的指令显示。
“格式”标签提供 C++ 函数名称和 Java 方法名称的长名形式、短名形式或改编名称形式选项。改编函数名称是编译器生成的名称,在使用编译器优化时创建,并且在使用函数名称的长形式或短形式时由分析器“取消改编”。
如果选中 “将 SO 名称附加到函数名称” 复选框,则函数或方法所在的共享对象的名称将会附加到函数名称或方法名称。
如果选择了 "Compare Experiments"(比较实验)选项,则在装入多个实验时,各实验的数据将显示在单独的列中。缺省情况下,装入多个实验时将聚集数据。有关更多信息,请参见比较实验。
"Formats"(格式)标签还提供了 "User"(用户)、"Expert"(专家)或 "Machine"(计算机)查看模式选项,可用于设置查看实验的缺省模式。使用工具栏中的 "View Mode"(查看模式)列表可以切换当前视图。"View Mode"(查看模式)设置仅控制 Java 实验和 OpenMP 实验的视图。
对于 Java 实验:
"User"(用户)查看模式按名称显示每个方法,将已解释的方法和 HotSpot 编译的方法的数据聚集在一起;它还隐藏非用户 Java 线程的数据。
"Expert"(专家)查看模式将 HotSpot 编译的方法与已解释的方法分开,且显示非用户 Java 线程。
"Machine"(计算机)查看模式在进行解释时根据 JVM 计算机显示已解释的 Java 方法的数据,并对指定的方法报告使用 Java HotSpot 虚拟机编译的方法的数据。显示所有线程。
有关 Java 实验查看模式的详细说明,请参见Java 分析视图模式。
对于 OpenMP 实验:
"User"(用户)查看模式按照从主线程克隆而来的方式显示从属线程,并且显示与主线程中相匹配的调用堆栈。隐藏来自 OpenMP 运行时代码 (libmtsk.so) 的调用堆栈中的帧。在 OpenMP 运行时执行某些操作时,显示名称格式为 <<OMP-*> 的特殊函数。
"Expert"(专家)查看模式按不同的方式显示主线程和从属线程,并显示由编译器生成的函数。隐藏来自 libmtsk.so 的调用堆栈中的帧。
"Machine"(计算机)查看模式显示所有线程和编译器生成的外联函数的本机调用堆栈。
有关 OpenMP 实验查看模式的详细说明,请参见OpenMP 软件执行概述。
对于所有其他实验,所有三种模式显示同样的数据。
"Set Data Presentation"(设置数据显示)对话框的 "Timeline"(时间线)标签提供了各种选项,可用于选择在主分析器面板的 "Timeline"(时间线)标签中显示的信息。可以选择显示的事件特定数据的类型、显示线程、LWP、CPU 或实验的事件特定数据、调用堆栈表示在根或叶的对齐方式以及显示的调用堆栈的级别数。您还可以选择事件频率图和事件状态图,如`Timeline`(时间线)标签中所述。
有关 "Timeline"(时间线)标签的更多信息,可单击 "Set Data Presentation"(设置数据显示)对话框中的 "Help"(帮助)按钮。
"Search Path"(搜索路径)标签设置用于查找所装入实验的关联源代码文件和对象文件的路径,以便在 "Source"(源)和 "Disassembly"(反汇编)标签中显示带注释的源代码数据。搜索路径还可用于在系统上查找 Java 运行时环境的 .jar 文件。特殊目录名称 $expts 按照装入实验的顺序引用当前实验集。搜索 $expts 时,只查找创建者实验,不检查任何子孙实验。
缺省情况下,搜索路径设置为 $expts 和 .(当前目录)。可以通过键入路径或浏览路径,然后单击 "Append"(附加)来添加其他路径。要编辑列表中的路径,请选择一个路径,在 "Paths"(路径)字段中进行编辑,然后单击 "Update"(更新)。要更改搜索顺序,请在列表中选择路径,然后单击 "Move Up/Move Down"(上移/下移)按钮。
有关搜索路径使用方法的更多信息,请参见工具如何查找源代码。
使用 "Pathmaps"(路径映射)标签可以将文件路径的开头部分从一个位置映射到另一个位置,以便帮助分析器查找源文件。对于已从记录的原始位置移动或者从网络上其他计算机中使用不同的文件路径查看的实验,路径映射非常有用。在找到源文件时,分析器会在 "Source"(源)和 "Disassembly"(反汇编)标签中显示带注释的数据。
例如,如果实验包含指定为 /a/b/c/d/sourcefile 的路径,而 soucefile 现在位于 /x,则可以使用 "Pathmaps"(路径映射)标签将 /a/b/c/d/ 映射到 /x/。可以指定多个路径映射,这样将依次尝试每个路径映射以查找文件。
有关路径映射使用方法的更多信息,请参见工具如何查找源代码。
您可以使用“设置数据表示”对话框的“标签”标签来选择要在分析器窗口中显示的标签。如果在此对话框中单击 "Save"(保存)按钮,则会将选定内容作为缺省值保存到您的 .er.rc 文件中。
“标签”标签列出适用于当前实验的标签。标准标签列在左边的列中。"Index Objects"(索引对象)标签在中间的列中列出,而定义的 "Memory Objects"(内存对象)标签在右边的列中列出。
在左边的列中,单击复选框可以选择或取消选择显示标准标签。
在中间的列中,单击复选框可以选择或取消选择显示 "Index Objects"(索引对象)标签。预定义的 "Index Objects"(索引对象)标签为 "Threads"(线程)、"Cpus" (Cpu)、"Samples"(样本)和 "Seconds"(秒)。要添加其他索引对象的标签,请单击“添加定制索引标签”按钮以打开“添加索引对象”对话框。在“对象名称”文本框中,键入新对象的名称。在“公式”文本框中,键入用来将记录的物理地址或虚拟地址映射到对象索引的索引表达式。有关索引表达式规则的信息,请参见indxobj_define indxobj_type index_exp。
在右边的列中,单击复选框可以选择或取消选择显示“内存对象”标签。如果实验包含硬件计数器溢出分析数据,则这些标签具有数据。内存对象表示内存子系统中的组件,如高速缓存行、页面和内存区。为虚拟页面和物理页面预定义了内存对象,其大小为 8KB、64KB、512KB 和 4 MB。要添加定制对象,请单击“添加定制对象”按钮以打开“添加内存对象”对话框。在“对象名称”文本框中,键入新定制内存对象的名称。在“公式”文本框中,键入用来将记录的物理地址或虚拟地址映射到对象索引的索引表达式。有关索引表达式规则的信息,请参见mobj_define mobj_type index_exp。
添加定制索引对象或内存对象后,将会向“标签”标签中添加该对象的复选框,缺省情况下,该复选框是选中的。