Chinaunix首页 | 论坛 | 博客
  • 博客访问: 403487
  • 博文数量: 77
  • 博客积分: 3149
  • 博客等级: 中校
  • 技术积分: 828
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-25 11:48
文章存档

2012年(5)

2011年(2)

2010年(11)

2009年(44)

2008年(15)

我的朋友

分类: LINUX

2009-06-19 17:26:41

一、Oprofile简介

       Oprofile 是用于 Linux 的若干种评测和性能监控工具中的一种。它可以工作在不同的体系结构上,包括 IA32, IA64 AMD Athlon 系列。它的开销小,被包含在(Linux2.6 版的内核中。

       Oprofile可以帮助用户识别诸如循环的展开、高速缓存的使用率低、低效的类型转换和冗余操作、错误预测转移等问题。它收集有关处理器事件的信息,其中包括TLB的故障、停机、存储器访问、位于 DCU(数据高速缓存单元)中的总线路数、一个 DCU 故障的周期数,以及不可高速缓存的和可高速缓存的指令的获取数量。Oprofile是一种细粒度的工具,可以为指令集或者为函数、系统调用或中断处理例程收集采样。Oprofile 通过取样来工作。使用收集到的评测数据,用户可以很容易地找出性能问题。

 

二、配置Oprofile

 

2.1监视内核

首先,配置 OProfile 是否应该监视内核。这是在启动 OProfile 前唯一所需的配置选项。其它选项都是可选的。 要监视内核,以根用户身份执行以下命令:

opcontrol --vmlinux=/boot/vmlinux-`uname -r`

要配置 OProfile 不监视内核,以根用户身份执行以下命令:

opcontrol --no-vmlinux

这个命令还会载入 oprofile 内核模块(如果还没有被载入),并创建 /dev/oprofile/ 目录(如果不存在)。 设置样品是否应在内核中收集只会改变所收集的数据,而不会改变收集数据的方法或贮存地点。

 

2.2选择监视的事件

       Oprofile有多个计数器。计数器的事件都可以通过命令行被配置,也可以使用图形化界面配置。如果计数器没有被设置给指定的事件,错误消息就会被显示。 要通过命令行来为每个可配置的计数器设置事件,使用 opcontrol

       opcontrol --ctrlN-event=

       N 替换成计数器号码(从0开始),把 替换成 op_help 中显示的确切事件名称。

 

三、收集数据

启动监测

opcontrol --start


运行用户程序

yourapplication


停止采样

opcontrol --stop


导出剖析数据

opcontrol –dump

 

四、分析结果

以运行k_select.c为例。果想要查看每个函数的运行时间,则使用如下的命令:

opcontrol  --no-vmlinux

opcontrol --start

gcc –g –o k k_select.c

./k

opreport -l ./k

 

[root@localhost openmp]# opreport -l ./k

CPU: P4 / Xeon, speed 2400.25 MHz (estimated)

Counted GLOBAL_POWER_EVENTS events (time during which processor is not stopped) ry) count 100000

samples  %        image name               symbol name

1873843  99.9170  k                        find

1361      0.0726  anon (tgid:3480 range:0x54c000-0x54d000) (no symbols)

180       0.0096  k                        .plt

15       8.0e-04  k                        main

 

       这样opreport工具就会打印出运行k时应用程序中具体每个函数占用cpu时间的百分比。

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