CPU profiler(gperftools)在嵌入式系统上的应用示例

2019-07-13 01:14发布

上一篇博文《性能测试工具CPU profiler(gperftools)的使用心得》记录了CPU profiler的基本使用方式。本文以halley2开发板为例记录用CPU profiler在嵌入系统下进行性能分析的方法. 按照上文方法,已经可以让自己的测试程序test_capture生成性能分析报告 test_capture.prof。然后将test_capture交叉编译生成mips的可执行文件。然后复制到halley2开发板上运行(我是用开发板上的SD卡来存储程序),test_capture执行结束后,与在PC平台上一样生成性能分析报告 test_capture.prof。将 test_capture.prof复制到PC系统下(ubuntu). 如同在PC平台上一样,调用pprof,如下,会报一些找不到动态库(.so)的错误。但文本的报告还是正常生成了。 # text方式输出 pprof ./test_capture test_capture.prof --text Using local file ./test_capture. Using local file test_capture.prof. /usr/bin/objdump: '/lib/libc-2.22.so': No such file /usr/bin/objdump: '/lib/libgcc_s.so.1': No such file /usr/bin/objdump: '/lib/libm-2.22.so': No such file /usr/bin/objdump: '/lib/libpthread-2.22.so': No such file /usr/bin/objdump: '/lib/ld-2.22.so': No such file /usr/bin/addr2line: '/lib/libgcc_s.so.1': No such file /usr/bin/addr2line: '/lib/libc-2.22.so': No such file Total: 18659 samples 5523 29.6% 29.6% 5523 29.6% RunCascade 5519 29.6% 59.2% 5519 29.6% CanFaceCcd 1210 6.5% 65.7% 1218 6.5% StepImageHalfNormal 1117 6.0% 71.6% 1118 6.0% GetIntegralOfIma 1078 5.8% 77.4% 1078 5.8% GetSqIntegralOfIma 480 2.6% 80.0% 480 2.6% ImageFilter 448 2.4% 82.4% 448 2.4% ExtRegOnHor144_Mouth 439 2.4% 84.8% 439 2.4% ExtRegOnHor144 370 2.0% 86.7% 373 2.0% StepFaceConv 364 2.0% 88.7% 364 2.0% FindCandiRects 330 1.8% 90.5% 331 1.8% StepFaceConv1 217 1.2% 91.6% 217 1.2% PupilModel_Filter 179 1.0% 92.6% 179 1.0% ImageBinary 148 0.8% 93.4% 148 0.8% CheckEyePairsByMouth 148 0.8% 94.2% 148 0.8% GetHalfImage 89 0.5% 94.6% 89 0.5% StepFaceGeoMouth 执行 pprof ./test_capture test_capture.prof --web输出到浏览器的图形报告也能正常生成,但同样会报上面的错误。 在这里插入图片描述 出现上面错误的原因很直接,就是pprof找不到test_capture在mips平台的依赖库。
pprof有一个参数--lib_prefix就是用来解决这个问题的,执行google-pprof --help | grep lib_prefix就可以显示--lib_prefix的用途: google-pprof --help | grep lib_prefix --lib_prefix= Comma separated list of library path prefixes # 逗号分隔的动态库搜索路径列表 所以加上--lib_prefix指定这些缺失的动态库所在的位置就好了,对于君正的编译器这个位置在mips-gcc520-glibc222/mips-linux-gnu/libcpprof ./test_capture test_capture.prof --text --lib_prefix=/opt/toolchains/mips-gcc520-glibc222/mips-linux-gnu/libc 现在唯一没搞明白的就是在mips平台上生成的图形报告的排版方式与PC平台上不一样,所有的节点几乎都是横着的,不知道是什么原因。