Chinaunix首页 | 论坛 | 博客
  • 博客访问: 115938
  • 博文数量: 11
  • 博客积分: 565
  • 博客等级: 中士
  • 技术积分: 267
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-02 17:17
文章分类
文章存档

2014年(1)

2012年(2)

2011年(4)

2010年(4)

我的朋友

分类: LINUX

2012-10-24 13:32:56

1.      oprofile组成

内核模块(oprofile.ko):负责访问性能技术器或者基于时间采样的函数(使用register_timer_hook注册之,使时钟中断处理程序最后执行profile_tick时可以访问之),并采样置于内核的缓冲区内。

用户空间的守护进程(oprofiled):在后台运行,负责从内核空间收集数据,写入文件。

 

2.       oprofile工具描述

op_help:列出可用的事件,并带有简短的描述

opcontrol:控制oprofile的数据收集

oprofpp: 检索有用的评测数据

op_time: 为系统上的所有映像列出相关的评测值

op_to_source: 产生带注解的源文件、汇编文件或源文件和汇编文件的混合

op_merge: 合并属于同一个应用程序的采样文件

op_import: 将采样数据库文件从外部格式(abi)转换为本地格式

 

3.      安装oprofile

内核支持

步骤一:增加内核选项支持。

.config 文件中设置CONFIG_PROFILING=yCONFIG_OPROFILE=y 另外,还要在 Processor type and features 菜单中启用 Local APIC IO-APIC

步骤二:重新编译内核。

编译完成后,在linux-2.6.34.10/arch/powerpc/oprofile/目录下会生成oprofile.ko。将oprofile.ko拷贝到目标ppc板上加载。

 

l  用户空间支持

方法1:在开源网站上下载oprofile的安装tar包。为了配置和安装oprofile工具,键入如下语句:


点击(此处)折叠或打开

  1. #./configure --with-linux=/usr/src/linux --with-kernel-support --host=powerpc-linux-gnu

  2. #make

方法2:很多交叉编译工具链都自带的有oprofile工具,直接将其拷贝到目标板即可。

 

内核和用户空间支持完成后,加载新编译的uImage,系统启动之后将oprofile.ko opcontrol  ophelp  opreport  oprofiled拷贝到目标板上对应目录下即可开始使用oprofile了。

 

4.      Oprofile使用

ophelp -r #查看CPU类型

ophelp #列出支持的event

opcontrol --list-events #ophelp同,列出支持的event

 

步骤一:opcontrol监视内核,并且载入oprofile内核模块,创建/dev/oprofile目录


点击(此处)折叠或打开

  1. opcontrol --no-vmlinux #不监视内核

  2. opcontrol --vmlinux=/u-disk/vmlinux #让oprofile监视内核

  3. opcontrol --setup --vmlinux=/u-disk/vmlinux --event=L2MMU_MISSES:100000::1:1 #监视特定事件

步骤二:收集数据


点击(此处)折叠或打开

  1. opcontrol --reset
  2. opcontrol --start
  3. opcontrol --status
  4. opcontrol --shutdown
  5. opreport --symbols

 

5.      问题解决

问题一:运行./opcontrol init提示can't open '/dev/oprofile/cpu_type': No such file or directory

分析:我们的开发板的cpuppce500mcoprofile的默认配置文件里没有这个type

解决:我们的交叉编译工具LTIBoprofile专门为e500mc的类型打了patch,只需将/opt/ltib/ltib-e500mc-20110128/rootfs/usr/share/oprofile/ppc/e500mc下的配置文件拷贝到目标板对应目录即可。

 

问题二:oprofile抓不到采样数据,opreport error: No sample file found: try running opcontrol --dump

分析

    #dmesg | grep oprofile

    oprofile: using NMI timer interrupt.

    如果你的CPU不被oprofile认识,或者认识有问题,oprofile就会进入timer interrupt模式,表现就是:


点击(此处)折叠或打开

  1. #ophelp
  2. Using timer interrupt.

解决:在oprofile模块加载的时候强制使用timer=1.   



点击(此处)折叠或打开

  1. #opcontrol –deinit

  2. Daemon not running

  3. Unloading oprofile module

  4. #modprobe oprofile timer=1
  5. #demsg | oprofile | tail –n 1

  6. oprofile: using timer interrupt.

    如果看到上面的字说明问题已经解决了。

 

6.      注意事项

使用oprofile一定要先保证系统中有objdump

oprofile不能在VMware环境中使用性能计数器。

oprefile包含在linux 2.5和更高版本的内核中。

oprofile貌似不能再x86_64环境下运行。即使linux内核满足要求。

oprofile各个版本间的工具名有差异,运行参数也有差异。

阅读(4028) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~