2017-10-13 11 views
1
とperfイベントモディファイアを使用できない理由

イベントpower/energy-core /を使用してカーネルスペースでシステムのパワーを読み取ろうとしています。 :私はpower/energy-core/

perf stat -a -e power/energy-cores/:k -I 1000 sleep 10 

:kがこのdoc https://perf.wiki.kernel.org/index.php/Tutorialで説明したように、単にカーネル空間でイベントをcolects修飾子ですが、私はこれを使用する場合:

[email protected]:/sys/bus/event_source/devices/cpu$ sudo perf stat -a -e 
power/energy-cores/:k -I 1000 sleep 30 
event syntax error: '..nergy-cores/:k' 
            \___ parser error 
Run 'perf list' for a list of valid events 

    Usage: perf stat [<options>] [<command>] 

    -e, --event <event> event selector. use 'perf list' to list available events 

最初のI:以下のエラーを取得KIこのイベントは:k修飾子をサポートしていませんでしたが、私は他のテストを行いましたが、今はこれがバグかもしれないと思いますr間違った構文で試しています。それをテストするために、私は他のイベント以下のように試してみました:二つの方法キャッシュ・ミスまたはCPU /キャッシュミスで呼び出すことができます

キャッシュ・ミス・イベント/ので、私は修飾

[email protected]:/sys/bus/event_source/devices/cpu$ sudo perf stat -a -e cache-misses:k -I 1000 sleep 5 
#   time    counts unit events 
    1.000429017   287.589  cache-misses:k            
    2.000828552   195.999  cache-misses:k            
    3.001086195   216.885  cache-misses:k            
    4.001438671   240.842  cache-misses:k            
    5.000702347   314.469  cache-misses:k            
[email protected]:/sys/bus/event_source/devices/cpu$ sudo perf stat -a -e cpu/cache-misses/:k -I 1000 sleep 5 
event syntax error: '..ache-misses/:k' 
            \___ parser error 
Run 'perf list' for a list of valid events 

    Usage: perf stat [<options>] [<command>] 

    -e, --event <event> event selector. use 'perf list' to list available events 
[email protected]:/sys/bus/event_source/devices/cpu$ sudo perf stat -a -e cpu/cache-misses/ -I 1000 sleep 5 
#   time    counts unit events 
    1.000379149   1.949.866  cpu/cache-misses/           
    2.000628057   1.023.040  cpu/cache-misses/           
    3.000906500   1.284.476  cpu/cache-misses/           
    4.001197960   853.127  cpu/cache-misses/           
    5.000762257   722.242  cpu/cache-misses/ 

誰かとの両方を試してみました:kモディファイアをpower/energy-core/eventでどのように使うことができるのかという手掛かりがありますか?

結果: 正しい答えが指摘されているように:しかし、残念ながら私は修飾子ではサポートされていないようです。

[email protected]:~$ sudo perf stat -a -e power/energy-cores/k -I 1000 sleep 5 
#   time    counts unit events 
    1.000099515 <not supported> Joules power/energy-cores/k           
    2.000246523 <not supported> Joules power/energy-cores/k           
    3.000440743 <not supported> Joules power/energy-cores/k           
    4.000673143 <not supported> Joules power/energy-cores/k           
    5.000722624 <not supported> Joules power/energy-cores/k           
[email protected]:~$ sudo perf stat -a -e power/energy-cores/ -I 1000 sleep 5 
#   time    counts unit events 
    1.000128209    0,19 Joules power/energy-cores/           
    2.000257170    0,25 Joules power/energy-cores/           
    3.000406715    0,26 Joules power/energy-cores/           
    4.000571140    0,20 Joules power/energy-cores/           
    5.000711815    1,01 Joules power/energy-cores/           
    5.000882867    0,00 Joules power/energy-cores/           

答えて

3

は通常、あなたがperfコマンドで任意のイベントの測定を開始最初のステップは、perf listを実行し、イベントpower/energy coresは、お使いのシステムによってサポートされているかどうかを確認することです。私は私のシステムでperfリストを実行する例を与えます。イベントのパワー/エネルギー・コアの測定は、実際によってサポートされている場合、あなたは確かになります方法、

~/linux-4.11.3/tools/perf$ ./perf list

List of pre-defined events (to be used in -e):

branch-instructions OR branches [Hardware event]

branch-misses [Hardware event]

power/energy-cores/ [Kernel PMU event]

あなたのシステム。

これが確認されると、あなたがこのイベントを測定するには、以下の構文を使用する必要があります。

./perf stat -a -e power/energy-cores/ -I 1000 sleep 30(ない:Kまたはない:U)を

編集#1:

あなたが使用している可能性がA:Kまたは:Uを使用すると、以下のようなイベントpower/energy-coresを指定することができれば: -

./perf stat -a -e energy-cores:k -I 1000 sleep 30を(しかし、あなたは完全修飾を指定しない限り、perfenergy-coresイベントを認識することはできませんこのようなイベント名:power/energy-cores)。

しかし私が2回目の編集で提案したように、これらのカウンタはユーザ空間とカーネル空間の分離をサポートしていません。

編集#2:

残念ながら、これらのRAPLカウンタはカーネル空間またはユーザー空間に基づいて値を分離しません。さらに、これらのイベントに関連するパフォーマンス監視ユニットは、サンプリングも実行できません。

これは、コード内の証拠である。また、あなたが理解するには、以下のパッチドキュメントを読むことができます

arch/x86/events/intel/rapl.c

: -

RAPL patch

+0

こんにちは@Arnabjyoti Kalitaあなたは右の問題ですcouter power/energy-cores /は私のシステムでサポートされていますが、unfurtunatlyはkや他の修飾子ではないようです。 これらの修飾子がどのようにサポートされているかについて手掛かりはありますか?私はそれがとても必要なので、私は他の方法がない場合、自分自身でサポートを追加しようとする必要がある。 –

+0

こんにちは@Leandro、perf statコマンドを実行するとどのようなメッセージが表示されますか?システムがこのイベントをサポートしていても、正しい/適切な値を取得していないことをどのように知っていますか? –

+0

私の質問の最後に結果を追加しました。イベントはperfリストにpresntされ、修飾子なしの値が返されますが、カーネルとユーザースペースで区切られた値が必要です。 –