在有别名的硬件计数器列表中,第一个字段(例如,cycles)提供可以在 collect 命令的 -h counter... 参数中使用的别名。此别名还是在 er_print 命令中使用的标识符。
第二个字段列出计数器的可用寄存器,例如 [/{0|1}]。
第三个字段(例如 9999991)是计数器的缺省溢出值。对于有别名的计数器,选择的缺省值可提供合理的样本率。由于实际样本率变化相当大,因此可能需要指定缺省值以外的值。
第四个字段(在圆括号中)包含类型信息。它提供简短描述(例如 CPU Cycles)、原始硬件计数器名称(例如 Cycle_cnt)以及计数单位类型(例如 CPU-cycles)。
如果类型信息的第一个单词是:
load、store 或 load-store,则表明计数器与内存相关。您可以在 collect -h 命令中的计数器名称前放置一个 + 号(例如 +dcrm),以请求搜索引发事件的准确指令和虚拟地址。+ 号还可以启用数据空间分析;有关详细信息,请参见“数据对象”标签、“数据布局”标签和“内存对象”标签。
not-program-related,计数器会捕获由其他某个程序启动的事件,例如 CPU 到 CPU 的高速缓存嗅探。使用计数器进行分析时将生成警告,并且分析不记录调用栈。
如果类型信息的第二个单词或仅有的单词是:
CPU-cycles,则计数器可用于提供基于时间的度量。针对此类计数器报告的度量在缺省情况下会转换为独占时间和包含时间,但是也可以显示为事件计数。
events,则度量是包含和独占事件计数,且无法转换为时间。
在示例中的有别名的硬件计数器列表中,类型信息包含一个单词的,如第一个计数器的 CPU-cycles 和第二个计数器的 events。类型信息包括两个单词的,如第三个计数器的 load events。