这些选项控制所收集数据的类型。有关对数据类型的介绍,请参见收集器收集何种数据。
如果未指定数据收集选项,则缺省值为 -p on,这会启用缺省分析间隔大约为 10 毫秒的基于时钟的分析。该缺省值由 -h 选项关闭,而不是由任何其他数据收集选项关闭。
如果您明确禁用了基于时钟的分析,而且未启用跟踪或硬件计数器溢出分析,则 collect 命令会列显一条警告消息,并且只收集全局数据。
off-关闭基于时钟的分析。
on-打开缺省分析间隔大约为 10 毫秒的基于时钟的分析。
lo[w]-打开分析间隔大约为 100 毫秒(低精度)的基于时钟的分析。
hi[gh]-打开分析间隔大约为 1 毫秒(高精度)的基于时钟的分析。有关启用高精度分析的信息,请参见基于时钟的分析的限制。
[+]value-打开基于时钟的分析并将其分析间隔设置为 value。value 的缺省单位为毫秒。可以将 value 指定为整数或浮点数。可以选择在数值后加后缀 m 来选择毫秒单位或者加 u 来选择微秒单位。该值应当是时钟精度的倍数。如果该值较大但不是精度的倍数,则会向下舍入。如果较小,则会列显一条警告消息并将其设置为时钟精度。
在 SPARC 平台上,可以像对硬件计数器分析那样在任何值前面添加 + 符号来启用基于时钟的数据空间分析。
collect 命令的缺省操作是收集基于时钟的分析数据。
收集硬件计数器溢出分析数据。计数器定义的数量与处理器有关。如果安装了 perfctr 修补程序(可以从 http://user.it.uu.se/~mikpe/linux/perfctr/2.6/perfctr-2.6.15.tar.gz 下载),则该选项当前在运行 Linux 操作系统的系统上是可用的。
计数器定义可以采用下列形式之一,具体取决于处理器是否支持硬件计数器的属性。
[+]counter_name[/register_number][,interval]
[+]counter_name[~ attribute_1=value_1]...[~attribute_n=value_n][/register_number][,interval]
特定于处理器的 counter_name 可以为下列名称之一:
周知的(有别名的)计数器名称
由 cputrack(1) 使用的原始(内部)名称。如果计数器可以使用任一事件寄存器,则可以通过向内部名称附加 /0 或 /1 来指定将要使用的事件寄存器。
如果指定了多个计数器,则它们必须使用不同的寄存器。如果它们未使用不同的寄存器,则 collect 命令会列显一条错误消息并退出。某些计数器可在任一寄存器上计数。
要获取可用计数器的列表,请在终端窗口中键入不带参数的 collect。硬件计数器列表一节提供了对计数器列表的介绍。
如果硬件计数器对其计数的事件与内存访问有关,则可以在计数器名称前添加 + 符号,以针对引起计数器溢出的指令打开对其真实程序计数器地址 (PC) 的搜索。这种回溯功能适用于 SPARC 处理器,并且仅适用于类型为 load、store 或 load-store 的计数器。如果搜索成功,则所引用的虚拟 PC、物理 PC 和有效地址将存储在事件数据包中。
在某些处理器上,可以将多个属性选项与一个硬件计数器关联。如果某个处理器支持多个属性选项,则运行不带参数的 collect 命令会列出计数器定义(包括属性名)。可以使用十进制或十六进制格式来指定属性值。
间隔(溢出值)是事件计数的数量,在达到该数量时,硬件计数器将溢出并且将记录溢出事件。间隔可以设置为下列值之一:
on 或空字符串-缺省溢出值,可以通过键入不带参数的 collect 来确定。
hi[gh]-所选计数器的高精度值,大约比缺省溢出值短十倍。之所以还支持缩写 h,是为了与以前的软件发行版兼容。
lo[w]-所选计数器的低精度值,大约比缺省溢出值长十倍。
interval-特定的溢出值,必须是正整数,可以采用十进制格式,也可以采用十六进制格式。
缺省值是为每个计数器预定义的正常阈值,它出现在计数器列表中。另请参见硬件计数器溢出分析的限制。
如果在使用 -h 选项时未明确指定 -p 选项,则基于时钟的分析功能将处于关闭状态。要同时收集硬件计数器数据和基于时钟的数据,必须同时指定 -h 选项和 -p 选项。
all-启用具有零阈值的同步等待跟踪。该选项强制记录所有同步事件。
calibrate-启用同步等待跟踪并在运行时通过校准来设置阈值。(与 on 等效。)
off-禁用同步等待跟踪。
on-启用具有缺省阈值的同步等待跟踪,这将在运行时通过校准来设置缺省阈值。(与 calibrate 等效。)
不记录 Java 监视器的同步等待跟踪数据。
on-打开对堆分配和堆释放请求的跟踪。
off-关闭堆跟踪。
缺省情况下,堆跟踪功能处于关闭状态。对于 Java 程序,不支持堆跟踪;如果指定堆跟踪,将被视为错误。
on-打开对 MPI 调用的跟踪。
off-关闭对 MPI 调用的跟踪。
缺省情况下,MPI 跟踪功能处于关闭状态。
有关其调用被跟踪的 MPI 函数以及从跟踪数据中所计算的度量的更多信息,请参见MPI 跟踪数据。
缺省情况下,启用间隔为 1 秒的定期抽样功能。
记录计数数据(仅用于 SPARC 处理器)。
此功能要求您安装 Binary Interface Tool (BIT),它是 Sun Studio 12(可从 http://cooltools.sunsource.net/ 获取)中一个很不错的附加工具。BIT 是用来度量 SPARC 二进制代码的性能或测试套件适用范围的工具。
option 的允许值包括:
on-打开对函数和指令计数数据的收集。如果可执行文件及其静态链接的任何共享对象是使用 -xbinopt=prepare 标志编译的,则会记录这些可执行文件和共享对象的数据。虽然是静态链接但是未使用 -xbinopt=prepare 标志编译的任何其他共享对象将不包含在数据中。同样,动态打开的任何共享对象将不包含在数据中。可以在性能分析器的“指令-频率”选项卡中或使用 er_print ifreq 命令查看数据。
static-在目标可执行文件中的每个指令以及所有静态链接的共享对象都刚好执行一次的情况下,将生成一个实验。和 -c on 选项一样,-c static 选项也要求使用 -xbinopt=prepare 标志编译可执行文件和共享对象。
为线程分析器收集数据争用检测或死锁检测数据。允许的值包括:
on-打开线程分析器的数据争用检测数据
off-关闭线程分析器数据
all-打开所有线程分析器数据
race-打开线程分析器的数据争用检测数据
deadlock-收集死锁和潜在死锁数据
dtN-打开特定的线程分析器数据类型,这些数据类型由 dt* 参数指定。
有关 collect -r 命令和线程分析器的更多信息,请参见《Sun Studio 12:线程分析器用户指南》和 tha.1 手册页。