Oracle® Developer Studio 12.5:性能分析器

退出打印视图

更新时间: 2016 年 6 月
 
 

硬件计数器溢出的内核分析

er_kernel 实用程序可以使用 DTrace cpc 提供者(仅在运行 Oracle Solaris 11 的系统上可用)为内核收集硬件计数器溢出分析。

就如使用 collect 命令一样,可以使用 er_kernel 命令的 –h 选项来执行内核的硬件计数器溢出分析。一个重要差异是 collect 命令将调整计数器溢出值,以便大致与对应的时钟分析速率匹配。相比之下,er_kernel 会选择比较粗糙的静态溢出值,这些值可能不合适,尤其是在使用原始计数器名称时。最终的数据收集速率可能过低(导致噪声数据)或过高(导致衡量的性能行为失真)。建议使用别名,并且/或者确认以 10 为系数更改计数器溢出值不会实质性改变所观测的性能行为。

collect 一样,如果未显式指定任何 -p off 参数,缺省情况下将启用基于时钟的分析。如果指定 -h high-h low 以高频率或低频率请求该芯片的缺省计数器集,则缺省的时钟分析也将设置为高频率或低频率;将遵从显式 -p 参数。

er_kernel -h 命令使用 DTrace cpc 提供程序收集硬件计数器溢出分析。硬件计数器分析在 Oracle Solaris 11 之前的系统上不可用。如果芯片上的溢出机制使内核能够指明哪个计数器发生溢出,则可以使用芯片提供的任意多个计数器;否则,只能指定一个计数器。

数据空间分析在运行 DTrace 1.8 或更高版本的 SPARC 系统上受支持,且仅适用于精确计数器。如果在不支持数据空间分析的系统上请求,将忽略数据空间标志,但是实验仍会运行。

系统硬件计数器机制可以由多个进程用于执行用户分析,但如果任何用户进程、cputrack 或其他 er_kernel 正在使用该机制,则该机制不能用于内核分析。在这种情况下,er_kernel 将报告 "HW counters are temporarily unavailable; they may be in use for system profiling"(硬件计数器暂时不可用,它们可能正用于进行系统分析)。

要显示处理器支持硬件计数器溢出分析的计算机上的硬件计数器,请运行不带任何其他参数的 er_kernel ——h 命令。

如果芯片上的溢出机制使内核能够指明哪个计数器发生溢出,则可以分析芯片提供的任意多个计数器;否则只能指定一个计数器。er_kernel -h 输出通过显示消息来指定您是否可以使用多个计数器,例如,"specify HW counter profiling for up to 4 HW counters"(为多达 4 个 HW 计数器指定 HW 计数器分析)。

有关硬件计数器分析的更多信息,请参见硬件计数器分析数据使用 collect -h 收集硬件计数器分析数据

另请参见 er_print 手册页,了解硬件计数器溢出分析的更多信息。