Android Systrace调试使用记录

free-jdx 2021-03-31 15:36:17 5455
1. 前言

Systrace是Android4.1中新增的性能数据采样和分析工具。它可帮助开发者收集Android关键子系统的运行信息,从而帮助开发者更直观的分析系统瓶颈,改进性能。

2. Systrace工具使用简介

(1).google chrome浏览器安装版本 54.0.2840.71 m
(2).打开chrome,在搜索栏输入chrome://tracing


(3)运行ddms工具,选中应用进程,开启systrace跟踪选项,抓取trace.html文件。

(4)在chrome浏览器tracing界面下,点击Load按钮,加载trace.html文件。

加载成功后如下如所示:

3. systrace性能分析
3.1.SurfaceFlinger显示性能分析

SurfaceFlinger显示性能分析主要是观察平台的综合性能,包括硬件的cpu负载能力、irq响应速度和优先级策略、gpu渲染能力、平台总线响应速度、DDR I/O带宽性能、emmc/nand存储的I/O读写性能、系统软件的负载资源分布、调度优先级分配策略和框架层的软件设计优化程度等。

3.1.1.Systrace surfaceflinger简介
HW_VSYNC_ON_0:Atrace值为‘1’(如下图中红色框图1中的蓝色竖条)或‘0’(如下图中红色框图2中空白竖条)。
‘1’表示前台应用UI正在更新frame,surfaceflinger需要接收并派发VSYNC信号;
‘0’表示前台应用UI没有更新frame,surfaceflinger主动关闭对VSYNC信号的接收和响应;

HW_VSYNC_0:androwcomposer 捕获的display硬件VSYNC中断信号;
VSYNC_app:android hwcomposer分发给应用的VSYNC信号;
VSYNC_sf:android hwcomposer分发给surfaceflinger进程的VSYNC信号;
VSYNC_app 和HW_VSYNC_0存在vsyncSrc绘图延时,VSYNC_sf和HW_VSYNC_0存在合成延时。

3.1.2.Systrace surfaceflinger性能分析

SurfaceFlinger在一个VSYNV-sf周期内的图像合成过程低于16ms,是满足60P视觉流畅度的性能要求,如图所示。

当合成超过VSYNC-sf周期时,需要检查耗时原因,如下图所示,surfaceflinger合成过程在等待gpu模块释放绘图buffer的fence出现超时,

4.UI流畅度性能分析
4.1.Systrace UI frame简介

应用程序的每一帧frame都是从接收到 display VSYNC信号后进行计算和绘制的。使用Systrace分析UI流畅度性能时,需要对UI Thread和RenderThread线程以及Atrace追踪函数有基本了解。
UI Thread 线程主要负责处理UI组件分发事件(包括绘制事件),并从显示子系统接收VSYNC信号。
RenderThread线程负责对发送GPU的绘制命令,减轻UI线程的压力,在UI线程阻塞时保持动画平滑。

将红色方框中的内容方法后,可以看到UI Thread 线程和 RenderThread线程的关键函数调用层级和耗时。

UI Thread 线程中的Choreographer类实例作用是协调动画,输入和绘制的时间,它从显示子系统接收VSYNC,然后安排绘制下一个frame的一部分工作。Choreographer类控制外部input输入事件的处理,动画执行,UI变化,以及提交执行;Choreographer对象中有四条链表,分别保存着待处理的输入事件,待处理的动画事件,待处理的遍历事件,以及待处理的提交时间。Choreographer会根据当前的时间,只处理事件链表中最后一个事件,当有耗时操作在主线程时,事件不能及时执行,就会出现所谓的“跳帧”,“卡顿”现象。

UI Thread 线程中 doFrame方法做的就是绘制下一帧frame,方法中会执行CallBack,优先级为:Choreographer.CALLBACK_INPUT>Choreographer.CALLBACK_ANIMATION>Choreographer.CALLBACK_TRAVERSAL>Choreographer.CALLBACK_COMMIT
ViewRootImpl#scheduleTraversals-->Choreographer#postCallback(Choreographer.CALLBACK_TRAVERSAL,mTraversalRunnable, null)-->Traversal(measure,layout,draw)

4.2.Systrace UI frame警告分析

图抓取的systrace截图中,绿色的F表示帧率正常,黄色的F表示Alart警告,红色的F标识严重Alart警告;

绿色的F表示前台应用这一帧的绘制在16ms以内,流畅度60P正常。

黄色的F表示Alart警告,红色的F标识严重Alart警告,表示前台应用这一帧的绘制超过了16ms,出现卡顿。

用鼠标点击 红色或者黄色的F,绿色的F会变成灰色,同时下方会展示具体的Alart信息内容,该内容会提UI Thread渲染超时,出现JACK的可能性原因,可以帮助工程师进行排查问题。UI Thread渲染超时原因如下:

1). UI Thread 线程的代码执行出现阻塞,例如等待其他线程的资源释放或者信号量;

2). 网络资源线程和bitmap加载线程的优先级低于UI Thread 线程,避免此类后台线程抢占UI 线程调度资源,其优先级低于android.os.Process#THREAD_PRIORITY_BACKGROUND;

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
free-jdx
红包 86 9 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
free-jdx
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区