跳过导航链接 | |
退出打印视图 | |
![]() |
Oracle Solaris Studio 12.3:性能分析器 Oracle Solaris Studio 12.3 Information Library (简体中文) |
用 Java 编程语言所编写的应用程序的运行时性能失真和扩大
-h counter_definition_1...[, counter_definition_n]
本节就如何对记录实验所需的磁盘空间量进行估计提供了一些指导。实验的大小直接取决于数据包的大小、记录数据包的速率、程序使用的 LWP 的数量和程序的执行时间。
数据包中包含特定于事件的数据和取决于程序结构(调用堆栈)的数据。取决于数据类型的数据量约为 50 到 100 个字节。调用堆栈数据由每个调用的返回地址组成,每个地址包含 4 个字节(在 64 位可执行文件中为 8 个字节)。记录了实验中的每个线程的数据包。请注意,对于 Java 程序,有两个相关的调用堆栈:Java 调用堆栈和机器调用堆栈,因此将导致向磁盘中写入更多的数据。
记录分析数据包的速率由时钟数据的分析间隔和硬件计数器数据的溢出值控制,对于跟踪函数,是跟踪函数出现的速率。对于分析间隔参数的选择也会因数据收集的开销而影响数据质量和程序性能的失真。这些参数的值越小,提供的统计信息越好,但开销也会越大。为了在获得较好统计信息和尽可能降低开销之间实现折衷,我们已经为分析间隔和溢出值选择了缺省值。值越小,数据越多。
对于分析间隔大约为每秒 100 个样本、数据包大小范围从 80 字节(对于小调用堆栈)到最多 120 字节(对于大调用堆栈)的基于时钟的分析实验或硬件计数器溢出分析实验,将以每个线程每秒 10 千字节的速率记录数据。调用堆栈深度为数百个调用的应用程序可以很轻松地以十倍的速率记录数据。
对于 MPI 跟踪实验,数据量为每个跟踪 MPI 调用 100-150 字节,具体取决于发送的消息数和调用堆栈的深度。此外,在使用 collect 命令的 -M 选项时,缺省情况下会启用时钟分析,因此,请为时钟分析实验添加估计的数字。可以通过使用 -p off 选项禁用时钟分析来减少 MPI 跟踪的数据量。
注 - 收集器以自己的格式 (mpview.dat3) 存储 MPI 跟踪数据,还以 VampirTrace OTF 格式 (a.otf, a.*.z) 存储 MPI 跟踪数据。可以删除 OTF 格式的文件而不影响分析器。
在估计实验大小时,还应当考虑归档文件所占用的磁盘空间,它通常是所要求的总磁盘空间的一小部分(请参见上一节)。如果您无法确定所需空间的大小,请尝试运行实验一小会儿。通过该测试,可以得到与数据收集时间无关的归档文件大小,然后对分析文件的大小进行放大以获得全长实验的估计大小。
除了分配磁盘空间之外,收集器还在内存中分配缓冲区,以便在将分析数据写入磁盘之前对其进行存储。目前无法指定这些缓冲区的大小。如果收集器用完了内存,请尝试减少所收集的数据量。
如果存储实验所需的估计空间大于可用空间,请考虑收集部分运行(而不是全部运行)的数据。要收集部分运行的数据,可以使用带有 -y 或 -t 选项的 collect 命令或 dbx collector 子命令,也可以在程序中插入对收集器 API 的调用。还可以对由带有 -L 选项的 collect 命令或 dbx collector 子命令所收集的分析和跟踪数据总量进行限制。