Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3514736
  • 博文数量: 1805
  • 博客积分: 135
  • 博客等级: 入伍新兵
  • 技术积分: 3345
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-19 20:01
文章分类

全部博文(1805)

文章存档

2017年(19)

2016年(80)

2015年(341)

2014年(438)

2013年(349)

2012年(332)

2011年(248)

分类: LINUX

2013-03-15 20:32:33

1、Oprofile简介

oprofile Linux系统下一个低开销的系统全局的性能监视工具,利用处理器上所包含的专用的性能监视硬件(若没有性能监视硬件则使用一个基于计时器的代用品)来收集与性能相关的数据样品。它获得关于内核以及系统上的可执行文件的信息,例如内存是何时被引用的;L2缓存请求的数量;收到的硬件中断数量等。

Oprofile Linux上分两部分,一个是内核模块(oprofile.ko),一个为用户空间的守护进程(oprofiled)。前者负责访问性能计数器或者注册基于时间采样的函数(使用register_timer_hook注册之,使时钟中断处理程序最后执行profile_tick 时可以访问之),并采样置于内核的缓冲区内。后者在后台运行,负责从内核空间收集数据,写入文件。

其支持两种采样(sampling)方式:基于事件的采样(event based)和基于时间的采样(time   based)。基于事件的采样是oprofile只记录特定事件(比如L2 cache miss)的发生次数,当达到用户设定的定值时oprofile 就记录一下(采一个样)。这种方式需要CPU内部有性能计数器(performace counter)。基于时间的采样是oprofile借助OS时钟中断的机制,每个时钟中断oprofile都会记录一次(采一次样)。引入的目的在于,提供对没有性能计数器CPU的支持。其精度相对于基于事件的采样要低。

Oprofile的结构可以分为4个部分,kernel driver负责系能计数器数据的采集,每当count计数器最高位为1时发生中断,记录下发生中断时的EPC值,同时还要记录下进程的切换信息;OProfile daemon与内核交互,把内核采集的数据写入采样文件;OProfile control tools设置采样事件,周期等,控制采样的开始与结束;Post-profiling tools根据采样数据进行分析。各部分关系如下图所示:

Oprofile的特点如下:

l         无需重新编译源代码,如果不进行源代码及分析,连调试信息(-g option to gcc)也不是必须的。

l         只在内核中插入一个模块。

l         可以分析运行于系统之上的所有代码(禁用中断的代码除外)

l         系统的额外开销小,Oprofile会增加1%-8%的系统开销(取决于采样频率)

l         兼容所有2.22.42.6内核,可以运行在SMP系统之上

l         支持主流CPU架构,包括X86armAVR32mipspowerpc


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