[Android] 性能工具Systrace的使用

本文介绍了Android性能工具Systrace的使用方法,包括安装、连接手机、运行命令及分析报告。通过Systrace收集的时序信息,可以深入调查UI性能,如帧率分析和警告信息,帮助开发者优化应用性能。

Systrace 是用于收集和检测设备在运行过程中的时序信息的一个脚本工具,它结合了来自Android内核的数据,例如CPU调度程序,磁盘活动和应用程序线程,最终会以HTML的形式报告。

如何使用systrace

  • Step1.安装systrace
    在android studio中,Tools -> Android -> SDK Manager -> SDK Tools,点击Android SDK platform-Tools并安装,安装完成后,进入/platform-tools/systrace中,systrace脚本便位于这里。
  • Step2.安装python
    systrace是一个python脚本,因此需要安装Python才能运行:
sudo apt-get install python3.6
  • Step3.连接手机

使用USB连接要测试的手机,并打开USB调试开关。

完成以上步骤,就可以进入android-sdk/platform-tools/systrace使用systrace了,下面来看看运行systrace时的一些命令。

命令

systrace运行的命令格式如下:

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

options表示选项,category表示需要抓取的trace类别,默认抓取所有的类别,也可以进行指定。

常用options有:

Global optionsDescription
-h |–help获取帮助信息.
-l | --list-categories列出连接设备上所有的trace category.
-o file.html指定一个报告结果的html文件
-t N设定一个时间(秒),到达时间后,自动结束,不指定时按Enter键结束

如:

$ python systrace.py -o mynewtrace.html sched freq idle am wm gfx view \
    binder_driver hal dalvik camera input res

可以通过如下命令查看所有的category:

$ python systrace.py -l
         gfx - Graphics
       input - Input
        view - View System
     webview - WebView
          wm - Window Manager
          am - Activity Manager
          sm - Sync Manager
       audio - Audio
       video - Video
      camera - Camera
         hal - Hardware Modules
         res - Resource Loading
      dalvik - Dalvik VM
          rs - RenderScript
      bionic - Bionic C Library
       power - Power Management
          pm - Package Manager
          ss - System Server
    database - Database
     network - Network
         adb - ADB
    vibrator - Vibrator
        aidl - AIDL calls
         pdx - PDX services
       sched - CPU Scheduling
         irq - IRQ Events
         i2c - I2C Events
        freq - CPU Frequency
        idle - CPU Idle
        disk - Disk I/O
        load - CPU Load
        sync - Synchronization
       workq - Kernel Workqueues
  memreclaim - Kernel Memory Reclaim
  regulators - Voltage and Current Regulators
  binder_driver - Binder Kernel driver
  binder_lock - Binder global lock trace

NOTE: more categories may be available with adb root

其他的选项使用较少,就不列举了。
通过以上的这些命令,最终将会获得html类型的报告结果,下面我们就看看如何分析该HTML报告。

查看报告

通过chrome浏览器打开html报告,将会出现类似如下图的结果:

左侧这一栏表示各个进程中trace的TraceName,中间则是各个Trace对应的时间轴,可以看到由各种颜色标记。其中绿色表示正常,其他颜色如红色、黄色则表示需要优化。

调查UI性能

Frames

正常情况下,大约以每秒60帧,一帧约16.6ms的速率渲染,如果超过这个时间,F圆圈就会变成红色或者黄色.这时可以点击F圆圈,会给出详细信息,以及可能的解决方案,如下图所示:

对于Android 5.0(API level 21)或者更高的设备,渲染帧的工作在UI Thread和Render Thread这两个线程当中。对于更早的版本,则所有工作在UI Thread上进行.

Alerts

当点击较慢的渲染后(红色F圆圈),会在报告的底部窗格中看到Alert.此外还可以通过点击右侧栏"Alerts"查看所有的警报,通常,一个区域的微小变化或改进可以消除应用程序中的整个警报类别。

在Alert一栏中,列出了所有的Alert,点击后可以查看详细的信息:

点击单个Alert后:

在这里插入图片描述

快捷键

以下是操作HTML报告的快捷键,通过这几个键,可以对整个报告进行放大,缩小,搜索,高亮等操作,可以快速的查看测试过程中哪里耗时较多。

KeyDescription
W放大时间线
S缩小时间线
A左移时间线
D右移时间线
f放大当前所选部分
0恢复缩放和平移
E时间轴置于当前鼠标位置的中心
G从所选任务端的开始处显示网格
Shift + G从所选任务端的结束处显示网格
->在当前选定的时间轴上选择下一个事件
<-在当前选定的时间轴上选择上一个事件
m高亮显示所选部分
?显示帮助
/搜索字段
Enter逐步搜索结果

参考资料

官方文档

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值