oprofile的安装 使用 ubuntu14.04

来源:互联网 发布:c语言编写程序后无结果 编辑:程序博客网 时间:2024/05/10 20:36

其实可以用apt-get的方式安装,不过不建议。首先版本是0.9.9的,而现在最新的是1.1.0。

官方文档:

http://oprofile.sourceforge.net/doc/index.html


下载源码:

http://oprofile.sourceforge.net/download/

就是那三个步骤进入文件./configure, make, make install

./configure会提示缺少3个库文件。按照提示安装就好了。

我的一些参考是这样的

第一步 configure:

1.     ./configure 提示缺少popt  ---> libpopt-dev

2.     ./configure 提示缺少liberty à libiberty-dev

3.     ./configure 提示缺少 bfd à binutils-dev

现在不缺少但是还有一个问题,如果你想要分析JAVA程序则需要

./configure–with-java=/usr/lib/jvm/jdk1.8.0_91/  PS:等号后面的是我的安装目录!

第二步make

第三部 make install 默认路径

 

之前想在JAVA启动项内更改设置,不过根本没找到,还犯了个低级错误一直想用java这个命令添加。真是头昏的厉害!

现在按照别人的方法配置hadoop,其他的在照葫芦画瓢试试。

 

配置:

我的是hadoop.2.7.2

所以我更改的是$HADOOP_COMMON_HOME/etc/Hadoop/hadoop_env.sh

找到

export HADOOP_OPTS="$HADOOP_OPTS-Djava.net.preferIPv4Stack=true"

在下面添加:

export HADOOP_OPTS="$HADOOP_OPTS-agentpath:/usr/local/lib/oprofile/libjvmti_oprofile.so "

 

参考博客:

http://blog.csdn.net/xiongwen341/article/details/8977428

 

使用

原理:

有两种模式基于事件的采样(eventbased)和基于时间的采样(timebased)。

1.     基于事件的采样是oProfile只记录特定事件(比如L2 cache miss)的发生次数,当达到用户设定的定值时oProfile就记录一下(采一个样)。这种方式需要CPU内部有性能计数器(performace counter)。

2.     基于时间的采样是oProfile借助OS时钟中断的机制,每个时钟中断oProfile都会记录一次(采一次样),引入此种采样方式的目的在于提供对没有性能计数器的CPU的支持,其精度相对于基于事件的采样要低。因为要借助OS时钟中断的支持,对禁用中断的代码oProfile不能对其进行分析。这只是用于1.0之前的版本的opcontrol命令下使用,我现在用的是1.1.0版本。

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

 

常用语句:

operf :

利用 Linux performance events subsystem做性能分析

一般格式:

operf [ options ] [ --system-wide |--pid=<PID> | [ command [ args ] ] ]

例子(test2是一个简单地C程序)

sudo operf -e CPU_CLK_UNHALTED,INST_RETIRED./test2

数据结果一般存储于当前目录下的 oprofile _data. 可在使用时添加–d path 修改存储路径

可用opreport查看结果

 

ocount:

记录特定事件的发生次数

一般格式

ocount [ options ] [ --system-wide |--process-list <pids> | --thread-list <tids> | --cpu-list<cpus> [ command [ args ] ] ]

例子

ocount -e CPU_CLK_UNHALTED:6000 ./test2

可添加–f path 将结果输出到特定的文件。

 

opreport

从当前文件的oprofile输出结果。

 

0 0