2017-07-25 133 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