Linux perf工具运行问题

时间:2017-07-25 23:20:42

标签: linux perf

我正在使用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

1 个答案:

答案 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