从oprofile更明确的标签

时间:2013-12-03 19:28:48

标签: performancecounter oprofile

我正在使用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联机帮助页,我似乎无法找到强制它提供完整事件名称的方法。

已添加

看看这些消息来源,我真的不确定这是可能的,因为上面的三个事件只是同一个计数器上的掩码,并且源的计数打印部分似乎只处理事件名称,而不是掩码名。

唉(但很想被证明是错的)。

1 个答案:

答案 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数组与其匹配的计数器的顺序,这应该有效。