为何收集硬件计数器数据?
硬件计数器数据可告诉您有关选定处理器事件的频率。它可用于诊断其它事件中的数据流和指令延迟问题。
收集器如何收集硬件计数器数据?
硬件计数器统计每个 LWP 的事件数量。在特定 LWP 的计数达到上溢值时会发出信号,计数器将重置,然后计数重新开始。在收集器截取信号时,它会记录计数器 ID、上溢值、时间戳和调用栈,以及 LWP ID、线程 ID 和处理器 ID。此进程称为硬件计数器上溢分析。上溢将被性能分析器归于记录上溢时要执行的下一指令中。因此派生的计数数据也实际上加以统计。
可以统计哪些类型的硬件事件?
可以计数的事件类型取决于特定处理器和操作环境。以下是一些常见事件的标准列表:
要显示可用计数器的列表,请选择以下方法之一:
一些常用计数器具有别名,别名在列表的开始显示。有关列表格式的信息,参见硬件计数器列表。下表列出具有别名的 UltraSPARCTM III 硬件计数器,同时列出它们的度量名称和用于计数的寄存器。
计数器名称 | 别名 | 度量 | 寄存器 |
---|---|---|---|
Cycle_cnt | cycles | CPU 周期 | 0 或 1 |
Instr_cnt | insts | 执行的指令 | 0 或 1 |
IC_miss | icm | I$ 未命中 | 1 |
DC_rd_miss | dcrm | D$ 读未命中 | 1 |
DC_wr_miss | dcwm | D$ 写未命中 | 1 |
DC_rd | dcr | D$ 读引用 | 0 |
DC_wr | dcw | D$ 写引用 | 0 |
EC_ref | ecref | E$ 引用 | 0 |
ITLB_miss | itlbm | ITLB 未命中 | 1 |
DTLB_miss | dtlbm | DTLB 未命中 | 1 |
EC_misses | ecm | E$ 未命中 | 1 |
EC_rd_miss | ecrm | E$ 读未命中 | 0 |
EC_ic_miss | ecim | E$ 指令未命中 | 1 |
Dispatch0_IC_miss | icstall | I$ 延迟周期 | 0 |
Re_DC_miss | dcstall | D$ 和 E$ 延迟周期 | 1 |
Re_EC_miss | ecstall | E$ 延迟周期 | 1 |
Rstall_storeQ | sqstall | StoreQ 延迟周期 | 0 |
FA_pipe_completion | fpadd | FP 加 | 0 |
FM_pipe_completion | fpmul | FP 乘 | 1 |
在性能分析器中可以看到哪些硬件计数器度量?
硬件计数器上溢分析数据将通过求和上溢值而被转换为计数度量。对于循环计数的计数器,使用程序运行时所在机器中的所有 CPU 的平均时钟频率将计数度量转换为时间。度量名称是 cputrack(1) 使用的计数器名称。有别名的计数器名称具有相应的度量名称。对于 UltraSPARC III 硬件,度量名称已在上表中列出。
硬件计数器数据收集的限制是什么?
有关详细信息,参见《程序性能分析工具》手册
另请参见 | |
---|---|
收集性能数据 在正运行的进程上收集性能数据 硬件计数器的使用程序 |