ルート権限なしで perf を実行する

ルート権限なしで perf を実行する

私は 4.1 カーネルとバージョン 4.1 のperfツールで Debian Testing を実行しています。このバージョンでは、通常のユーザーがそのツールからデータを収集できないようにするための何らかの保護が追加されたようです。そのため、perf通常のユーザーとして実行すると、次のエラーが発生します。

perf stat ls
Error:
You may not have permission to collect stats.
Consider tweaking /proc/sys/kernel/perf_event_paranoid:
 -1 - Not paranoid at all
  0 - Disallow raw tracepoint access for unpriv
  1 - Disallow cpu events for unpriv
  2 - Disallow kernel profiling for unpriv

perf_event_paranoid私のインストールには 3 が含まれています。残念ながら、root であってもそのファイルを変更することはできません。自分のユーザーが sudo 権限なしで使用できるようにするにはどうすればよいですかperf?

ベンチマークしたいアプリケーションがありますが、ルート権限は不要で、ベンチマークのためにルート権限で実行したくありません。

答え1

書き込み可能なファイルは/proc、通常、値をエコーすることで変更されます。以下を試してみてください。

sudo sh -c 'echo 1 >/proc/sys/kernel/perf_event_paranoid'

以下のファイル/proc/sys/には、sysctl簡単にアクセスできるようにコマンドを使用するので、代わりに次のように実行できます。

sudo sysctl -w kernel.perf_event_paranoid=1

(ただし-w書くこれはオプションのようです。起動時にこれを実行するには、/etc/sysctl.d/99-mysettings.conf次の行を含む独自のファイルを作成します。

kernel.perf_event_paranoid=1

/run/sysctl.d/および内の既存のファイルを上書きしないファイル名を選択してください/usr/lib/sysctl.d/マニュアルsysctl.d

関連情報