跳过导航链接 | |
退出打印视图 | |
Oracle Solaris Studio 12.3 发行版的新增功能 Oracle Solaris Studio 12.3 Information Library (简体中文) |
本节介绍了此 Oracle Solaris Studio 发行版的性能分析器以及相关工具中新增和更改的功能。有关详细信息,请参见《Oracle Solaris Studio 12.3:性能分析器》手册和性能分析器中的帮助。
性能分析工具包含下列增强功能。
显著提高了处理大型实验(特别是 Java 实验)的性能。
对数据过滤做了多项改进,如过滤增强功能中所述。
现在,大多数数据标签都包括上下文菜单,右键单击标签即可打开上下文菜单。可使用这些上下文菜单找到特定于标签的高级功能(如过滤)。
现在,“实验比较”模式可以比较在不同的可执行文件和装入对象上的实验。要比较的源代码和反汇编代码现在在拆分窗格中显示两个版本。可以从 "Functions"(函数)和 "Source"(源)标签的上下文菜单启用“实验比较”模式。
标签中改进的快速导航使您可以执行以下操作:
双击 "Functions"(函数)标签中的某个函数可以打开该函数的 "Source"(源)标签。
在 "Lines"(行)标签中双击某一行可以在该行或其附近打开 "Source"(源)标签。
在 "Source"(源)标签中双击某一行可以在该行的第一条指令或其附近打开 "Disassembly"(反汇编)标签。
在 "PC" 标签中双击某一 PC 可以在该地址或其附近打开 "Disassembly"(反汇编)标签。
用于搜索在实验中引用的源文件的方法已更改。首先尝试路径映射,然后尝试将搜索路径与路径映射相结合,最后尝试原始完整路径。
对时间线做了多项改进,如时间线增强功能中所述。
"Call Tree"(调用树)标签可将 HW 周期转换为 "User CPU Time"(用户 CPU 时间),您可从上下文菜单设置 "Call Tree"(调用树)中显示的度量。
"Threads"(线程)标签新增了一个显示模式,称为 "Chart"(图表)。当包含时钟分析数据的实验启用了 "Chart"(图表)时,缺省 "Load Imbalance"(负载不平衡)图表会显示归属于每个线程的总 CPU 时间量。
性能分析器的 "Timeline"(时间线)标签包含下列增强功能:
可右键单击 "Timeline"(时间线)打开上下文菜单,以过滤数据、选择事件、进行缩放、恢复至前一视图或更改时间线属性。
事件频率图,以时间的函数形式显示事件频率的折线图。缺省情况下不显示此图表,必须在 "Set Data Preferences"(设置数据首选项)对话框中进行选择。
事件状态图,以时间的函数形式显示应用程序在各种状态下所花费时间的分配情况的条形图。对于在 Oracle Solaris 上记录的时钟分析数据,事件状态图显示 Oracle Solaris 微状态。缺省情况下不显示此图表,必须在 "Set Data Preferences"(设置数据首选项)对话框中进行选择。
双击 "Timeline"(时间线)现在将放大函数颜色选择器对话框,而不是打开此对话框。
新增的 "Timeline Details"(时间线详细信息)标签取代了 "Event"(事件)标签。新增的标签不仅如之前一样提供了事件信息,而且还包括用于导航时间线、缩放和更改函数颜色的按钮。
现在,时间线使用您在启动性能分析器时所指定的字体。
时间线可以设置为显示从各实验聚集的事件。这不是缺省设置,必须通过在 "Set Data Preferences"(设置数据首选项)对话框的 "Timeline"(时间线)标签中选择 "Group Data by: Experiment"(数据分组方式:实验)来进行设置。
性能分析器的数据过滤已经简化和增强:
现在,大多数数据标签都包括上下文过滤器,右键单击标签即可选择。新增的上下文过滤器和现有上下文过滤器的名称也更易于理解。
现在,上下文过滤器可以立即过滤数据,不再需要您在单独的对话框中进行应用。上下文菜单过滤器的选择会影响所有标签使用的数据。所选的每个过滤器都与现有的过滤器相结合,可以对数据进行渐进式过滤。
"Filter Data"(过滤数据)对话框已经简化,并重命名为 "Manage Data Filters"(管理数据过滤器)。但在过滤数据时,建议从数据标签的上下文菜单中进行过滤。
可使用 "Manage Data Filters"(管理数据过滤器)对话框的 "Custom"(定制)标签查看已从上下文菜单应用的过滤器的当前状态。"Custom"(定制)标签允许用户编辑当前的过滤器表达式。它还支持撤消、重做和 "Show Keywords"(显示关键字)(一个描述由上下文菜单过滤器生成的过滤表达式中可能会出现的符号的对话框)。
可使用通过新增的 er_label 命令添加的标签来过滤实验。
联机帮助中有关于过滤的扩展信息。
有关更多信息,请参见《Oracle Solaris Studio 12.3:性能分析器》中的"过滤数据"。
er_label 命令可以定义实验的一部分并为其分配名称或添加标签。标签捕获在实验中以开始时间和停止时间标记定义的一个或多个时间段内发生的分析事件。
您可通过在命令行运行 er_label 命令或在脚本中执行该命令来为实验分配标签。向实验添加标签后,便可以使用标签进行过滤。例如,您可以通过过滤实验包括或排除标签所定义时间段内的分析事件。
er_label 的一个用途是支持将由客户端驱动的服务器程序作为一个独立的进程或多个进程进行分析。在这种使用模型中,使用 collect 命令启动服务器,以便开始在服务器上创建实验。服务器启动并准备好接受客户端请求后,您便可运行客户端脚本,以请求驱动服务器并运行 er_label 来标记发生客户端请求的实验部分。
有关更多信息,请参见《Oracle Solaris Studio 12.3:性能分析器》中的"标记实验"。
实验格式已更改,版本号现在为 12.3,与 Oracle Solaris Studio 版本号匹配。
Oracle Solaris Studio 12.3 中的工具可以打开具有以下版本号的实验:
版本 10.1,使用 Oracle Solaris Studio 12.2 或 Sun Studio 12 Update 1 创建的实验。
版本 10.2,使用早期 Oracle Solaris Studio 12.3 发行版(如 Beta 发行版)创建的实验。
版本 12.3,使用 Oracle Solaris Studio 12.3 发行版创建的实验。
如果您尝试打开从以前发行版创建的实验,您将会得到一个错误,指示该实验必须用工具的早期版本读取。
数据收集更改会影响 collect 命令、dbx collector 命令和 er_kernel 命令。
collect 实用程序在此发行版中进行了如下更改:
collect 不会验证目标程序是否为 ELF 可执行文件,从而使您能够分析脚本而无需设置环境变量。如果目标是一个 ELF 可执行文件,collect 会检查该文件是否与其运行所在的计算机兼容。
Oracle Solaris 上增加了对 SPARC T4、Intel Westmere 和 Sandy Bridge 芯片的硬件计数器支持。增加了 Linux 对 Westmere 的支持,但尚未实现 Linux 对 Sandy Bridge 的支持。
硬件计数器分析现在可以通过将 ”+” 前置于任何精密硬件计数器前面,对二进制文件执行内存空间分析。目前只有 SPARC T4 和 T3 处理器支持精密硬件计数器。
要确定哪些硬件计数器是精密的,请在 collect -h 命令的输出中查找关键字 precise。要在包含内存空间分析数据的实验中分析内存访问模式,请在 "Set Data Presentation"(设置数据显示)对话框的 "Tabs"(标签)标签中选择 "Memory Objects"(内存对象)标签,例如,Vaddress 或 Vline_64b。然后,您可使用所选 "Memory Objects"(内存对象)标签中的上下文过滤器按数据地址进行过滤。
通过 PerfEvents 框架在运行 2.6.32 以上版本的 Linux 内核的 Linux 版本上实现了硬件计数器支持,不需要内核修补程序;但对于早期系统,仍需要 perfctr 修补程序。
不带任何参数运行 collect 现在仅显示用法消息。要显示有关可用硬件计数器的信息,必须不带任何附加参数运行 collect—h。
现在,可以在 Linux 系统(包括 Oracle Linux 6)上使用 collect -p high 执行高分辨率时钟分析。
dbx 收集器在此发行版中进行了如下更改:
Oracle Solaris 上增加了对 SPARC T4、Westmere 和 Sandy Bridge 芯片的硬件计数器支持。增加了 Linux 对 Westmere 的支持,但尚未实现 Linux 对 Sandy Bridge 的支持。
通过 PerfEvents 框架在运行 2.6.32 以上版本的 Linux 内核的 Linux 版本上实现了硬件计数器支持,不需要内核修补程序;但对于早期系统,仍需要 perfctr 修补程序。
对用于分析 Oracle Solaris 内核的 er_kernel 实用程序进行了如下更改:
er_kernel 现在可以对内核和应用程序执行分析。可使用 -F 选项控制是否跟随应用程序进程以及是否将其数据记录为内核实验的子实验。
er_kernel 不再支持用于分析指定进程的 -T 选项。但是,可以在正则表达式中使用 -F 选项。
er_kernel 实用程序可以使用 DTrace cpc 提供者(仅在运行 Oracle Solaris 11 的系统上可用)为内核收集硬件计数器溢出分析。就如使用 collect 命令一样,可以使用 er_kernel 命令的 -h 选项来执行内核的硬件计数器溢出分析。但不支持数据空间分析,所以 er_kernel 将忽略数据空间请求。
不带任何参数运行 er_kernel 现在仅显示用法消息。要显示有关可用硬件计数器的信息,必须不带任何附加参数运行 er_kernel—h。
如果芯片的硬件计数器溢出机制允许内核告知哪个计数器溢出,您可以分析芯片提供的任意数量的计数器;否则只能指定一个计数器。er_kernel—h 输出通过显示消息来指定您是否可以使用多个计数器,例如,"specify HW counter profiling for up to 4 HW counters"(为多达 4 个 HW 计数器指定 HW 计数器分析)。
er_kernel 不会验证目标装入是否为 ELF 可执行文件,从而使您能够分析任何命令或脚本。
er_print 命令在此发行版中进行了如下更改:
显著提高了处理大型实验(特别是 Java 实验)的性能。
用于搜索在实验中引用的源文件的方法已更改。首先尝试路径映射,然后尝试将搜索路径与路径映射相结合,最后尝试原始完整路径。
可使用 tlmode 子命令设置时间线的缺省值,以显示从各实验聚集的事件。
Oracle Solaris Studio 12.3 线程分析器中新增或更改了以下功能。
现在,如果应用程序没有针对争用检测分析进行检测,线程分析器会通知您
线程分析器现在会自动在 "Races"(争用)标签中打开第一个调用堆栈。