Android systrace性能工具使用说明

原文网址:http://gityuan.com/2016/01/17/systrace/

一、概述

保证系统流畅度,也就是保证系统能连续不间断地提供每秒60帧的运行状态。当出现掉帧时(也可称为Jank),需要知道当前整个系统所处的状态,systrace便是最佳的选择,它能手机检测android系统各个组件随着时间的运行状态,并能提示该如何有效地修复问题,接下来说说systrace如何使用以及如何解读。

二、Systrace

2.1 自定义systrace

java framework层

import android.os.Trace;
Trace.traceBegin(long traceTag, String methodName)
Trace.traceEnd(long traceTag)

在代码中必须成对出现,一般将traceEnd放入到finally语句块,另外,必须在同一个线程。

app层

import android.os.Trace;
Trace.beginSection(String sectionName)
Trace.EndSection()

这里默认的traceTag为TRACE_TAG_APP,systrace命令通过指定app参数即

native framework层

#include<utils/Trace.h>
ATRACE_CALL();
ATRACE_NAME();

2.2 命令用法

命令行

python systrace.py [options] [category1] [category2] ... [categoryN]
2.2.1 options

其中options可取值:(备注:表格中的加粗斜体需要用实际填写替换)

options解释
-o file输出的目标文件
-t N, –time=N执行时间,默认5s
-b N, –buf-size=Nbuffer大小(单位kB),用于限制trace总大小,默认无上限
-k KFUNCS,–ktrace= KFUNCS追踪kernel函数,用逗号分隔
-a APP_NAME,–app=APP_NAME追踪应用包名,用逗号分隔
–from-file=FROM_FILE从文件中创建互动的systrace
-e DEVICE_SERIAL,–serial=DEVICE_SERIAL指定设备
-l, –list-categories列举可用的tags
2.2.2 category

category可取值:

category解释
gfxGraphics
inputInput
viewView System
webviewWebView
wmWindow Manager
amActivity Manager
smSync Manager
audioAudio
videoVideo
cameraCamera
halHardware Modules
appApplication
resResource Loading
dalvikDalvik VM
rsRenderScript
bionicBionic C Library
powerPower Management
schedCPU Scheduling
irqIRQ Events
freqCPU Frequency
idleCPU Idle
diskDisk I/O
mmceMMC commands
loadCPU Load
syncSynchronization
workqKernel Workqueues
memreclaimKernel Memory Reclaim
regulatorsVoltage and Current Regulators
2.2.3 示例

例如,在systrace.py所在目录下执行指令:

python systrace.py -b 32768 -t 5 -o mytrace.html wm gfx input view sched freq
./systrace.py -b 32768 -t 5 -o mytrace.html wm gfx input view sched freq //等价

又例如,输出全部的trace信息

python systrace.py -b 32768 -t 5 -o mytrace.html gfx input view webview wm am sm audio video camera hal app res dalvik rs bionic power sched irq freq idle disk mmc load sync workq memreclaim regulators

注:收集trace,需要提前安装python,并且一定要注意必须是python 2.x,而不是能3.x,否则可能会出现问题。另外,buffer大小不可过大,否则会出现oom异常。

2.3 图形化

横坐标是以时间为单位,纵坐标是以进程-线程的方式来划分,同一进程的线程为一组放在一起,可收缩/展开,如下图:
在这里插入图片描述

2.3.1 Frames

产生的html格式的trace文件必须使用Google Chrome打开,才能正确地解析并已图标形式展现。上图中红色圈起来的,都是可以点击操作的地方,最上方是搜索栏,往下处是Alerts按钮,再往下是鼠标操作模式。

在每个app进程,都有一个Frames行,正常情况以绿色的圆点表示。当圆点颜色为黄色或者红色时,意味着这一帧超过16.6ms(即发现丢帧),这时需要通过放大那一帧进一步分析问题。对于Android 5.0(API level 21)或者更高的设备,该问题主要聚焦在UI Thread和Render Thread这两个线程当中。对于更早的版本,则所有工作在UI Thread。
在这里插入图片描述

2.3.2 Alerts

Systrace能自动分析trace中的事件,并能自动高亮性能问题作为一个Alerts,建议调试人员下一步该怎么做。

比如对于丢帧是,点击黄色或红色的Frames圆点便会有相关的提示信息;另外,在systrace的最右上方,有一个Alerts tab可以展开,这里记录着所有的的警告提示信息。

注:本文讲到最新版的systrace,其中sdk 23,chrome版本49.0,部分功能在老版本systrace并没有。

三、 快捷操作

3.1 导航操作

导航操作作用
w放大,[+shift]速度更快
s缩小,[+shift]速度更快
a左移,[+shift]速度更快
d右移,[+shift]速度更快

3.2 快捷操作

常用操作作用
f放大当前选定区域
m标记当前选定区域
v高亮VSync
g切换是否显示60hz的网格线
0恢复trace到初始态,这里是数字0而非字母o
一般操作作用
h切换是否显示详情
/搜索关键字
enter显示搜索结果,可通过← →定位搜索结果
`显示/隐藏脚本控制台
?显示帮助功能

对于脚本控制台,除了能当做记事本的功能,目前还不清楚有啥功能,或许还在开发中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值