本节介绍了此 Solaris Studio 性能分析器发行版以及相关工具中新增和更改的功能。有关详细信息,请参见《Oracle Solaris Studio 12.2:性能分析器》手册。
扩展了实验格式,但是版本号当前没有更改 (10.1)。
这些工具可以读取使用 Oracle Solaris Studio 12.2 的 FCS 版本创建的实验,也可以读取使用 Studio 12 Update 1 和 Studio 12 的 FCS 和修补版本创建的实验。
无法使用 Oracle Solaris Studio 12.2 工具读取早于 Sun Studio 12 的版本创建的实验。
性能分析工具包含下列增强功能。
新增的“调用树”标签以树的形式显示程序的动态调用图,每个函数调用均显示为可以展开和折叠的节点。展开的函数节点显示由该函数生成的所有函数调用,以及这些函数调用的性能度量。当您选中某个节点时,右侧的“摘要”选项卡将显示该函数调用方和被调用方的度量。归属度量的百分比是总程序度量的百分比。
要轻松查找花费时间最多的分支,请右键单击任一节点,然后选择“展开热门分支”。
通过将调用方和被调用方添加到调用栈,您可以在中间的“堆栈片段”面板中构建调用栈片段,一次可构建一个调用。调用方是调用该片段的函数;被调用方是从该片段调用的函数。功能包括:
当您在栈片段中添加和删除函数时,将为整个片段计算度量,并将结果显示在片段中的最后一个函数旁边。
您可以右键单击某个调用方,将函数添加到栈片段的顶部,也可以右键单击某个被调用方,将函数添加到栈片段的底部。也可以使用“栈片段”面板上方的按钮处理调用栈片段。
您可以使用位于“栈片段”面板上方的“后退”和“前进”按钮查看您对调用栈片段的更改历史记录。
您可以在上下文(右键单击)菜单中的“调用方-被调用方”选项卡中过滤数据。
现在,通过性能分析器,您可以比较在同一可执行文件上收集的实验。此功能仅部分实现,可能会在后续发行版中有所更改。在当前发行版中,比较试验功能按如下所示运行:
缺省情况下,如果打开两个或多个实验或实验组,将聚集数据。
如果将 compare on 添加到您的 .er.rc 文件中,并在性能分析器中打开两个或多个实验或实验组,数据将以比较模式显示。
在比较模式中,实验或实验组中的数据将显示在相邻列中,另有标题行显示实验或实验组名称。列中填充了颜色,以便区分实验或实验组。
支持比较试验功能的选项卡有“函数”、“调用方-被调用方”、“源”、“反汇编”、“行”和 "PC"。您可以在其中任意一个选项卡中通过上下文菜单禁用或启用比较模式。
您还可以使用“格式”选项卡中的“比较试验”选项,在分析器的“设置数据显示”对话框中启用和禁用比较模式。
“源”选项卡中的高亮显示以橙色显示热门(CPU 使用率最高)行,以黄色显示非零度量行。
通过“源”选项卡中的上下文菜单,您可以导航到下一个或上一个热门行或非零度量行。
您可以通过“输出”菜单创建时间线、MPI 时间线和 MPI 图表的 JPG 文件。
热点编译代码的“源”和“反汇编”会利用更好的映射(如果已记录)。
er_print 命令在此发行版中进行了如下更改:
新增的用于控制“调用方-被调用方”列表的命令现在支持调用栈构建。新增的 er_print 子命令 cprepend、cappend、crmfirst 和 crmlast 可从您正在构建的调用栈片段中添加或删除函数。在每个命令后面,会写入当前片段的调用方-被调用方数据。
新增的 calltree 命令用于输出目标的动态调用图,该图显示了所有函数的分层度量。
新增的 describe 命令介绍了实验中记录的数据,并输出可用于过滤的标记。
热点编译代码的“源”和“反汇编”会利用更好的映射(如果已记录)。
通过 er_print 命令,现在您可以比较在同一可执行文件上收集的实验。此功能仅部分实现,可能会在后续发行版中有所更改。在当前发行版中,比较试验功能按如下所示运行:
在两个或多个实验或实验组上调用 er_print 时,将聚集数据。
如果将 compare on 放置在您的 .er.rc 文件,并在两个或多个实验或实验组上运行 er_print,数据将以比较模式显示。
在比较模式中,实验或实验组中的数据显示在“函数”列表、“调用方-被调用方”列表和“反汇编”列表中的相邻列中。这些列按照实验或实验组的加载顺序显示,另有标题行显示实验或实验组名称。可使用 compare 命令启用和禁用比较模式。
collect 命令在此发行版中进行了如下更改:
遵循后代进程的缺省设置已更改为 -F on。
使用 Sun HPC ClusterTools(现在称为 Oracle Message Passing Toolkit)任一发行版的 MPI 实验均可由 -M OMP 或 -M C 指定。
缺省情况下,MPI 实验现在也遵循后代进程。
改进了 MPI 跟踪实验的后续处理。
添加了 Oracle Enterprise Linux 上对硬件计数器分析的支持。
改进了硬件计数器别名,并添加了对下列处理器上的硬件计数器分析的支持:
SPARC64 VI 和 VII
Intel Core i7:系列 6,型号 30、31、37、44 和 46(包括 Nehalem EP 和 EX)
AMD 系列 10h 和 11h
实现了对分析脚本的实验支持,在后续版本中可能会有所更改。要分析脚本,请设置环境变量 SP_COLLECTOR_SKIP_CHECKEXEC 并将脚本名称传送到 collect。
增强了 Java 分析功能,现在可提供有关热点编译代码的源行映射的更多详细信息。JDK 1.6u20 或更高版本的 JDK 1.6 更新以及 JDK 1.7.0-ea-b85 或更高版本的 JDK 1.7 更新现在支持 Java 分析增强功能。
实验的缺省大小限制已删除。您可以使用 -L 选项设置大小限制。
对 dbx 调试器的 collector 子命令进行了如下更改:
改进了硬件计数器别名,并添加了对下列处理器上的硬件计数器分析的支持:
SPARC64 VI 和 VII
Intel Core i7:系列 6,型号 30、31、37、44 和 46(包括 Nehalem EP 和 EX)
AMD 系列 10h 和 11h
实验的缺省大小限制已删除。可以使用 collector limit 命令设置大小限制。
更改了用于分析 Solaris 内核的命令,使 er_kernel 在将信号 SIGINT、SIGTERM 或 SIGQUIT 发送到进程时可执行以下操作:
捕捉 SIGINT、SIGTERM 或 SIGQUIT
终止实验
如果没有指定 -A off,请运行 er_archive
er_generic 命令用于从包含配置文件信息的文本文件生成实验。然后,可使用性能分析器或 er_print 命令检验模拟的实验。有关更多信息,请参见 er_generic(1) 手册页。
缺省情况下,en_desc 命令现在可读取所有后代进程。