我正在使用oprofile套件中的ocount
工具来计算三种不同的硬件性能计数器:
ocount --events=rtm_retired:commit,rtm_retired:start,rtm_retired:aborted programA
问题是因为这三个计数器共享一个前缀,所以输出非常不明确。
Event counts (actual) for programA:
Event Count % time counted
rtm_retired 908 100.00
rtm_retired 908 100.00
rtm_retired 0 100.00
在给定命令行的情况下,排序是正确的,但如果我将所有这些内容转储到文件中,就像我对其他计数器进行实验一样,则可能会忘记计数器是什么。
查看ocount
联机帮助页,我似乎无法找到强制它提供完整事件名称的方法。
已添加:
看看这些消息来源,我真的不确定这是可能的,因为上面的三个事件只是同一个计数器上的掩码,并且源的计数打印部分似乎只处理事件名称,而不是掩码名。
唉(但很想被证明是错的)。答案 0 :(得分:0)
如果无法更改ocount的源代码,则可以随后修改输出。
尝试通过这个perl one liner输出管道输出:
ocount --events=rtm_retired:commit,rtm_retired:start,rtm_retired:aborted programA | \
perl -n -e ' @suffix = ("commit", "start", "aborted"); if ( m/rtm_retired/ ) { $count++; s/rtm_retired/rtm_retired:$suffix[$count-1]/; } print $_;'
只要您确保跟踪传递给ocount
并将@suffix
数组与其匹配的计数器的顺序,这应该有效。