Systrace使用和分析

本文介绍Systrace作为Android性能分析工具的使用方法,包括通过图形界面和命令行抓取trace,以及如何解读分析结果,如Frame、Alerts和Schedulingdelay等关键指标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Systrace是分析Android设备性能的主要工具,systrace使用atrace来启用跟踪,然后读取ftrace缓冲区并将其全部封装到一个独立的HTML查看器里。
systrace.py路径:C:\Users\ruxian.feng\AppData\Local\Android\Sdk\platform-tools
systrace抓取方式:如果想要分析Android系统或者APP的问题,需要抓取systrace文件分析并找出引起系统卡顿或者app反应慢的语言,在源码上解决引起反应慢的问题
方式一图形化界面Android Device Monitor
路径:Sdk\tools\monitor.bat
在这里插入图片描述选择要分析的进程,在左边栏,点击左边栏右上角的图标在这里插入图片描述
在这里插入图片描述可以根据需求配置路径,时间,trace大小,平时一般用10s,20480KB,然后点击OK,操作要分析系统卡顿或者APP运行缓慢的部分,例如启动一个APP,系统会自动收集运行时的信息,生成一个html文件,然后再Chrome浏览器打开html文件,地址chrome://tracing/

Advanced Options:针对UI相关的性能问题,以下TAG必须使能:Input/Window Manager/Activity Manager/Bionic C Library/ CPU Freq/CPU Idle/CPU load. 如果设备可以root,root后可以看到更多的TAG,root后请使能:eMMC commands/ Synchonization/Kernel Workqueues.
方式二命令行抓取trace

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

systrace.py在:Sdk\platform-tools\systrace
注意:必须python2才可以运行,否则报错。
可以一个电脑上安装python2和python3,配置两个环境变量,把一个可执行文件重命名,例如Python3的可执行文件重命名为Python3.exe,这样就可以区分两个python

options:

options解释
-o File输出的目标文件,即html的路径
-t执行时间,默认为5s
-bbuffer的大小,单位kb,用于限制trace的大小
-k KFUNCS追踪Kernel函数,用逗号隔开
-a APP追踪应用包名,用逗号隔开
-from-file从文件中创建systrace
-l列举可用的tags

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

示例:

Python systrace.py -b 32768 -t 5 -o mytrace.html wm gfx input view sched freq

systrace图像分析
纵轴代表时间,事件按照进程分组,同一个进程内按照线程进行纵向拆分,每个线程记录自己的工作,可收缩/展开

Frame:
每个APP进程都有一个Frame行,正常是绿色的圆点,颜色是黄色或者红色表示这一帧超过了16.6ms(丢帧),即会产生卡顿,这时需要放大那一帧进行进一步分析问题。对于Android 5或者更高的设备主要聚焦在UI Thread和Render Thread这两个线程,更早的版本,则全部集中在UI Thread。

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

比如丢帧,点击黄色或者红色的Frame圆点会有相关的提示信息,另外最右边有一个Alerts tab 可以展开,查看所有警告提示信息。
当我们点击了Alerts或者点击右边的Alerts列表中的任何一点我们可以看到在界面的最底部会相对应的优化提示以及可能会出现优化的视频教程链接。

在这里插入图片描述
按M可以看到这一帧到下一帧的事件以及哪个方法调用的事件最长。
系统要求帧率是60fps,即一秒60帧,每帧之间16.6ms,通常说帧数,简单地说,就是在1秒钟时间里传输的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次,通常用FPS(Frames Per Second)表示。每一帧都是静止的图象,快速连续地显示帧便形成了运动的假象。高的帧率可以得到更流畅、更逼真的动画。每秒钟帧数 (fps) 越多,所显示的动作就会越流畅。

Scheduling delay(调度延迟)的意思就是一个线程在处理一块运算的时候,在很长一段时间都没有被分配到CPU上面做运算,从而导致这个线程在很长一段时间都没有完成工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值