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之NDK开发详解
  2. Android(安卓)NDK开发篇(一):新版NDK环境搭建(免Cygwin,超级快)
  3. Android2.2添加busybox 支持——基于Android(安卓)Bionic库
  4. android makefile(android.mk)分析(序)
  5. 使用GDB调试Android(安卓)NDK native(C/C++)程序
  6. android系统体系结构
  7. android获取设备唯一标识完美解决方案
  8. FFmpeg在Android上的移植优化步骤 .
  9. Android设备扫描机制详解

随机推荐

  1. android——利用SharedPreference做引导
  2. Android(安卓)Tips1
  3. Android的animation由四种类型组成
  4. Android SDK Manager无法下载其他版本SDK
  5. Android 安全 —— allowbackup 引起的漏
  6. Android(安卓)Studio 学习心得之--NDK相
  7. Android 发邮件
  8. android之listview的item不可点击
  9. android 5.0视频教程
  10. Android Studio Plugins 之 JRebel for A