pycod
很多人在说我们讲故事吹NB 但是我们吹过的NB ,正在一一变为现实 !!!!!

OProfile 性能分析工具

 

OProfile 性能分析工具

 

 

官方网站:http://oprofile.sourceforge.net/news/

oprofile.ko模块
本文主要介绍Oprofile工具,适用系统的CPU性能分析,最主要它能深入内核函数,这是很多用户态工具达不到的地方.

Oprofile是一个内核态工具,通过oprofile.ko模块内核模块来获取数据
需要在加载oprofile.ko模块的时候,传递”timer=1″参数. modprobe oprofile timer=1


oProfile
http://baike.baidu.com/link?url=KQPjwFX0UUabWnM70gEzKi_ypahv0KmKglNSh4WXGhnMI_ldd3OiWr1kTn6w4ecSPj6WyRxzzgj2k9ptwmBbNa

OProfile是Linux内核支持的一种性能分析机制。

外文名 OProfile
作 用: 用于 Linux 评测和性能监控工具
定 义: Linux内核支持一种性能分析机制
分 类: 内核模块,守护进程
采样方式: 基于事件的采样和基于时间的采样
OProfile工具: op_help,op_time,op_merge


简介
它在时钟中断处理入口处建立监测点,记录被中断的上下文现场,由配套的用户态的工具oprof_start负责在用户态收集数据,opreport则分析数据并给出分析报告。[1] 
Oprofile 是用于 Linux 的若干种评测和性能监控工具中的一种,它可以工作在不同的体系结构上,包括 IA32, IA64 和 AMD Athlon 系列。Oprofile 包含在 Linux 2.5 和更高版本的内核中,也包含在大多数较新的 Linux 版本中,包括 Red Hat 9 。

 

特点
oprofile 是 Linux 平台上的一个功能强大的性能分析工具, 支持两种采样(sampling)方式:基于事件的采样(event based)和基于时间的采样(time based)。
基于事件的采样是oprofile只记录特定事件(比如L2 cache miss)的发生次数,当达到用户设定的 定值时oprofile 就记录一下(采一个样)。这种方式需要CPU 内部有性能计数器(performace counter)。
基于时间的采样是oprofile 借助OS 时钟中断的机制,每个时钟中断 oprofile 都会记录一次(采一次样)。引入的目的在于,提供对没有性能计数器 CPU 的支持。其精度相对于基于事件的采样要低。因为要借助 OS 时钟中断的支持,对禁用中断的代码oprofile不能对其进行分析。
oprofile 在Linux 上分两部分,一个是内核模块(oprofile.ko),一个为用户空间的守护进程(oprofiled)。前者负责访问性能计数器或者注册基于时间采样的函数(使用register_timer_hook注册之,使时钟中断处理程序最后执行profile_tick 时可以访问之),并采样置于内核的缓冲区内。后者在后台运行,负责从内核空间收集数据,写入文件。

 


Oprofile 工具概述:
op_help: 列出可用的事件,并带有简短的描述
opcontrol: 控制 Oprofile 的数据收集
oprofpp: 检索有用的评测数据
  
op_time: 为系统上的所有映像列出相关的评测值
  
op_to_source: 产生带注解的源文件、汇编文件或源文件和汇编文件的混合
op_merge: 合并属于同一个应用程序的采样文件
  
op_import: 将采样数据库文件从外部格式(abi)转换为本地格式


参考资料
Linux内核性能分析 OProfile .开源社区网[引用日期2012-09-8]

 

 

OProfile(O Profile) for Linux on POWER 使用了一个内核模块OProfile和一个用户空间守护进程,前者可以访问性能计数寄存器,后者在后台运行,负责从这些寄存器中收集数据。在启动守护进程之前,OProfile 将配置事件类型以及每种事件的样本计数(sample count)。如果没有配置任何事件,那么 OProfile 将使用 Linux on POWER 上的默认事件,即 CYCLES,该事件将对处理器循环进行计数。事件的样本计数将决定事件每发生多少次计数器才增加一次。OProfile 被设计成可以在低开销下运行,从而使后台运行的守护进程不会扰乱系统性能。

 

OProfile 具有对 POWER4?、POWER5? 和 PowerPC? 970 处理器的内核支持。PowerPC 970 和 POWER4 处理器有 8 个计数寄存器,而 POWER5 处理器有 6 个计数寄存器。在不具备 OProfile 内核支持的架构上使用的则是计时器(timer)模式。在这种模式下,OProfile 使用了一个计数器中断,对于禁用中断的代码,OProfile 不能对其进行分析。


与 OProfile 内核支持一起提供的还有一些与内核交互的用户空间工具,以及分析收集到的数据的工具。如前所述,OProfile 守护进程收集样本数据。控制该守护进程的工具称作 opcontrol。表 1 列出了用于 opcontrol 的一些常见的命令行选项。本文的后面还将描述 opreport 和 opannotate 这两个工具,它们都是用于分析收集到的数据的工具。在 OProfile 手册的第 2.2 节中,可以找到对所有 OProfile 工具的概述。(请参阅参考资料。)


OProfile 例子
您可以使用 OProfile 来分析处理器周期、TLB 失误、内存引用、分支预测失误、缓存失误、中断处理程序,等等。同样,您可以使用 opcontrol 的 --list-events 选项来提供完整的特定处理器上可监视事件列表。


分析是开发过程中最困难的任务之一。为了使代码获得最佳性能,好的工具是必不可少的。OProfile 就是这样一种工具,目前它提供了针对 Linux on POWER 的分析功能。对于其他平台上的可以快速移植到 Linux on POWER 的 Linux,还有其他许多性能和调试工具。除了处理器事件的类型有所差别外,在基于 POWER 处理器的 Linux 平台上运行 OProfile 与在其他架构上运行 OProfile 是类似的。所以,如果在其他平台上使用过 OProfile,那么您应该在很短时间内就可以知道如何在 Linux on POWER 上运行 OProfile。

posted on 2019-11-18 18:46  pycod  阅读(188)  评论(0编辑  收藏  举报