我是否需要 root(管理员)权限才能运行用户空间“perf”工具? (Linux 内核中启用了 perf 事件)

我是否需要 root(管理员)权限才能运行用户空间“perf”工具? (Linux 内核中启用了 perf 事件)

我是否需要perf以系统管理员(root)身份运行用户空间工具,或者我可以以普通用户身份运行它(或至少某些子命令)吗?

答案1

无需 root即可执行的操作perf取决于kernel.perf_event_paranoid 系统控制设置

  • kernel.perf_event_paranoid= 2:无法进行任何测量。该实用程序对于分析带有、或的perf现有记录可能仍然有用。perf lsperf reportperf timechartperf trace
  • kernel.perf_event_paranoidperf stat= 1:您可以使用或跟踪命令perf record,并获取内核分析数据。
  • kernel.perf_event_paranoid= 0:可以使用perf stat或跟踪命令perf record,并获取CPU事件数据。
  • kernel.perf_event_paranoid= -1:您可以获得对内核跟踪点的原始访问权限(具体来说,您可以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 ]

相关内容