安装oprofile
来源:互联网 发布:3d蓝光网络影视播放器 编辑:程序博客网 时间:2024/06/02 03:15
折腾一下午,起初是系统版本低,安装更新了一下午,然后换了一个software 源,选择的是server china ,进行sudo apt-get install oprofile,才安装成功,
起初一直用的网易的源。
可以打入“whereis php”命令来显示程序的位置。或者打入“locate php”命令来显示包含php的文件名或目录名及路径。
1. oprofile简介oprofile 是 Linux 平台上的一个功能强大的性能分析工具, 支持两种采样(sampling)方式:基于事件的采样(event based)和基于时间的采样(time based)。基于事件的采样是oprofile只记录特定事件(比如L2 cache miss)的发生次数,当达到用户设定的 定值时oprofile 就记录一下(采一个样)。这种方式需要CPU 内部有性能计数器(performace counter)。基于时间的采样是oprofile 借助OS 时钟中断的机制,每个时钟中断 oprofile 都会记录一次(采一次样)。引入的目的在于,提供对没有性能计数器 CPU 的支持。其精度相对于基于事件的采样要低。因为要借助 OS 时钟中断的支持,对禁用中断的代码oprofile不能对其进行分析。
使用方法
1. 准备内核:
Oprofile需要内核的支持,2.6的linux内核已经支持了这个功能,可以编译成模块或者直接编译进内核。一般发行版本是没有将此项功能编译进内核的,因此需要手动编译一个内核版本,将cat /boot/config-`uname -r` | grep OPROFILE
应该有这样两行:
CONFIG_HAVE_OPROFILE=y
CONFIG_OPROFILE=m
如果没有则加上,CONFIG_OPROFILE=m表示编译成模块,CONFIG_OPROFILE=y表示直接编译进内核。我一般会选择直接编译进内核。使用重新编译的内核启动机器,如果oprofile编成了模块,需要加载oprofile模块。
2. 安装oprofile工具:
下载oprofile的daemon程序和工具集,直接上http://oprofile.sourceforge.net/download/ 下载最新的oprofile源码包到目标机器上,编译安装。注意:安装时需要root权限。
3. 设置oprofile参数。
Oprofile是通过设置cpu事件来进行性能测试的,它有一个daemon的进程来启动和收集相关的性能数据。因此启动oprofile之前需要先设置一些参数,比如收集的事件名字,抽样频率。
Oprofile的设置是通过opcontrol命令来进行的
首先,配置 OProfile 是否应该监视内核。这是在启动 OProfile 前唯一所需的配置选项。其它选项都是可选的。
要监视内核,以root用户身份执行以下命令:
opcontrol --vmlinux=/boot/vmlinux-`uname -r`
要配置 OProfile 不监视内核,以root用户身份执行以下命令:
opcontrol --no-vmlinux
一般来说,我们做应用程序的性能测试不需要关注内核的性能。另外需要关注cpu的周期事件,因此需要进行如下设置
opcontrol --setup --event=eventname:count:unitmask:kernel:user
这里解释一下event参数的各个项的意思:
项
说明
eventname
要关注的事件名称,常用的事件名称及功能如下:
CPU_CLK_UNHALTED: CPU的执行时间,性能测试时最常用的事件
LLC_MISSES: L2 cache失效情况。
DTLB_MISSES: 数据TLB失效情况。
一般做性能测试时只会用到CPU_CLK_UNHALTED。
count
事件抽样频率,oprofile并不是对每次事件都进行记录,而是进行抽样,每多少次事件进行一次数据收集,如果抽样太低,会导致事件数据的收集占用太多的cpu.因此每个事件,oprofile给了一个最小值,每类事件的最小值可以通过opcontrol --list-events查到。
unitmask
事件的掩码,通过opcontrol --list-events可查看相应事件的掩码意义,这里不细说了。
kernel
是否收集内核的事件。0表示不收集,1表示收集。
user
是否收集用户的事件。0表示不收集,1表示收集。
对性能测试时,一般使用的设置参数如下:
opcontrol --setup --event=CPU_CLK_UNHALTED:10000:0:0:1
4. 编译测试程序,需要打开-g参数。
g++ -g -o perf_test perf_test.cpp
5. 进行测试。
查看当前设置的状态,确保设置正确
opcontrol --status
清除上一次收集的数据
opcontrol --reset
启动数据收集。
opcontrol --start
运行我们要测试的程序
运行完成后,停止oprofile数据的收集。
opcontrol --stop
结果分析
Oprofile的数据有两种查看方式:
1. 使用opreport查看。
Samples
采样到的次数
%
占的百分比
Symbol name
函数名
2. 也可以使用工具,生成图片查看。
先用opgprof产生Gprof格式的数据。
opgprof ./perf_test
在当前目录下会生成gmou.out文件。
再用gprof生成txt数据
gprof ./perf_test gmon.out >result.txt
把result.txt从服务器上下载下来,在windows下使用前面介绍的python脚本生成 图片
python gprof2dot.py result.txt | dot -Tpng -o report_gprof.png
- 安装oprofile
- 安装oprofile
- ubuntu 上安装 oprofile
- OProfile安装和使用
- oprofile 安装指南
- oprofile安装和使用
- 安装使用oprofile
- oProfile的安装与使用
- oProfile的安装与使用
- oProfile的安装与使用
- oprofile库安装与使用
- Oprofile的安装与使用
- oProfile的安装与使用
- oProfile的安装与使用
- oprofile
- oprofile
- Oprofile
- oprofile
- Spring声明式事务配置管理方法
- Struts2+Spring+Hibernate搭建全解!
- Ibatis基本内容
- hdu 1875 畅通工程再续
- C语言设计模式:备忘录
- 安装oprofile
- 起来!不愿做奴隶的“张江男”
- 我的2012
- 如何使类的成员函数作为回调函数
- Nginx + Tomcat 服务器集群架构及调优经验小结
- 编译内核模块常见问题
- 我开发的第一个安卓应用《枪趣》
- UVA 11729 - Commando War
- 虚拟化VMware简介4——thin provisioning 简介