初次使用oprofile

早就想试试oprofile,这几天简单的试了一下最基本的功能。

由于条件限制只能在虚拟机上实验。

 

1. 下载oprofile工具,加压后编译,安装

./configure --with-kernel-support

make

make install

 

2. 加载模块

insmod /lib/modules/kernel/xxx/arch/x86/oprofile/oprofile.ko timer=1

虚拟机的cpu上没有计数器,所以只能用时钟中断timer=1

 

3. 测试代码性能

[root@localhost app]# opcontrol --init
[root@localhost app]# opcontrol --vmlinux=/home/ping/works/linux/linux-2.6.37/vmlinux
[root@localhost app]# opcontrol --start
Using 2.6+ OProfile kernel interface.
Reading module info.
Using log file /var/lib/oprofile/samples/oprofiled.log
Daemon started.
Profiler running.
[root@localhost app]# ./01
[root@localhost app]# opcontrol --stop
Stopping profiling.
[root@localhost app]# opcontrol --shutdown
Killing daemon.

[root@localhost app]# opannotate --source 01


               :#include <stdio.h>
               :
               :int main(void)
               :{
               :        unsigned long i, j;
               :
   177 86.7647 :        for (i=0;i<0xffffff;i++)
    27 13.2353 :                j++;
               :
               :        sleep(2);
               :
               :        return 0;
               :}
[root@localhost app]# opreport
CPU: CPU with timer interrupt, speed 0 MHz (estimated)
Profiling through timer interrupt
          TIMER:0|
  samples|      %|
------------------
   166634 79.8798 no-vmlinux
    40534 19.4309 vmlinux
      307  0.1472 libc-2.12.90.so
      205  0.0983 libz.so.1.2.5
      204  0.0978 01
      174  0.0834 vim
      102  0.0489 libglib-2.0.so.0.2600.0
       88  0.0422 libpng12.so.0.44.0
       64  0.0307 bash
       61  0.0292 libgdk_pixbuf-2.0.so.0.2200.0
       44  0.0211 oprofiled
       29  0.0139 e1000
       23  0.0110 ld-2.12.90.so
       23  0.0110 libcrypto.so.1.0.0a
       19  0.0091 libpthread-2.12.90.so
       16  0.0077 sshd
        9  0.0043 libgobject-2.0.so.0.2600.0
        9  0.0043 Xorg
                  TIMER:0|
          samples|      %|
        ------------------
                8 88.8889 Xorg
                1 11.1111 [vdso] (tgid:2217 range:0x7fff427f8000-0x7fff427f9000)
        5  0.0024 libdbus-1.so.3.5.2
        5  0.0024 libgdk-x11-2.0.so.0.2200.0
        4  0.0019 cp
        4  0.0019 libpixman-1.so.0.18.4
        3  0.0014 dbus-daemon
        3  0.0014 libproc-3.2.8.so
        3  0.0014 libtinfo.so.5.7
        3  0.0014 libKerneloopsScanner.so
        3  0.0014 libgnome-desktop-2.so.17.1.4
        2 9.6e-04 gawk
        2 9.6e-04 ls
        2 9.6e-04 libX11.so.6.3.0
        2 9.6e-04 libgtk-x11-2.0.so.0.2200.0
        2 9.6e-04 irqbalance
        1 4.8e-04 dmesg
        1 4.8e-04 grep
        1 4.8e-04 libattr.so.1.1.0
        1 4.8e-04 libgcc_s-4.5.1-20100924.so.1
        1 4.8e-04 libgthread-2.0.so.0.2600.0
        1 4.8e-04 mptbase
        1 4.8e-04 oprofile
        1 4.8e-04 rsyslogd
        1 4.8e-04 gnome-session
        1 4.8e-04 libORBit-2.so.0.1.0
        1 4.8e-04 libXrender.so.1.3.0
        1 4.8e-04 libdbus-glib-1.so.2.1.0
        1 4.8e-04 libfreetype.so.6.6.0
        1 4.8e-04 libgnome-menu.so.2.4.9
        1 4.8e-04 libgvfscommon.so.0.0.0
        1 4.8e-04 libxcb-aux.so.0.0.0
        1 4.8e-04 hald-addon-storage
        1 4.8e-04 sendmail.sendmail

[root@localhost app]# opcontrol --deinit
Stopping profiling.
Killing daemon.
Unloading oprofile module

4. 总结

177 86.7647 : for (i=0;i<0xffffff;i++) 本条语句运行177个时钟中断
27 13.2353 : j++; 本条语句运行27个中断

基本用法算是掌握,但是用时钟中断计数不太准,所以在虚拟机上也就是试试用法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值