ユーザースペース「perf」ツールを実行するには、root(管理者)権限が必要ですか? (perfイベントはLinuxカーネルで有効になります)

ユーザースペース「perf」ツールを実行するには、root(管理者)権限が必要ですか? (perfイベントはLinuxカーネルで有効になります)

ユーザースペースツールをsysadmin(root)として実行する必要がありますかperf、それとも通常のユーザーとしてこのツール(または少なくともいくつかのサブコマンド)を実行できますか?

答え1

ルートなしでできることはperf次のように異なります。kernel.perf_event_paranoid システム制御設定

  • kernel.perf_event_paranoid= 2:測定を実行できません。このユーティリティは、perfまたはを使用して既存のレコードを分析するのにまだ役立ちます。perf lsperf reportperf timechartperf trace
  • kernel.perf_event_paranoidperf stat= 1:またはTraceコマンドを使用してperf recordカーネルプロファイリングデータを取得できます。
  • kernel.perf_event_paranoid= 0:perf statコマンドを使用または追跡し、perf recordCPUイベントデータを取得できます。
  • kernel.perf_event_paranoid= -1:カーネルトラッキングポイントへのrawアクセスを取得できます(特に、次のようにすることmmapができます)。perf_event_open、どういう意味なのかわかりません)。

答え2

perfがRHEL8でイベントを記録できるようにするために必要な手順は次のとおりです。

sudo mount -o remount,mode=755 /sys/kernel/tracing/
sudo sh -c 'echo -1 >/proc/sys/kernel/perf_event_paranoid'
sudo sh -c 'echo 0 >/proc/sys/kernel/kptr_restrict'

その後、通常のユーザーとしてperfを実行できます。

~$ perf record -e block:block_rq_complete -ag sleep 5
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.045 MB perf data ]

関連情報