2017-07-25 6 views
0

私はプロジェクトのベンチマークにperfツールを使用しています。私が直面している問題は、私がマシン上でperfツールを実行する自動化を取得することです、すべて正常に動作します。 ただし、自動化サーバーでperfを実行して、チェックインのプロセスの一部にすることを試みていますが、オートメーションサーバーから次のエラーが表示されます。Linuxのperfツールの実行に関する問題

警告:カーネルアドレスマップ(/ proc/{kallsyms、modules}/proc/sys/kernel/kptr_restrictを確認してください。

適切なvmlinux ファイルがbuildidキャッシュまたはvmlinuxパスに見つからない場合、カーネル機能のサンプルが解決されないことがあります。

カーネルモジュールのサンプルはまったく解決されません。 再配置が適用された場合(たとえばkexec)、適切なvmlinuxまたはkallsymsファイルを使用していても、シンボルが誤って解決される可能性があります( )。

エラー:

権限エラー - あなたはrootですか?

を考えてみて微調整は、/ proc/sys/kernel/perf_event_paranoid:

-1 - でのパラノイア必ずしもすべて

0 - unpriv

1の生のトレースポイントへのアクセスを禁止する - unpriv

のCPUのイベントを禁止

2 - unpriv

FPのためのプロファイリングカーネルを禁止:

を終端

私は/ proc/sys/kernel/perf_event_paranoidを-1と0に変更しようとしましたが、同じ問題が残っています。 誰もこれを前に見ましたか?なぜ私はrootとしてコマンドを実行する必要がありますか?私はsudoなしで私のマシン上で実行することができます。 がところで、コマンドは、-a(フルシステムプロファイリング)とサンプルを使用することができないレコード-m 32 -F 99 -p XXXX -a -g --callグラフFP

答えて

0

PERFこの

似ていますroot以外のユーザーからカーネル:http://man7.org/linux/man-pages/man1/perf-record.1.html

-aオプションなしと:u接尾辞によってユーザ空間の事象に限定イベントでそれを実行してみてください:

perf record -m 32 -F 99 -p $PID -g --call-graph fp -e cycles:u 

それともvirtuのためのソフトウェアイベントを使用PMUパススルーなしのアライズドプラットフォーム

perf record -m 32 -F 99 -p $PID -g --call-graph fp -e cpu-clock:u 
関連する問題