2012年6月26日 星期二

Oprofile in Android ICS

最近在學用oprofile來調適Android,以下是在Android ICS開啟oprofile的步驟
1.修改kernel 的.config,加入以下設定
CONFIG_OPROFILE=y
CONFIG_PROFILING=y
CONFIG_HAVE_OPROFILE=y
CONFIG_HW_PERF_EVENTS=y
CONFIG_PERF_EVENTS=y

2.rebuild kernel and Android

3.cp -r {Android root}/external/oprofile/events/arm/ /usr/local/share/oprofile/arm



4.進入adb shell,輸入
opcontrol --vmlinux=/data/vmlinux --kernel-range=0xcxxxxxxx,0xcxxxxxxx --quick
0xcxxxxxxxxx可藉由下面取得
(adb shell cat /proc/kallsyms) | grep " _text" 
(adb shell cat /proc/kallsyms) | grep " _etext" 
以上步驟完成會顯示
Using 2.6+ OProfile kernel interface.

Reading module info.

Using log file /data/oprofile/samples/oprofiled.log

5.開始使用opcontrol各功能,
開始profiling --start
觀察狀態 --status
停止profiling --stop
其他功能可用 --help觀看

6.取得結果
cd {Android root}/external/oprofile
./opimport_pull <result path>

7.輸出報告
cd {Android root}/out/host/linux-x86/bin/
./opreport --session-dir <result-path> -m all

troubleshooting:
1.Failed to open profile device: Device or resource busy錯誤  --重開機就可解決
2.opcontrol執行後當機  --重開機就可解決
3.mount: No such device --.config修改未成功 

Reference:
Enable OProfile on Android
OProfile在Andorid上使用
[Android] oprofile 使用步驟
Android 使用Oprofile分析結果系統瓶頸
Android oprofile詳細分析應用程序、動態庫、內核函數調用時間
How to enable oprofile on ICS 4.0.3

沒有留言:

張貼留言