2017-07-25 134 views
0

我正在使用perf工具来标记我的项目之一。我面临的问题是,我得到automatihen我在我的机器上运行perf工具,一切工作正常。 但是,我试图在自动化服务器上​​运行perf以使其成为我的检查过程的一部分,但我从自动化服务器收到以下错误Linux perf工具运行问题

警告:内核地址映射(/ proc/{kallsyms,modules})受限制, check/proc/sys/kernel/kptr_restrict。

如果在buildid缓存或vmlinux路径中找不到合适的vmlinux 文件,则内核函数中的示例可能无法解析。

内核模块中的示例根本不会被解析。 即使使用适当的vmlinux或kallsyms文件,如果应用某些重定位(例如kexec)符号,也可能会误解 。

错误:

权限错误 - 你是root吗?

考虑扭捏的/ proc/sys目录/内核/ perf_event_paranoid:

-1 - 在不偏执所有

0 - 禁止对unpriv

1生跟踪点访问 - 禁止对unpriv

CPU事件

2 - 禁止对unpriv

FP内核分析:终止

我试着将/ proc/sys/kernel/perf_event_paranoid更改为-1和0,但仍然看到相同的问题。 有人看过这个吗?为什么我需要以root身份运行该命令?我可以在没有sudo的情况下在我的机器上运行它。顺便说一句 ,该命令是这样

PERF记录-m 32 -F 99 -p XXXX -a -g --call-图表FP

回答

0

不能使用-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 

或使用VIRTU软件事件没有PMU直通的平衡平台

perf record -m 32 -F 99 -p $PID -g --call-graph fp -e cpu-clock:u