JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris Studio 12.2:性能分析器
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 编程语言所编写的应用程序的运行时性能失真和扩大

数据的存储位置

实验名称

移动实验

估计存储要求

收集数据

使用 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

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

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

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

从 MPI 程序收集数据

对 MPI 运行 collect 命令

存储 MPI 实验

从脚本收集数据

collectppgsz 一起使用

4.  性能分析器工具

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

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

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

8.  处理实验

9.  内核分析

索引

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

在 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.2:使用 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/solstudio12.2/prod/lib/dbxruntime
LD_LIBRARY_PATH_32
/opt/solstudio12.2/prod/lib/dbxruntime
LD_LIBRARY_PATH_64
/opt/solstudio12.2/prod/lib/v9/dbxruntime
LD_LIBRARY_PATH_64
/opt/solstudio12.2/prod/lib/amd64/dbxruntime

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


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