Linux测试工具详解

来源:互联网 发布:unity3d游戏开发pdf 编辑:程序博客网 时间:2024/05/17 21:40

Linux下的测试工具

1-Gprof

2-Oprofile

3-PAPI :A Portable Interface to Hardware Performance Counters


这里,我们目前只简单介绍这3种测试工具

1、Gprof

gprofGNU工具之一,它在编译的时候在每个函数的出入口加入了profiling的代码,运行时统计程序在用户态的 执行信息,可以得到每个函数的调用次数,执行时间,调用关系等信息,简单易懂。适合于查找用户级程序的性能瓶颈,对于很多时间都在内核态执行的程序,gprof不适合

http://sourceware.org/binutils/docs-2.17/gprof/index.html

步骤:

1.gcc编译程序时,加上-pg选项,产生带profiling代码的可执行文件

2.执行编译后的可执行文件,产生可供gprof分析的gmon.out文件

3.gprof gmon.out可执行文件,进行关联分析






---------------------------------------------------------------------------------------------
2、oprofile
是一个开源的profiling工具,它使用硬件调试寄存器来统计信息,进行profiling的开销比较小,而且可以对内核进行profiling。它统计的信息非常的多,可以得到cache的缺失率,memory的访存信息,分支预测错误率等等,这些信息gprof是得不到的,但是对于函数调用次数,它是不能够得到的
http://oprofile.sourceforge.net/news/

download->./config->make all && make modules_install && make install

将其中的# CONFIG_OPROFILE is not set改为CONFIG_OPROFILE=m(或者y
步骤:
  1. opcontrol --init   #加载模块
  2. opcontrol --vmlinux=/usr/src/linux-3.11.0/vmlinux  #是否对kernel进行profiling
  3. opcontrol --reset  #清楚当前会话中的数据
  4. opcontrol --start  #开始profiling
  5. ./xxx   #运行应用程序,oprofile会对它进行profiling
  6. opcontrol --dump  #把收集到的数据写入文件
  7. opcontrol --stop  #停止profiling
  8. opcontrol --shutdown  #关闭守护进程oprofiled
  9. opcontrol --deinit  #卸载模块

http://blog.chinaunix.net/uid-13746440-id-3152484.html

---------------------------------------------------------------------------------------------
3、PAPI: A Portable Interface toHardware Performance Counters
PAPI主要测试硬件方面的性能,诸如cache命中率等,就像显微镜一样,可以让我们对应用程序的底层有一个更细致的了解
PAPI的官方网址:http://icl.cs.utk.edu/papi/index.html
该网站上有PAPI的下载地址和详尽的使用帮助文档。其安装过程可以根据文档上一步步来即可。

安装完之后,使用papi_avail命令可以获得详细的系统硬件信息以及PAPI所支持的硬件测试事件,PAPI的标准编程接口或流程如下:


其中黄色框框为PAPI提供的标准接口。
测试结果如下:



---------------------------------------------------------------------------------------------
总结:

gprof简单,适合于查找用户级程序的瓶颈

oprofile稍显复杂,但是得到的信息更多,更适合调试系统软件

PAPI简单易用,功能强大

gprof和PAPI都有使用过,oprofile没有使用经验

后期如果有什么好的测试工具,会继续连载,并欢迎讨论交流



---------------------------------------------------------------------------------------------
0 0