OProfile作为一个Linux的工具,可以分析kernel和应用的性能。因此如何将OProfile应用于Android对于发现并解决Android的性能问题具有很重要的意义。本文以下将介绍如何在Android上应用OProfile。

一、设备准备

一个能运行Android系统的设备:作为运行Android的设备。

一个装有Linux系统(最好是Ubuntu)的PC机:与Android系统相连,作为Host。

二、软件准备

PC机准备:

1、安装编译OProfile所需的库

sudo apt-get install binutils-dev

sudo apt-get install libpopt-dev3

2、解压OProfile Helper。假设PC上Android code的目录为 android。

cd android/

tar xvfz oprofile.tar.gz

cd oprofile

3、下载OProfile

wget http://prdownloads.sourceforge.net/oprofile/oprofile-0.9.6.tar.gz

4、解压缩OProfile,并编译

tar xvfz oprofile-0.9.6.tar.gz

cd oprofile-0.9.6

./configure

make

5、建立OProfile所需的目录

export OPR_DIR=android/oprofile/oprofile-0.9.6/host

mkdir -p $OPR_DIR/bin

mkdir -p $OPR_DIR/abi

mkdir -p $OPR_DIR/arm

cp android/oprofile/arm_abi $OPR_DIR/abi

cp $OPR_DIR/../libabi/opimport $OPR_DIR/bin

cp $OPR_DIR/../pp/opreport $OPR_DIR/bin

cp -r $OPR_DIR/../events/arm/* $OPR_DIR/arm

6、将OProfile加入Android编译系统

copy -r $OPR_DIR/* /demodroid/prebuilt/linux-x86/oprofile

7、将编译好的Androd系统放到可以运行Android的设备上。

三、用OProfile测试

1、启动adb shell

adb remount

adb shell

2、配置OProfile

opcontrol --setup

oprofiled --session-dir=/data/oprofile --no-vmlinux -e CPU_CYCLES

opcontrol和oprofiled在/system/xbin目录下

如果正确执行,将输出:

Using 2.6+ OProfile kernel interface.

Reading module info.

Using log file /data/oprofile/samples/oprofiled.log
如果没有正确执行,则输出:

Cannot create directory /dev/oprofile: File exists

do_setup failed#

这说明,在设备上运行的Android系统不支持OProfile,这时需要重新flash一个支持OProfile的Android系统。

3、运行OProfile进行测试

opcontrol --start

Run your application

opcontrol --stop

4、OProfile的数据会被保存在/data/oprofile目录下面。可以通过下面的命令来或者其他的信息

opcontrol --status

opcontrol --help

oprofiled --help

5、由于OProfile会累积上次的数据,所以每次运行OProfile时,应该先清除累积的数据。

opcontrol --shutdown

opcontrol --reset

6、在主机解析数据

export OPR_DIR=android/oprofile/oprofile-0.9.6/host

cd android/oprofile

python -E opimport_pull -r /tmp/oprofile

注:为了能让Android系统支持OProfile,还需要对kernel做一些配置。在内核编译时,对OProfile相关配置如下:

CONFIG_PROFILING=y
CONFIG_OPROFILE=y
CONFIG_HAVE_OPROFILE=y

修改内核源码 ./arch/arm/oprofile/common.c
line 171:
case ARM_PERF_PMU_ID_CA9:
return "arm/armv7-ca9";//此位置设置相应的硬件类型。

编译后,内核将支持OPRFILE

更多相关文章

  1. Android系统资源
  2. Android 内核分析
  3. Android 的系统属性(SystemProperties)分析
  4. Intel发布Android模拟器的x86系统映像
  5. android获取设备唯一标识完美解决方案
  6. Android设备扫描机制详解

随机推荐

  1. 用 Jest 进行 JavaScript 测试[每日前端
  2. CSS3实现摩天轮动画特效
  3. CSS3和SVG实现的圆环菜单动画
  4. 膜拜!感谢大佬们赏饭吃,向你们致敬!
  5. 使用 React 要懂的 JavaScript 特性[每日
  6. Android使用Canvas绘图
  7. 这是个超棒的jQuery颜色选择器
  8. HTML5 电子书翻页 3D 动画特效
  9. HTML5 WebGL 3D星云动画特效
  10. normandie为什么不碰videoview