blktrace编译使用

 部分在编译过程中需要的工具可在资源下载页下载

本文建立在安卓内核编译完成以后,且默认安卓根目录为《安卓内核编译流程》(在另一篇博文中)中的/root/Android_platform,默认当前用户为root用户

1.      搭建NDK环境

a)        下载ndk安装包并解压

下载地址

http://dl.google.com/android/ndk/android-ndk-r5-linux-x86.tar.bz2

拷贝压缩包至/usr/local/lib

cp android-ndk-r8b-linux-x86.tar.bz2 /usr/local/lib

cd /usr/local/lib

tar –jxvf android-ndk-r5-linux-x86.tar.bz2

chmod 777 android-ndk-r8b -R 

2.      编译blktrace等工具

a)        将blktrace拷贝至任意目录(例 /home/gao/)

cp ~/Android_platform/external/blktrace//home/gao/

b)        修改Android.mk文件

将文件第一行的BUILD_BLKTRACE := false 改为

BUILD_BLKTRACE:= true

c)        执行编译命令

cd /home/gao/blktrace/

ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk

编译完成的blktrace和blkparse保存在/home/gao/blktrace/libs/armeabi

3.      将blktrace等工具导入手机

a)        Root手机(可用windows刷机工具进行root)

b)        cd 进入Android源代码目录

cd ~/Android_platform

c)        配置环境信息

source./build/envsetup.sh

lunch full-eng

d)        启动adb,查看设备是否正确连接

adb devices

该步骤容易出现以下错误

unauthorized 将手机的usb调试打开并认证当前手机

e)        将blktrace等push入手机

adb push/home/gao/blktrace/libs/armeabi/blktrace /sdcard/

adb push/home/gao/blktrace/libs/armeabi/blktrace /sdcard/

f)    将system分区重新挂载为可读写 mount -o remount,rw /dev/block/platform/msm_sdcc.1/by-name/system /system

   然后将blktrace,blkparse和most拷贝至手机的/system/xbin,并修改文件权限为可执行

g)        在手机中安装MulticoreCPU Control Free

该软件可在google play中下载,为了方便,附件中已附上该软件的apk。

4.      打开手机的CPU

1)  打开Multicore CPU Control Free,切换入PROFILES页面

2)  点击Add new profile增加一个profile,将新增的profile中所有的core设置为”Core always enabled”,并save

3)  将执行的profile切换至新建出来的profile。

4)  切换至CPU MONITOR页面,等待所有的CPU都已经开启(显示为红色),便可以执行blktrace。

5.      执行blktrace

a)        通过adb进入手机的终端
adb shell

b)        获取root权限

su

c)        blktrace –d/dev/block/mmcblk0p28 –o /sdcard/blktrace-io –w 60

对/dev/block/mmcblk0p1设备采集60秒的trace(-w后面可以设置任意时间,此条命令为设置60秒),并输出到/sdcard/blktrace-io中

d)        blkparse –i -f "%D %2c %8s%5T.%9t %5p %2a %3d " /sdcard/blktrace-io > /sdcard/blktrace-result

注:

将收集到的/sdcard/blktrace-io进行解析,并将解析的结果输出到/sdcard/blktrace-result中,并以-f "%D %2c %8s %5T.%9t %5p %2a %3d"的格式解析

其中每个字母代表意思如下,数字代表占几个字符,和printf里的数字输出一样的

如8,0   16     3042   94.435079691   891  Q   W72411584 + 8 [flush-8:0]

由于默认格式为先输出–f "%D %2c %8s %5T.%9t %5p %2a %3d "

(1)8,0 按默认输出对应%D,主从设备号

(2)16 按默认输出对应%2c,表示cpu id

(3)3042 按默认输出对应%8s,表示序列号(序列号是blkparse自己产生的一个序号,实际IO里没有这个号)

(4)94.435079691 按默认对应%5T.%9t,表示”秒.纳秒”

(5)891对应%5p,表示,进程id

(6)Q对应%2a,表示Action,Action表格如下(如Q表示IO handled by request queue code),更详细的含义见附录action表

The following table shows the various actions which may beoutput.             

Act Description

A IO was remapped to a different device

B IO bounced

C IO completion

D IO issued to driver

F IO front merged with request on queue

G Get request

I IO inserted onto request queue

M IO back merged with request on queue

P Plug request

Q IO handled by request queue code

S Sleep request

T Unplug due to timeout

U Unplug request

X Split

(7)W 对应%3d,表示RWBS域(W表示写操作),各字母含义如下

         至少包含“RWD“( R 读,W写,D块被忽略)中的1个字符

         还可以附加“BS“(B barrier,S同步)

e)        exit

退出adb shell的连接,一般要输两次,一次exitroot,一次exit shell。

f)         adb pull/sdcard/blktrace-result /home/gao/

将经过blkparse解析的/sdcard/blktrace-result结果导出到自己的PC上的/home/gao/目录下。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值