openwrt开发使用-增加perf
前言
perf性能工具写的文章也有几篇了,这里就不多做介绍了,有兴趣的朋友可以看我之前的几篇文章:《perf性能分析工具使用分享 》、《perf 补充命令分享 》。今天分享的内容是openwrt里面增加perf,因为默认是没有的。
作者:良知犹存
转载授权以及围观:欢迎关注微信公众号:羽林君
或者添加作者个人微信:become_me
opewrt的配置增加perf
首先使用 /
进入搜索perf关键词,默认如下:
接下来我们开始一个个分析,看哪些是我们需要的:
-
第一个是KERNEL_CC_OPTIMIZE_FOR_PERFORMANCE 是控制编译优化的
-
第二个是 KERNEL_CGROUP_PERF
-
第三个是KERNEL_PERF_EVENTS 支持内存支持perf的events捕获
-
第四个是KERNEL_RPI_AXIPERF Prompt: Compile the kernel with RaspberryPi AXI Performance monitors 使用 RaspberryPi AXI 性能监视器编译内核
- 第五个是PACKAGE_perf 是可以支持使用的perf工具
从上面搜索的内容来看,第二个、第三个、第五个应该是我们需要的 ,尤其是第五个,
但是当我们打开第五个位置时候:
发现是没有perf选项的,所以我们需要设置它的依赖选项,才能在第五项出现perf
先按照第二项和第三项配置:
设置以下两个选项:
Compile the kernel with performance events and counters
Compile the kernel with profiling enabled
这个时候第五项出现了perf,我们就可以选中perf
make 编译
拷贝新编译的固件到设备
重启后发现perf命令可以出现了
perf命令测试
perf top -p (进程pid) -K -g 执行如下: perf top -p 2184 -K -g
看不到函数名字是因为除了应用程序要加-g 参数编译之后,像libc.so,等等库也要加-g参数编译,openwrt默认是把库strip了,自己写的程序,可以自己写makefile加-g编译,像这些libc.so这些库的话,因为openwrt编译过程,会把libc.so保留一个没有strip的,所以直接编译完固件之后 在固件源码处find xxx -iname libc.so,把没有strip的库用winwscp工具,传到mt7688的/lib/下面(记录是以覆盖的方式,不要删除libc.so,再拷贝),再次使用perf工具,就能看到libc.so的函数名了,其它库也一样
再使用perf top
结语
这就是我自己在openwrt增加perf使用分享。如果大家有更好的想法和需求,也欢迎大家加我好友交流分享哈。
作者:良知犹存,白天努力工作,晚上原创公号号主。公众号内容除了技术还有些人生感悟,一个认真输出内容的职场老司机,也是一个技术之外丰富生活的人,摄影、音乐 and 篮球。关注我,与我一起同行。
‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ END ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧
推荐阅读
【3】CPU中的程序是怎么运行起来的 必读
本公众号全部原创干货已整理成一个目录,回复[ 资源 ]即可获得。