JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris Studio 12.3:性能分析器     Oracle Solaris Studio 12.3 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  性能分析器概述

2.  性能数据

3.  收集性能数据

4.  性能分析器工具

5.  er_print 命令行性能分析工具

6.  了解性能分析器及其数据

数据收集的工作原理

实验格式

archives 目录

子实验

动态函数

Java 实验

记录实验

collect 实验

创建进程的 dbx 实验

正在运行的进程上的 dbx 实验

解释性能度量

基于时钟的分析

计时度量的准确性

计时度量的比较

硬件计数器溢出分析

数据空间分析和内存空间分析

同步等待跟踪

堆跟踪

MPI 跟踪

调用堆栈和程序执行

单线程执行和函数调用

共享对象之间的函数调用

信号

陷阱

尾部调用优化

显式多线程

基于 Java 技术的软件执行概述

Java 调用堆栈和机器调用堆栈

基于时钟的分析和硬件计数器溢出分析

Java 分析视图模式

Java 分析数据的用户视图模式

Java 分析数据的专家视图模式

Java 分析数据的计算机视图模式

OpenMP 软件执行概述

OpenMP 分析数据的用户视图模式

人工函数

用户模式调用堆栈

OpenMP 度量

OpenMP 分析数据的专家视图模式

OpenMP 分析数据的计算机视图模式

不完全的堆栈展开

中间文件

将地址映射到程序结构

进程映像

装入对象和函数

有别名的函数

非唯一函数名称

来自剥离共享库的静态函数

Fortran 备用入口点

克隆函数

内联函数

编译器生成的主体函数

外联函数

动态编译的函数

<Unknown> 函数

OpenMP 特殊函数

<JVM-System> 函数

<no Java callstack recorded> 函数

<Truncated-stack> 函数

<Total> 函数

与硬件计数器溢出分析相关的函数

将性能数据映射到索引对象

将数据地址映射到程序数据对象

数据对象描述符

<Total> 数据对象

<Scalars> 数据对象

<Unknown> 数据对象及其元素

将性能数据映射到内存对象

7.  了解带注释的源代码和反汇编数据

8.  操作实验

9.  内核分析

索引

将数据地址映射到程序数据对象

当对应于内存操作的硬件计数器事件的 PC 已被处理,可以成功回溯到很可能引发事件的内存引用指令时,分析器将使用编译器在其硬件分析支持信息中提供的指令标识符和描述符派生关联的程序数据对象。

术语数据对象用于表示程序常量、变量、数组和聚集(如结构和联合),以及源代码中所述的各种聚集元素。数据对象的类型及其大小随源语言的不同而不同。许多数据对象是在源程序中显式命名的,而其他数据对象可能是未命名的。有些数据对象是从其他(更简单的)数据对象派生或聚集的,从而产生了一组丰富的、通常很复杂的数据对象。

每个数据对象都具有关联的范围,即在其中定义数据对象并可以引用数据对象的源程序区域,该区域可能是全局性的(如装入对象),也可能是特定的编译单元(目标文件)或函数。相同的数据对象可能是使用不同的范围定义的,或者是在不同的范围内以不同的方式引用的特定数据对象。

在启用回溯的情况下为内存操作的硬件计数器事件收集的数据派生度量被归属到关联的程序数据对象类型,并传播到包含数据对象和人工 <Total>(它被视为包含所有数据对象,其中包括 <Unknown><Scalars>)的任何聚集。<Unknown> 的不同子类型向上传播到 <Unknown> 聚集。下一节将介绍 <Total><Scalars><Unknown> 数据对象。

数据对象描述符

可以通过数据对象的声明类型和名称的组合来完整描述数据对象。简单的标量数据对象 {int i} 描述名为 i、类型为 int 的变量,而 {const+pointer+int p} 描述类型为 int、名为 p 的常量指针。类型名称中的空格将替换为下划线 (_),未命名的数据对象用短划线 (-) 名称表示,例如:{double_precision_complex -}

同样,对于 foo_t 类型的结构,将整个聚集表示为 {structure:foo_t}。聚集元素需要其容器的其他规范,例如,{structure:foo_t}.{int i} 表示 foo_t 类型的上一结构的 int 类型的成员 i。聚集本身也可以是(更大)聚集的元素,其对应描述符构造为聚集描述符的串联,并最终成为标量描述符。

虽然并不总是需要使用全限定描述符来消除数据对象的歧义,但是该描述符提供了完整的通用规范以协助标识数据对象。

<Total> 数据对象

<Total> 数据对象是一个人工结构,用于将程序的数据对象作为一个整体表示。除了归属到不同数据对象(以及它所属的任何聚集)外,所有性能度量都归属到特殊的数据对象 <Total>。该数据对象出现在数据对象列表的顶部,其数据可以用于为其他数据对象的数据提供透视。

<Scalars> 数据对象

聚集元素将其性能度量另外归属到其关联聚集的度量值,而所有标量常量和变量都将其性能度量另外归属到人工 <Scalars> 数据对象的度量值。

<Unknown> 数据对象及其元素

在许多情况下,不能将事件数据映射到特定的数据对象。在这样的情况下,将数据映射到名为 <Unknown> 的特殊数据对象及其元素之一,如下面所述。