4

最近、自分のプラットフォームに Perf ツールをインストールし、それを自分のプラットフォームのプロファイリングに使用したいと考えました。スタンドアロン アプリケーションのプロファイリングを開始しました。以下のコマンドを使用しました

perf start ./helloworld

「./helloworld」のパフォーマンス カウンター統計:

  4.555957 task-clock                #    0.000 CPUs utilized
         1 context-switches          #    0.219 K/sec
         0 cpu-migrations            #    0.000 K/sec
       124 page-faults               #    0.027 M/sec
       <not supported> cycles
       <not supported> stalled-cycles-frontend
       <not supported> stalled-cycles-backend
       <not supported> instructions
       <not supported> branches
       <not supported> branch-misses

       60.005519331 seconds time elapsed

この出力をどのように解釈すればよいかわかりません。期待される出力ですか?

また、ここに入力された < サポートされていません > をどうすればよいですか?コマンドを実行する前に、このファイルをサポートするために有効にする必要があるものはありますか?

4

4 に答える 4

2

これらの行は、実行中のカーネルが、プログラムのこれらの側面をプロファイリングするために perf が必要とする特定の機能をサポートしていないことを示しています。ほとんどのパフォーマンスはカーネル空間にあるため、カーネルが必要な機能をサポートしていることを確認する必要があります。

編集:

カーネルでこれらの機能を有効にするかどうかは状況によって異なります。これらのコンポーネントがカーネル モジュールとしてコンパイルされていない場合は、自分でコンパイルする必要があります。それらがモジュールとしてコンパイルされている場合は、modprobeそれらだけにすることができます。試す:

find /lib/modules/`uname -r` -regex .*perf.*

リストが表示されたら、modprobe各モジュール名を試してください。それ以外の場合は、モジュールを自分でコンパイルするか、カーネル全体を自分でコンパイルする必要があります。

于 2013-11-03T13:50:43.427 に答える
-1

何をプロファイリングするかによって異なります。Perf は、プログラムの速度を示す究極の答えを提供しません。パフォーマンスを測定したい場合は、どこを見ればよいかを知る必要があります。と言っている行については、 -e フラグで手動で指定してみてください。perf stat -e サイクルのように ./helloworld

于 2013-11-03T14:00:26.687 に答える