Oracle Solaris Studio 12.2:性能分析器

数据收集选项

这些选项控制所收集数据的类型。有关对数据类型的介绍,请参见收集器收集何种数据

如果未指定数据收集选项,则缺省值为 -p on,这会启用缺省分析间隔大约为 10 毫秒的基于时钟的分析。该缺省值由 -h 选项关闭,而不是由任何其他数据收集选项关闭。

如果您明确禁用了基于时钟的分析,而且未启用跟踪或硬件计数器溢出分析,则 collect 命令会列显一条警告消息,并且只收集全局数据。

-p option

收集基于时钟的分析数据。option 的允许值包括:

collect 命令的缺省操作是收集基于时钟的分析数据。

-h counter_definition_1...[, counter_definition_n]

收集硬件计数器溢出分析数据。计数器定义的数量与处理器有关。

如果安装了 perfctr 修补程序(可以从 http://user.it.uu.se/~mikpe/linux/perfctr/2.6/ 下载),该选项在运行 Linux 操作系统的系统上是可用的。安装说明包含在 tar 文件中。使用 LD_LIBRARY_PATH 环境变量的值搜索用户级 libperfctr.so 库,即:对于 32 位版本,在 /usr/local/lib/usr/lib/lib 中进行搜索;对于 64 位版本,在 /usr/local/lib64/usr/lib64/lib64 中进行搜索。

要获取可用计数器的列表,请在终端窗口中键入不带参数的 collect硬件计数器列表一节提供了对计数器列表的介绍。在大多数系统上,即使未列出计数器,仍可以使用数值(十六进制或十进制)对其进行指定。

计数器定义可以采用下列形式之一,具体取决于处理器是否支持硬件计数器的属性。

[+]counter_name[/ register_number][,interval ]

[+]counter_name[~ attribute_1=value_1]...[~attribute_n =value_n][/ register_number][,interval ]

特定于处理器的 counter_name 可以为下列名称之一:

如果指定了多个计数器,则它们必须使用不同的寄存器。如果它们未使用不同的寄存器,则 collect 命令会列显一条错误消息并退出。

如果硬件计数器对与内存访问有关的事件进行计数,可以在计数器名称前添加 + 符号,以针对引起计数器溢出的指令打开对其真实程序计数器地址 (counter address, PC) 的搜索。这种回溯功能适用于 SPARC 处理器,并且仅适用于类型为 loadstoreload-store 的计数器。如果搜索成功,则所引用的虚拟 PC、物理 PC 和有效地址将存储在事件数据包中。

在某些处理器上,可以将多个属性选项与一个硬件计数器关联。如果某个处理器支持多个属性选项,则运行不带参数的 collect 命令会列出计数器定义(包括属性名)。可以使用十进制或十六进制格式来指定属性值。

间隔(溢出值)是事件计数或循环计数的数量,在达到该数量时,硬件计数器将溢出并且将记录溢出事件。间隔可以设置为下列值之一:

缺省值是为每个计数器预定义的正常阈值,它出现在计数器列表中。另请参见硬件计数器溢出分析的限制

如果在使用 -h 选项时未明确指定 -p 选项,则基于时钟的分析功能将处于关闭状态。要同时收集硬件计数器数据和基于时钟的数据,必须同时指定 -h 选项和 -p 选项。

-s option

收集同步等待跟踪数据。option 的允许值包括:

对于 Java 程序,不能记录同步等待跟踪数据;如果指定它,将视为错误。

在 Solaris 上,跟踪以下函数:

mutex_lock()

rw_rdlock()

rw_wrlock()

cond_wait()

cond_timedwait()

cond_reltimedwait()

thr_join()

sema_wait()

pthread_mutex_lock()

pthread_rwlock_rdlock()

pthread_rwlock_wrlock()

pthread_cond_wait()

pthread_cond_timedwait()

pthread_cond_reltimedwait_np()

pthread_join()

sem_wait()

在 Linux 上,跟踪以下函数:

pthread_mutex_lock()

pthread_cond_wait()

pthread_cond_timedwait()

pthread_join()

sem_wait()

-H option

收集堆跟踪数据。option 的允许值包括:

缺省情况下,堆跟踪功能处于关闭状态。对于 Java 程序,不支持堆跟踪;如果指定堆跟踪,将被视为错误。

-M option

指定对 MPI 实验的收集。collect 命令的目标必须为 mpirun 命令,必须使用 ‐‐ 选项将 mpirun 的选项与要使用 mpirun 命令运行的目标程序分开。(始终将 -- 选项和 mpirun 命令一起使用,以便可以通过将 collect 命令及其选项前置于 mpirun 命令行来收集实验。)实验按惯常方式命名且称为创始实验,其目录包含每个 MPI 进程的子实验,按等级进行命名。

option 的允许值包括:

缺省情况下,MPI 实验的收集功能是关闭的。打开 MPI 实验的收集功能时,-m 选项的缺省设置更改为 on

键入不带选项的 collect 命令时,或者如果使用 -M 选项指定无法识别的版本,将会列显受支持的 MPI 版本。

-m option

收集 MPI 跟踪数据。option 的允许值包括:

缺省情况下关闭 MPI 跟踪,除非启用了 -M 选项,在这种情况下会缺省打开 MPI 跟踪。通常使用 -M 选项收集 MPI 实验,无需用户对 MPI 跟踪进行控制。如果要收集 MPI 实验,但不收集 MPI 跟踪数据,请使用显式选项 -M MPI-version -m off

有关其调用被跟踪的 MPI 函数以及根据跟踪数据计算的度量的更多信息,请参见MPI 跟踪数据

-S option

定期记录样本包。option 的允许值包括:

缺省情况下,启用间隔为 1 秒的定期抽样功能。

-c option

记录计数数据,仅针对 Solaris 系统。


注 –

此功能要求您安装 Binary Interface Tool (BIT),它是 Add-on Cool Tools for OpenSPARC(适用于 OpenSPARC 的附加酷类工具)的一部分(可从 http://cooltools.sunsource.net/ 获取)。BIT 是用来度量 Solaris 二进制代码的性能或测试套件适用范围的工具。


option 的允许值包括:

缺省情况下,关闭对计数数据的收集。计数数据不能和任何其他类型的数据一起收集。

-I directory

bit 检测指定目录。该选项仅在 Solaris 系统上可用,且仅当指定了 -c 选项时才有意义。

-N library_name

指定要从 bit 检测中排除的库,不管该库是链接到可执行文件还是使用 dlopen() 装入。该选项仅在 Solaris 系统上可用,且仅当指定了 -c 选项时才有意义。可以指定多个 -N 选项。

-r option

为线程分析器收集数据争用检测或死锁检测数据。允许的值包括:

有关 collect -r 命令和线程分析器的更多信息,请参见《Oracle Solaris Studio 12.2:线程分析器用户指南》tha(1) 手册页。