1

oprofile スイートのツールを使用して、ocount3 つの異なる HW パフォーマンス カウンターをカウントしています。

ocount --events=rtm_retired:commit,rtm_retired:start,rtm_retired:aborted programA

問題は、3 つのカウンターがプレフィックスを共有しているため、出力がうんざりするほどあいまいなことです。

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、完全なイベント名を強制する方法がわかりません。

追加

ソースを見ると、上記の 3 つのイベントは同じカウンターの単なるマスクであり、ソースの count-printing セクションはマスク名ではなくイベント名のみを処理しているように見えるため、これが実際に可能かどうかはわかりません。

悲しいかな(しかし、間違っていることが証明されるのが大好きです)。

4

1 に答える 1

0

ocount のソース コードを変更できない場合は、後でいつでも出力を変更できます。

この perl ワンライナーを介して出力をパイプしてみてください:

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 に答える