Chinaunix首页 | 论坛 | 博客
  • 博客访问: 661560
  • 博文数量: 139
  • 博客积分: 2655
  • 博客等级: 少校
  • 技术积分: 1723
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-02 16:03
文章分类

全部博文(139)

文章存档

2013年(2)

2011年(17)

2010年(14)

2009年(86)

2008年(20)

分类:

2010-12-31 23:44:28


1.Gprof
Gprof实现原理:
通过在编译和链接你的程序的时候(使用 -pg 编译和链接选项),gcc 在你应用程序的每个函数中都加入了一个名为mcount ( or “_mcount” , or “__mcount” , 依赖于编译器或操作系统)的函数,也就是说你的应用程序里的每一个函数都会调用mcount, 而mcount 会在内存中保存一张函数调用图,并通过函数调用堆栈的形式查找子函数和父函数的地址。这张调用图也保存了所有与函数相关的调用时间、调用次数等等的所有信息。
(1)gcc -pg -o myexe myexe.c
(2)./myexe ->生成gmon.out
(3)gprof myexe|less) kprof

http://hi.baidu.com/daisycheung/blog/item/72c0f9276465690f908f9df2.html

2.Oprofile
Oprofile原理:
oprofile和Intel的VTune类似,都是利用CPU提供的性能计数功能对系统进行profiling. CPU提供一些性能计数器,经过配置可以对各种事件进行计数,当超过一定的threshold,会发出NMI中断,中断处理程序可以记录下当前的PC,current task等信息。用户可以对其dump进行分析。
采样往往会对系统性能带来一些影响(想想测不准原理),oprofile带来的影响为1%-8%,还好。特别是考虑到它可能是唯一能提供你所需要的信息的工具。

OProfile使用了(1)一个内核模块和(2)一个用户空间守护进程,前者可以访问性能计数寄存器,后者在后台运行,负责从这些寄存器中收集数据。在启动守护进程之前,OProfile 将配置事件类型以及每种事件的样本计数(sample count)。如果没有配置任何事件,那么 OProfile 将使用 Linux on POWER 上的默认事件,即 CYCLES,该事件将对处理器循环进行计数。事件的样本计数将决定事件每发生多少次计数器才增加一次。OProfile 被设计成可以在低开销下运行,从而使后台运行的守护进程不会扰乱系统性能。
与OProfile内核支持一起提供的还有(3)一些与内核交互的用户空间工具以及分析收集到的数据的工具。如前所述,OProfile守护进程收集样本数据。控制该守护进程的工具称作 opcontrol。需要注意的是oprofile不支持虚拟机,即使运行正确也opreport得不到任何的结果。


对于禁用中断的代码,OProfile 不能对其进行分析。

profile--->oprofile--->VTune(intel)
oprofile:opcontrol opreport opannotate ; opgprof oparchive
主要用于系统调优,是找hotspot的很不错的工具。
top只能采样到进程一级,
oprofile可以深入到指令一级,这是它最大的优势。



<1>.初始化: opcontrol --init  加载oprofile模块

                (1)opcontrol --reset
                (2)opcontrol --no-vmlinux
                (3)opcontrol -i ./your_binary_program
<2>.配置:   (4)opcontrol --setup (-e)--event=name:count:unitmask:kernel:user
<3>.启动:   (5)opcontrol --start
<4>.运行程序: (6)./your_binary_program
<5>.取出数据: (7)opcontrol --dump
           opcontrol --stop
           (8)opcontrol --shutdown
                (9)opcontrol --deinit 卸载oprofile模块
[Note]:标序号的是常用的!
<6>.分析结果: opreport  -l ./your_binary_program
                opreport  -d ./your_binary_program
             or
                opannotate   --source  --output-dir=/path/to/annotated-source ./your_binary_program  (built it with -g,produce some annotated source)
             or 
                opreport (look at the rankings of the various system components as a whole)


References:
http://hi.baidu.com/daisycheung/blog/item/f295681fa1bff56ff724e4f3.html
oprofile的manual
oprofile的使用

工具分析linux内核及模块使用方法.html
http://blog.chinaunix.net/u/30686/showart_264903.html
http://www.ibm.com/developerworks/linux/library/l-oprof.html




3.Valgrind
   debugging and profiling programs用的不多,可参见
http://hi.baidu.com/timegoneby/blog/item/ffaad71790bf060dc93d6dd6.html

4.strace pstrace ltrace
  这个是看系统调用的,有时可以定位程序出错的原因,经常用

5.在Kernel方面stap(systemtap)
阅读(4971) | 评论(0) | 转发(0) |
0

上一篇:Fedora 14 Laughlin

下一篇:寄往天堂的信

给主人留下些什么吧!~~