Sun Studio 12:性能分析器

数据的存储位置

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

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

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

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

实验名称

新实验的缺省名称为 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 命令来创建实验组。

缺省实验名称与从 MPI 程序中收集的实验名称不同,MPI 程序会为每个 MPI 进程创建一个实验。缺省实验名称为 test.m.er,其中 m 是进程的 MPI 等级。如果指定了实验组 group.erg,则缺省实验名称为 group.m.er。如果指定了实验名称,则该名称会覆盖缺省值。有关更多信息,请参见从 MPI 程序收集数据

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

移动实验

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

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

性能分析器在下列位置依次搜索源代码、对象和可执行文件,并在找到具有正确基本名称的文件时停止:

可以从分析器 GUI 或通过使用 setpathaddpath 指令来更改搜索顺序或添加其他搜索目录。

为了确保能够看到程序的正确的带注释源代码和带注释反汇编代码,可以在移动或复制实验之前将源代码、目标文件和可执行文件复制到该实验中。如果您不想复制目标文件,则可以使用 -xs 来链接程序,以确保源代码行和文件位置上的信息插入可执行文件中。可以通过使用 collect 命令的 -A 选项或 dbx collector archive 命令将装入对象自动复制到实验中。