oprofile是调试系统瓶颈的利器,利用它,可以分析得到当前系统所有函数的各种信息,如CPU占用率等。
编译与安装
Pelco的SVN库中已经导入了oprofile,它位于:
http://svn.pelco.org/repos/omons-3rdparty/oprofile-0.9.4/
只要将它checkout出来,然后直接ombuild build, ombuild install即可使用。例如:
cd ~/local182/omons-3rdparty/
svn checkout http://svn.pelco.org/repos/omons-3rdparty/oprofile-0.94/
ombuild distclean
ombuild configure -propertyfile /mnt/wormhole/home/jeff/local182/imaging-products/kingfisher/8310/branches/kingfisher_dev/build.conf
ombuild build
ombuild install
通过以上命令,即可安装oprofile的可执行程序到我们的buildfs中。
尽管已经完成安装,但要想运行oprofile还需有些步骤要做,包括内核支持和库支持。
oprofile需要内核支持,我们的内核已经把oprofile设定为m模块加载了,我没有在buildfs中找到对应的模块,因此重编了内核,将此处设置为y然后编译。特别需要注意的,DM368的编译过程中会调用一个make checksetconfig,此命令会将scripts/kconfig/baseconfig中的选项强制加载到.config中,因此对于oprofile编译选项,我们需要修改的是baseconfig文件,而不是arch/arm/configs/pelco_kingfisher_defconfig文件。
运行oprofile还需要一些库文件的支持,实验及oprofile下的说明文档获知,以下库都需要被放到buildfs的对应目录中:
usr/lib/libbfd-2.17.50.20070611.so
usr/lib/libopcodes-2.17.50.20070611.so
usr/bin/objdump
usr/lib/debug
这些文件都可以在我们的编译器/monta-vista-5.0.0/pro/devkit/arm/v5t_le/target/usr/中被找到,完成上述文件的拷贝后,oprofile就可以正确的运行了。
使用简介
oprofile包括了一组命令,如opcontrol, opreport等等,不同的命令完成不同的功能。参考各种开源资料获取oprofile的各类功能。我使用oprofile的过程为:1. opcontrol --init //初始化oprofile 2. opcontrol --non-vmlinux或者--vmlinux=/boot/vmlinux //设置需要分析的数据类型,最常见的就是是否要包括内核 3. opcontrol --start //启动oprofile开始采集信息 4. 运行你自己的程序,根据程序的实际情况选择前台运行或者后台运行 5. opcontrol --reset //相当于数据采集器清零,重新缓存数据,此命令可能会和4调换顺序,完全要看你准备测试什么样的程序。 6. opcontrol --dump //dump出采集的数据 7. opcontrol --stop //关闭oprofile,完成整个数据采集过程 8. opreport -l //列出本次采集的所有函数占用CPU的情况。