我是否需要perf
以系统管理员(root)身份运行用户空间工具,或者我可以以普通用户身份运行它(或至少某些子命令)吗?
答案1
无需 root即可执行的操作perf
取决于kernel.perf_event_paranoid
系统控制设置。
kernel.perf_event_paranoid
= 2:无法进行任何测量。该实用程序对于分析带有、或的perf
现有记录可能仍然有用。perf ls
perf report
perf timechart
perf trace
kernel.perf_event_paranoid
perf 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 ]