2017-05-20 4 views
0

パラメータ-xを使用してperfを実行し、機械可読形式で印刷しました。出力は次のようになります。perfツールの出力、マジックの値

1285831153,,instructions,1323535732,100.00 
7332248,,branch-misses,1323535732,100.00 
1316.587352,,cpu-clock,1316776510,100.00 
1568113343,,cycles,1323535732,100.00 

最初の数値はクリアされますが、説明の後の値はわかりません。説明の背後にある最初のものは実行時ですか?それでなぜ違うの?各行の終わりに100.00は何を意味しますか?これは文書化されていません。 statコマンドのhttps://perf.wiki.kernel.org/index.php/Tutorial#Machine_readable_output

+0

あなたの正確な 'perf stat'コマンドとそのオプションは何でしたか? – osgx

答えて

1

-xオプションがcsv_outputフラグとしてtools/perf/builtin-stat.c fileに実装され、印刷がstatic void printout機能「(line 1061)である文字列の最後の値から、おそらく、次のとおりです:私はここでそれを見上げた。

print_noise(counter, noise); 
    print_running(run, ena); 

1回のターゲットプログラム(-r 5または-r 2オプション - https://perf.wiki.kernel.org/index.php/Tutorial#Repeated_measurement)の場合、print_noiseは何も印刷しません。また、run引数をの値として2回印刷します0

static void print_running(u64 run, u64 ena) 
{ 
    if (csv_output) { 
     fprintf(stat_config.output, "%s%" PRIu64 "%s%.2f", 
        csv_sep, 
        run, 
        csv_sep, 
        ena ? 100.0 * run/ena : 100.0); 
    } else if (run != ena) { 
     fprintf(stat_config.output, " (%.2f%%)", 100.0 * run/ena); 
    } 
} 

論文のフィールドがあなたのために有用な情報を持っていないので、あなたは、= 1(100.00パーセント)run/enaを持っています。

彼らがイベントの多重化の場合に使用されている(してみてくださいperf stat -dまたはperf stat -dd; https://perf.wiki.kernel.org/index.php/Tutorial#multiplexing_and_scaling_events)ユーザが同時に有効にすることができる複数のイベントを測定するPERF頼む(唯一の7実際のハードウェアカウントのハードウェアユニットを搭載したIntelの8つのハードウェアイベント)。 Perf(カーネルのperf_eventsサブシステム)はイベントの一部のサブセットを有効にし、これらのサブセットを毎秒数回変更します。その後、/ enaはこのイベントが有効になった時の時間分に比例し、実行はイベントがカウントされたときの正確な時間量を表示します。人間が読むことができる正常な状態では、イベント行には[100%]がないときにマークされます。報告されたイベントカウントは、プログラムの完全な実行時間(不正確にスケーリングされた)に対してスケーリング(推定)されてもよい。

関連する問題