1

我正在使用ocountoprofile 套件中的工具来计算三个不同的硬件性能计数器:

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

补充

查看源代码,我实际上不确定这是可能的,因为上面的三个事件只是同一个计数器上的掩码,源代码的计数打印部分似乎只处理事件名称,而不是掩码名称。

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

4

1 回答 1

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

于 2013-12-17T06:29:45.900 回答