跳过导航链接 | |
退出打印视图 | |
Oracle Solaris Studio 12.3:性能分析器 Oracle Solaris Studio 12.3 Information Library (简体中文) |
用 Java 编程语言所编写的应用程序的运行时性能失真和扩大
-h counter_definition_1...[, counter_definition_n]
应用程序的一次执行过程中所收集的数据称作实验。实验由存储在目录下的一组文件组成。实验的名称即目录的名称。
除记录实验数据以外,收集器还为程序所使用的装入对象创建自己的归档文件。这些归档文件包含装入对象中每个目标文件和函数的地址、大小和名称以及装入对象的地址和上次修改的时间戳。
缺省情况下,实验存储在当前目录中。如果该目录位于网络文件系统上,则存储数据所需的时间比在本地文件系统中长,而且可能会导致性能数据失真。如有可能,应始终尝试在本地文件系统中记录实验。可以在运行收集器时指定存储位置。
新实验的缺省名称为 test.1.er。后缀 .er 是必需的:如果您赋予的名称不具有该后缀,则系统会显示一条错误消息而且不接受该名称。
如果您选择使用格式为 experiment.n.er 的名称,(其中 n 是正整数),则收集器会将后续实验名称中的 n 自动递增 1。例如,mytest.1.er 的后面是 mytest.2.er、mytest.3.er 等。如果实验已经存在,收集器也会递增 n,直到找到未使用的实验名称才停止递增 n。如果实验名称不含 n 且实验存在,则收集器会列显一条错误消息。
实验可按组收集。组在实验组文件中定义,缺省情况下该文件存储在当前目录中。实验组文件是纯文本文件,它具有特殊的标题行,并在随后的每一行中显示实验名称。实验组文件的缺省名称为 test.erg。如果名称不以 .erg 结尾,则系统会显示一条错误并且不接受该名称。创建实验组后,您使用该组名运行的所有实验都会添加到该组中。
可以手动创建实验组文件,方法是创建第一行是如下内容的纯文本文件
#analyzer experiment group
然后将实验名称添加到随后的行中。文件的名称必须以 .erg 结尾。
还可以通过使用带有 -g 参数的 collect 命令来创建实验组。
子孙进程的实验是沿袭命名的,如下所示。要形成子孙进程的实验名称,可将下划线、代码字母和数字添加到其创建者实验名称的主干中。代码字母 f 表示派生,x 表示执行,c 表示组合。数字是派生或执行的索引(无论是否成功)。例如,如果创始进程的实验名称为 test.1.er,则在第三次调用 fork 时为子进程创建的实验为 test.1.er/_f3.er。如果子进程成功调用 exec,则新后续进程的实验名称为 test.1.er/_f3_x1.er。
缺省情况下,MPI 程序的数据收集到 test.1.er 中,而 MPI 进程的所有数据都收集到子实验中,每个等级一个子实验。收集器使用 MPI 等级以格式 M_rm.er 构造子实验名称,其中 m 是 MPI 等级。例如,MPI 等级 1 的子实验数据将记录在 test.1.er/M_r1.er 目录中。
缺省情况下,内核上的实验命名为 ktest.1.er 而不是 test.1.er。当同时收集用户进程的数据时,内核实验将包含每个跟随的用户进程所对应的子实验。
子实验的命名格式为 _process-name _PID_process-id.1.er。例如,在进程 ID 1264 下运行的 sshd 进程上所运行的实验将命名为 ktest.1.er/_sshd_PID_1264.1.er。
如果要将实验移到其他计算机以便对其进行分析,则应了解分析对在其中记录实验的操作环境的相关性。
归档文件包含计算函数级度量和显示时间线所必需的全部信息。但是,如果要查看带注释的源代码或带注释的反汇编代码,则必须能够访问与记录实验时所用装入对象或源文件相同的版本。
有关用于查找实验源代码的过程的说明,请参见工具如何查找源代码。
为了确保能够看到程序的正确的带注释源代码和带注释反汇编代码,可以在移动或复制实验之前将源代码、目标文件和可执行文件复制到该实验中。可以通过使用 collect 命令的 -A copy 选项或 dbx collector archive 命令将装入对象自动复制到实验中。