Systrace怎么玩儿

307 阅读1分钟

几年前做过一年多相机性能优化,天天用。最近又用这个做简单启动耗时分析,luancher#down-SplasActivity-MainActivity#GPU,发现很多东西都忘记了。顾做笔记回忆一下。

systrace&python2.7等配置安装

  • systrace高版本sdk被移除了,Perfetto了解下
    
  • python依赖版本是2.7
    
  • python可能还需要pip install一些软件包
    

trace.html打开与操作

  • ? Chrome tracing help。wasd快捷键
    
  • 进程筛选、binder、VSync等
    
  • chrome://tracing 打开更快,但是可能看不清条目名称
    
  • ChromeDevTools使用,查看条目名称
    

数据分析

  • 查看点击事件 app和launcher的UIThread上的deliverInputEvent,down|move|up,会有多个。
  • 查看Activity的渲染切换 SurfaceFinger下activity条目。
  • 查看进程间binder交互
  • 查看VSYNC与Choreographer
  • 查看线程锁情况
  • 火焰图方法分析
  • 。。。

常见使用场景

  • 压缩寻找最短的UI渲染路径--启动优化
    

Systrace工具源码原理

  • 略,网上很多,可以自己行阅读源码
    

Trace打点&自作分析工具

  • 自打点分析业务
    
  • 自作分析工具,比如python脚本自动化解析分析多个trace数据,输出excel表格化图形化数据。毕竟对于一些固定模式套路的分析,Systrace手动查看分析统计重复工作费时费事。当然要根据实际情况权衡编写脚本与手动统计分析的工时。
    

通过基本的工具配置,掌握基本使用,还要结合系统服务框架原理以及app框架逻辑融汇贯通。对于形成固定套路的分析手段,可以编写自动化脚本,得到可视化数据图表。