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.  内核分析

索引

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

在 Oracle Solaris 平台上,使用收集器可以从正在运行的进程中收集数据。如果进程已受 dbx 的控制,则可以暂停该进程并使用前几节中所描述的方法来启用数据收集。Linux 平台不支持在正在运行的进程上启动数据收集。

如果进程不受 dbx 的控制,则可以使用 collect -Ppid 命令从正在运行的进程中收集数据,如使用 collect 实用程序从正在运行的进程中收集数据中所述。您还可以向其附加 dbx,收集性能数据,然后从该进程分离并使进程继续运行。如果要为选定的后续进程收集性能数据,则必须将 dbx 附加到每个进程。

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

  1. 确定程序的进程 ID (process ID, PID)。

    如果从命令行启动了程序并将其置于后台,shell 将在标准输出中列显其 PID。否则,可以通过键入以下内容来确定程序的 PID。

    % ps -ef | grep program-name
  2. 附加到该进程。

    dbx 键入以下内容。

    (dbx) attach program-name pid

    如果 dbx 尚未运行,请键入以下内容。

    % dbx program-name pid

    附加到正在运行的进程会使该进程暂停。

    有关附加到进程的更多信息,请参见手册《Oracle Solaris Studio 12.3:使用 dbx 调试程序》

  3. 启动数据收集功能。

    dbx 中,使用 collector 命令来设置数据收集参数,使用 cont 命令来恢复执行进程。

  4. 从进程中分离。

    在完成对数据的收集之后,暂停该程序并从 dbx 中分离该进程。

    dbx 键入以下内容。

    (dbx) detach

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

如果要收集任何种类的跟踪数据,则必须在运行程序之前预装入收集器库 libcollector.so。要收集堆跟踪数据或同步等待跟踪数据,还必须分别预装入 er_heap.soer_sync.so。这些库提供了能使数据收集发生的实际函数的包装。此外,收集器还将包装函数添加到其他系统库调用中,以保证性能数据的完整性。如果未预装入库,则不能插入这些包装函数。有关收集器如何插入系统库函数的更多信息,请参见使用系统库

预装入 libcollector.so必须使用环境变量同时设置库的名称和库的路径,如下表中所示。使用环境变量 LD_PRELOAD 设置库的名称。使用环境变量 LD_LIBRARY_PATHLD_LIBRARY_PATH_32LD_LIBRARY_PATH_64 设置库的路径。如果未定义 _32_64 变量,则使用 LD_LIBRARY_PATH。如果已经定义了这些环境变量,则向其中添加新值。

表 3-2 用来预装入 libcollector.soer_sync.soer_heap.so 的环境变量设置

环境变量
LD_PRELOAD
libcollector.so
LD_PRELOAD
er_heap.so
LD_PRELOAD
er_sync.so
LD_LIBRARY_PATH
/opt/solarisstudio12.3/lib/analyzer/runtime
LD_LIBRARY_PATH_32
/opt/solarisstudio12.3/lib/analyzer/runtime
LD_LIBRARY_PATH_64
/opt/solarisstudio12.3/lib/analyzer/v9/runtime
LD_LIBRARY_PATH_64
/opt/solarisstudio12.3/lib/analyzer/amd64/runtime

如果 Oracle Solaris Studio 软件未安装在 /opt/solarisstudio12.3 中,请向系统管理员咨询正确的路径。可以在 LD_PRELOAD 中设置全路径,但是,当使用 SPARC V9 64 位体系结构时,这样做会使问题复杂化。


注 - 运行后删除 LD_PRELOADLD_LIBRARY_PATH 设置,以便它们对于从同一个 shell 启动的其他程序无效。