perf性能工具寫的文章也有幾篇了,這里就不多做介紹了,有興趣的朋友可以看我之前的幾篇文章:《perf性能分析工具使用分享》。今天分享的內(nèi)容是openwrt里面增加perf,因為默認是沒有的。
歡迎關注微信公眾號:羽林君,或者添加作者個人微信:become_me
openwrt的配置增加perf
首先使用 /
進入搜索perf關鍵詞,默認如下:
接下來我們開始一個個分析,看哪些是我們需要的:
第一個是KERNEL_CC_OPTIMIZE_FOR_PERFORMANCE 是控制編譯優(yōu)化的
第二個是 KERNEL_CGROUP_PERF
第三個是KERNEL_PERF_EVENTS 支持內(nèi)存支持perf的events捕獲
第四個是KERNEL_RPI_AXIPERF Prompt: Compile the kernel with RaspberryPi AXI Performance monitors 使用 RaspberryPi AXI 性能監(jiān)視器編譯內(nèi)核
- 第五個是PACKAGE_perf 是可以支持使用的perf工具
從上面搜索的內(nèi)容來看,第二個、第三個、第五個應該是我們需要的 ,尤其是第五個,
但是當我們打開第五個位置時候:
發(fā)現(xiàn)是沒有perf選項的,所以我們需要設置它的依賴選項,才能在第五項出現(xiàn)perf
先按照第二項和第三項配置:
設置以下兩個選項:
Compile?the?kernel?with?performance?events?and?counters
Compile?the?kernel?with?profiling?enabled
這個時候第五項出現(xiàn)了perf,我們就可以選中perf
make 編譯
拷貝新編譯的固件到設備
重啟后發(fā)現(xiàn)perf命令可以出現(xiàn)了
perf命令測試
perf top -p (進程pid) -K -g 執(zhí)行如下:perf top -p 2184 -K -g
看不到函數(shù)名字是因為除了應用程序要加-g 參數(shù)編譯之后,像libc.so,等等庫也要加-g參數(shù)編譯,openwrt默認是把庫strip了,自己寫的程序,可以自己寫makefile加-g編譯,像這些libc.so這些庫的話,因為openwrt編譯過程,會把libc.so保留一個沒有strip的,所以直接編譯完固件之后
在固件源碼處find xxx -iname libc.so,把沒有strip的庫用winwscp工具,傳到mt7688的/lib/下面(記錄是以覆蓋的方式,不要刪除libc.so,再拷貝),再次使用perf工具,就能看到libc.so的函數(shù)名了,其它庫也一樣
再使用perf top
結語
這就是我自己在openwrt增加perf使用分享。如果大家有更好的想法和需求,也歡迎大家加我好友交流分享哈。
作者:良知猶存,白天努力工作,晚上原創(chuàng)公號號主。公眾號內(nèi)容除了技術還有些人生感悟,一個認真輸出內(nèi)容的職場老司機,也是一個技術之外豐富生活的人,攝影、音樂 and 籃球。關注我,與我一起同行。