web-dev-qa-db-ja.com

root権限なしでperfを実行する

4.1カーネルとperfツールのバージョン4.1でdebianテストを実行しています。このバージョンでは、通常のユーザーがそのツールからデータを収集できないようにするための何らかの保護が追加されているようです。したがって、通常のユーザーとして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を使用できるようにするにはどうすればよいですか?

Rootを必要としないベンチマークを実行したいアプリケーションがあり、それをrootとして実行してベンチマークを実行したくありません。

31
kain88

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

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

/proc/sys/の下のファイルには、簡単にアクセスできるように sysctl コマンドも含まれているため、代わりに次のように実行できます。

Sudo sysctl -w kernel.perf_event_paranoid=1

(ただし、write-wはオプションのようです)。これがブート時に行われるようにするには、次の行で独自の/etc/sysctl.d/99-mysettings.confファイルを作成します

kernel.perf_event_paranoid=1

/run/sysctl.d/および/usr/lib/sysctl.d/の既存のファイルを上書きしないファイル名を選択してください。 man sysctl.d を参照してください。

45
meuh