Oracle® Solaris Studio 12.4:性能分析器

退出打印视图

更新时间: 2015 年 1 月
 
 

时钟分析的限制

用于分析的分析间隔最小值和时钟精度取决于特定的操作环境。 最大值设置为 1 秒。分析间隔值将向下舍入到最接近的时钟精度的整数倍。要显示可能发现的最小值和最大值以及时钟精度,请键入不带其他参数的 collect 命令。

不能对使用分析计时器的程序执行时钟分析。收集器拦截对用于设置分析时钟参数的 setitimer(3) 的调用并阻止其他程序对其进行使用。

在 Linux 平台上,只能将时钟数据显示为 CPU 总时间。Linux CPU 时间是用户 CPU 时间和系统 CPU 时间的总和。

在 Linux 系统上,多线程应用程序的时钟分析所报告的线程数据可能不准确。内核并不总是按指定的间隔将分析信号传送到每个线程;有时,信号传送到了错误的线程。如果可用,使用周期计数器进行的硬件计数器分析通常提供更准确的线程数据。

时钟分析中的运行时失真和扩大

时钟分析记录当 SIGPROF 信号传递到目标时的数据。这将导致在处理该信号和展开调用堆栈时产生扩大。调用堆栈越深,信号越频繁,扩大越显著。在一定程度上,时钟分析表现出一些失真,这是由程序中那些执行最深堆栈的部分存在显著扩大而导致的。

请尽可能不要将缺省值设置为一个精确的毫秒数,而是将其设置为稍大于或稍小于某个精确数(例如,10.007 毫秒或 0.997 毫秒),以免与系统时钟关联,从而避免数据失真。在 Oracle Solaris 平台上,可以按照同样的方式来设置定制值(在 Linux 平台上不能设置定制值)。