Sun Studio 12:性能分析器

估计存储要求

本节就如何对记录实验所需的磁盘空间量进行估计提供了一些指导。实验的大小直接取决于数据包的大小、记录数据包的速率、程序使用的 LWP 的数量和程序的执行时间。

数据包中包含特定于事件的数据和取决于程序结构(调用栈)的数据。取决于数据类型的数据量约为 50 到 100 个字节。调用栈数据由每个调用的返回地址组成,每个地址包含 4 个字节(在 64 位可执行文件中为 8 个字节)。记录了实验中的每个 LWP 的数据包。请注意,对于 Java 程序,有两个相关的调用栈:Java 调用栈和机器调用栈,因此将导致向磁盘中写入更多的数据。

记录分析数据包的速率由时钟数据的分析间隔和硬件计数器数据的溢出值来控制。但是,对于这些参数的选择也会因数据收集的开销而影响数据质量和程序性能的失真。这些参数的值越小,提供的统计信息越好,但开销也会越大。为了在获得较好统计信息和尽可能降低开销之间实现折衷,我们已经为分析间隔和溢出值精心选择了缺省值。值越小,数据越多。

对于一个具有 10 毫秒分析间隔和较小调用栈的基于时钟的分析实验,包的大小为 100 个字节,对于每个 LWP,记录数据的速率为 10 千字节/ 秒。对于溢出值为 1000000 以及在 750 MHz 处理器上收集有关 CPU 循环和执行指令数据的硬件计数器溢出分析实验,包的大小为 100 个字节,对于每个 LWP,记录数据的速率为 150 千字节/ 秒。调用栈深度为数百个调用的应用程序可以很轻松地以十倍的速率记录数据。

在估计实验大小时,还应当考虑归档文件所占用的磁盘空间,它通常是所要求的总磁盘空间的一小部分(请参见上一节)。如果您无法确定所需空间的大小,请尝试运行实验一小会儿。通过该测试,可以得到与数据收集时间无关的归档文件大小,然后对分析文件的大小进行放大以获得全长实验的估计大小。

除了分配磁盘空间之外,收集器还在内存中分配缓冲区,以便在将分析数据写入磁盘之前对其进行存储。目前无法指定这些缓冲区的大小。如果收集器用完了内存,请尝试减少所收集的数据量。

如果存储实验所需的估计空间大于可用空间,请考虑收集部分运行(而不是全部运行)的数据。要收集部分运行的数据,可以使用 collect 命令或 dbx collector 子命令,也可以在程序中插入对收集器 API 的调用。还可以对由 collect 命令或 dbx collector 子命令所收集的分析和跟踪数据总量进行限制。


注 –

性能分析器无法读取大于 2 GB 的性能数据。