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として実行してベンチマークを実行したくありません。
/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 を参照してください。