Systrace使用和分析

发布时间:2021-10-25 07:38:21

Systrace是分析Android设备性能的主要工具,systrace使用atrace来启用跟踪,然后读取ftrace缓冲区并将其全部封装到一个独立的HTML查看器里。
systrace.py路径:C:Users uxian.fengAppDataLocalAndroidSdkplatform-tools
systrace抓取方式:如果想要分析Android系统或者APP的问题,需要抓取systrace文件分析并找出引起系统卡顿或者app反应慢的语言,在源码上解决引起反应慢的问题
方式一图形化界面Android Device Monitor
路径:Sdk oolsmonitor.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在:Sdkplatform-toolssystrace
注意:必须python2才可以运行,否则报错。
可以一个电脑*沧皃ython2和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上面做运算,从而导致这个线程在很长一段时间都没有完成工作。

相关文档

  • 小班第一学期评语_第一学期初中语文教研组工作计划范文
  • 机器学习公式推导【Day3】排序损失loss
  • 学校清明节扫墓讲话稿2016
  • 五四青年小学日记400字
  • mysql读取比特币交易数据_如何解析比特币中的交易原始数据rawData
  • 月夜心凉
  • 公司庆典活动欢迎词范文
  • django设置时区与语言
  • Laravel blade模板转义html标签问题
  • 75年属兔人打牌方位在哪里
  • 孕妇吸烟的危害
  • 万年青不长叶子怎么办
  • 广州医保定点怎么办理
  • 【Unity】安卓打包要点 (Unity v2019.2.17f, MacOS)
  • 对不起父母的一封信
  • 班主任个人年终工作总结五篇
  • 旅游活动方案汇总10篇
  • 风趣幽默说说
  • 检测IP地址的正则表达式
  • 教育措施包括哪些内容
  • 稻香村粽子怎么做?稻香村粽子自己怎么做?
  • 力扣169题:多数元素,Boyer-Moore投票算法学习笔记,python实现
  • 最暖心的浪漫情人节祝福语
  • 中秋放河灯
  • 幽默笑话短信5000条_男女幽默短信15则
  • ***第二季图片大全
  • 工作简报的写法及范文工作简报怎么写
  • 利郎是几线品牌
  • 我喜欢画画-道真玉小三(1)韩雨欣
  • 渐渐明白了,人都是会变的
  • 猜你喜欢

    电脑版