我正在使用perf工具来标记我的一个项目。我面临的问题是,我自动运行我的机器上的perf工具,一切正常。 但是,我正在尝试在自动化服务器中运行perf以使其成为我的签入过程的一部分但是我从自动化服务器收到以下错误
WARNING: Kernel address maps (/proc/{kallsyms,modules}) are restricted,
check /proc/sys/kernel/kptr_restrict.
Samples in kernel functions may not be resolved if a suitable vmlinux
file is not found in the buildid cache or in the vmlinux path.
Samples in kernel modules won't be resolved at all.
If some relocation was applied (e.g. kexec) symbols may be misresolved
even with a suitable vmlinux or kallsyms file.
Error:
Permission error - are you root?
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
fp: Terminated
我尝试将/proc/sys/kernel/perf_event_paranoid
更改为-1和0但仍然看到相同的问题。
以前有人见过这个吗?为什么我需要以root身份运行命令?我可以在没有sudo的机器上运行它。
perf record -m 32 -F 99 -p xxxx -a -g --call-graph fp
答案 0 :(得分:1)
您无法使用-a
(完整的系统分析)和非root用户的示例内核:http://man7.org/linux/man-pages/man1/perf-record.1.html
尝试在没有-a
选项的情况下运行它,并且事件仅限于:u
后缀的用户空间事件:
perf record -m 32 -F 99 -p $PID -g --call-graph fp -e cycles:u
或者在没有PMU直通的虚拟化平台上使用软件事件
perf record -m 32 -F 99 -p $PID -g --call-graph fp -e cpu-clock:u