上一篇博文
《性能测试工具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)的错误。但文本的报告还是正常生成了。
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/libc
。
pprof ./test_capture test_capture.prof --text
--lib_prefix=/opt/toolchains/mips-gcc520-glibc222/mips-linux-gnu/libc
现在唯一没搞明白的就是在mips平台上生成的图形报告的排版方式与PC平台上不一样,所有的节点几乎都是横着的,不知道是什么原因。