前言

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  ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧

推荐阅读

【1】jetson nano开发使用的基础详细分享

【2】Linux开发coredump文件分析实战分享

【3】CPU中的程序是怎么运行起来的 必读

【4】cartographer环境建立以及建图测试

【5】设计模式之简单工厂模式、工厂模式、抽象工厂模式的对比

本公众号全部原创干货已整理成一个目录,回复[ 资源 ]即可获得。