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.  收集性能数据

编译和链接程序

源代码信息

静态链接

共享对象处理

编译时优化

编译 Java 程序

为数据收集和分析准备程序

使用动态分配的内存

使用系统库

使用信号处理程序

使用 setuidsetgid

数据收集的程序控制

C 和 C++ 接口

Fortran 接口

Java 接口

C、C++、Fortran 和 Java API 函数

动态函数和模块

collector_func_load()

collector_func_unload()

数据收集的限制

基于时钟的分析的限制

时钟分析中的运行时失真和扩大

收集跟踪数据的限制

跟踪过程中的运行时失真和扩大

硬件计数器溢出分析的限制

硬件计数器溢出分析中的运行时失真和扩大

后续进程中数据收集的限制

OpenMP 分析的限制

Java 分析的限制

用 Java 编程语言所编写的应用程序的运行时性能失真和扩大

数据的存储位置

实验名称

实验组

子孙进程的实验

MPI 程序的实验

内核和用户进程上的实验

移动实验

估计存储要求

收集数据

使用 collect 命令收集数据

数据收集选项

-p option

-h counter_definition_1...[, counter_definition_n]

-s option

-H option

-M option

-m option

-S option

-c option

-I directory

-N library_name

-r option

实验控制选项

-F option

-j option

-J java_argument

-l signal

-t duration

-x

-y signal [ ,r]

输出选项

-o experiment_name

-d directory-name

-g group-name

-A option

-L size

-O file

其他选项

-P process_id

-C comment

-n

-R

-V

-v

使用 collect 实用程序从正在运行的进程中收集数据

使用 collect 实用程序从正在运行的进程中收集数据

使用 dbx collector 子命令收集数据

dbx 运行收集器:

数据收集子命令

profile option

hwprofile option

synctrace option

heaptrace option

tha option

sample option

dbxsample { on | off }

实验控制子命令

disable

enable

pause

resume

sample record name

输出子命令

archive mode

limit value

store option

信息子命令

show

status

在 Oracle Solaris 平台上使用 dbx 从正在运行的进程中收集数据

从不受 dbx 控制的正在运行的进程中收集数据

从正在运行的程序中收集跟踪数据

从 MPI 程序收集数据

对 MPI 运行 collect 命令

存储 MPI 实验

从脚本收集数据

collectppgsz 一起使用

4.  性能分析器工具

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

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

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

8.  操作实验

9.  内核分析

索引

数据的存储位置

应用程序的一次执行过程中所收集的数据称作实验。实验由存储在目录下的一组文件组成。实验的名称即目录的名称。

除记录实验数据以外,收集器还为程序所使用的装入对象创建自己的归档文件。这些归档文件包含装入对象中每个目标文件和函数的地址、大小和名称以及装入对象的地址和上次修改的时间戳。

缺省情况下,实验存储在当前目录中。如果该目录位于网络文件系统上,则存储数据所需的时间比在本地文件系统中长,而且可能会导致性能数据失真。如有可能,应始终尝试在本地文件系统中记录实验。可以在运行收集器时指定存储位置。

后续进程的实验存储在创始进程的实验内部。

实验名称

新实验的缺省名称为 test.1.er。后缀 .er 是必需的:如果您赋予的名称不具有该后缀,则系统会显示一条错误消息而且不接受该名称。

如果您选择使用格式为 experiment.n.er 的名称,(其中 n 是正整数),则收集器会将后续实验名称中的 n 自动递增 1。例如,mytest.1.er 的后面是 mytest.2.ermytest.3.er 等。如果实验已经存在,收集器也会递增 n,直到找到未使用的实验名称才停止递增 n。如果实验名称不含 n 且实验存在,则收集器会列显一条错误消息。

实验组

实验可按组收集。组在实验组文件中定义,缺省情况下该文件存储在当前目录中。实验组文件是纯文本文件,它具有特殊的标题行,并在随后的每一行中显示实验名称。实验组文件的缺省名称为 test.erg如果名称不以 .erg 结尾,则系统会显示一条错误并且不接受该名称。创建实验组后,您使用该组名运行的所有实验都会添加到该组中。

可以手动创建实验组文件,方法是创建第一行是如下内容的纯文本文件

#analyzer experiment group

然后将实验名称添加到随后的行中。文件的名称必须以 .erg 结尾。

还可以通过使用带有 -g 参数的 collect 命令来创建实验组。

子孙进程的实验

子孙进程的实验是沿袭命名的,如下所示。要形成子孙进程的实验名称,可将下划线、代码字母和数字添加到其创建者实验名称的主干中。代码字母 f 表示派生,x 表示执行,c 表示组合。数字是派生或执行的索引(无论是否成功)。例如,如果创始进程的实验名称为 test.1.er,则在第三次调用 fork 时为子进程创建的实验为 test.1.er/_f3.er。如果子进程成功调用 exec,则新后续进程的实验名称为 test.1.er/_f3_x1.er

MPI 程序的实验

缺省情况下,MPI 程序的数据收集到 test.1.er 中,而 MPI 进程的所有数据都收集到子实验中,每个等级一个子实验。收集器使用 MPI 等级以格式 M_rm.er 构造子实验名称,其中 m 是 MPI 等级。例如,MPI 等级 1 的子实验数据将记录在 test.1.er/M_r1.er 目录中。

内核和用户进程上的实验

缺省情况下,内核上的实验命名为 ktest.1.er 而不是 test.1.er。当同时收集用户进程的数据时,内核实验将包含每个跟随的用户进程所对应的子实验。

子实验的命名格式为 _process-name _PID_process-id.1.er。例如,在进程 ID 1264 下运行的 sshd 进程上所运行的实验将命名为 ktest.1.er/_sshd_PID_1264.1.er

移动实验

如果要将实验移到其他计算机以便对其进行分析,则应了解分析对在其中记录实验的操作环境的相关性。

归档文件包含计算函数级度量和显示时间线所必需的全部信息。但是,如果要查看带注释的源代码或带注释的反汇编代码,则必须能够访问与记录实验时所用装入对象或源文件相同的版本。

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

为了确保能够看到程序的正确的带注释源代码和带注释反汇编代码,可以在移动或复制实验之前将源代码、目标文件和可执行文件复制到该实验中。可以通过使用 collect 命令的 -A copy 选项或 dbx collector archive 命令将装入对象自动复制到实验中。