Android性能分析工具-systrace使用

这篇具有很好参考价值的文章主要介绍了Android性能分析工具-systrace使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文暂时记录使用方法,具体结合项目后续再分析。

systrace介绍

最近研究启动优化,在此记录一下systrace工具的使用。官网资料: source.android.google.cn/devices/tec…
systrace 是分析 Android 设备性能的主要工具,也是平台提供的旧版命令行工具( Android 10后引入了Perfetto),可用于获得系统跟踪的信息。其中汇总了 Android 内核中的数据,例如 CPU 调度程序、磁盘活动和应用线程,帮助分析提升应用性能。之前还有个TraceView,由于严重的运行时开销,现在也很少使用了,分析布局嵌套的时候,可能LayoutInspector还多些。

在介绍使用之前,先简单说明一下Systrace的原理:它的思想很朴素,在系统的一些关键链路(比如System Service,虚拟机,Binder驱动)插入一些信息(这里称之为Label),通过Label的开始和结束来确定某个核心过程的执行时间,然后把这些Label信息收集起来得到系统关键路径的运行时间信息,进而得到整个系统的运行性能信息。Android Framework里面一些重要的模块都插入了Label信息(Java层的通过android.os.Trace类完成,native层通过ATrace宏完成),用户App中可以添加自定义的Label,这样就组成了一个完成的性能分析系统。

怎么使用systrace?

这里我们有两种做法,一种是操作手机(其它可使用的Android设备)自己手机lable信息,另一种就是自己用命令行记录。

1. 从测试设备本身录制跟踪记录

developer.android.google.cn/topic/perfo…

Android性能分析工具-systrace使用

a. 进行trace设置。

在手机上进入“Settings”→“Developer options”→“System Tracing”→选择"Long traces"(该项可以不限制traces时长,由自己决定截取多长的trace)和其他设置(抓取的trace具体categories类型等)。

b. 抓取相关trace。

点击"Record trace"开始录制→进行相关复现问题的操作→手机下拉点击快捷设置面板的"stop tracing"→通过分享或者pull方式将trace文件导入电脑。

c. 查看trace信息。

生成的文件名一般为“trace-holi-版本-日期-时间.perfetto-trace”。通过谷歌浏览器,打开网页“ui.perfetto.dev/”,点击load加载文件查看trace文件内容。

Android性能分析工具-systrace使用

Android性能分析工具-systrace使用

2. 命令行

官方指导: developer.android.google.cn/topic/perfo…

a. 找到systrace.py 文件。

systrace 命令在 Android SDK 工具软件包中提供,并且可以在 android-sdk/platform-tools/systrace/ 中找到。

b. 输入命令。

python systrace.py gfx rs input view sched am wm dalvik freq idle load sync workq powerdisk sm hal res binder_driver binder_lock -a com.example.mytest -b 20480 -t 10 -o ~/share/trace_t.html
  
分析上一行命令的各个参数:  python systrace.py [需要跟踪的类别,如:gfx rs input view sched am wm dalvik freq idle load sync workq powerdisk sm hal res binder_driver binder_lock] -a [包名,例如:com.example.mytest] -b [buffer大小,如:20480] -t [时间:单位为秒。如:10] -o [输出文件路径,如:~/share/trace_t.html]

c. 操作手机端

比如假设你要分析App的冷启动过程,那就先把App进程杀掉,切换到Launcher中有你的App 图标的那个页面,随时准备点击图标启动进程;假设你要分析某个Activity的卡顿情况,那就先在手机上进入到上一个Activity,随时准备点按钮切换到待分析的Activity中。

可能有读者问,至于这么如临大敌紧张兮兮的么?其实准备这个过程非常重要,因为Systrace没办法自由地控制开始和结束(下面有一个办法可以缓解),而trace得到的数据有可能非常多,因此我们需要手工缩小需要分析的数据集合;不然你可能被一堆眼花缭乱的数据和图像弄得晕头转向,然后什么有用的结论也分析不出来。记住哦,手动缩小范围,会帮助你加速收敛问题的分析过程,进而快速地定位和解决问题。

d. 查看trace信息。

然后在谷歌浏览器中输入chrome://tracing/,点击load按键载入生成的html文件。

Android性能分析工具-systrace使用

载入trace.html文件后,页面显示如图:

Android性能分析工具-systrace使用

更加缩小分析范围?

systrace没有办法在代码中控制Trace运行的开始和结束;那么,如果我们要分析App的启动性能,我点了桌面图标,把Trace时间设置为10s,我怎么知道这10s中,哪段时间是我App的启动过程?如果不知道我们需要分析的时间段,那就做了无用功了。

我们可以用自定义Trace Label解决;Android SDK中提供了android.os.Trace#beginSection和android.os.Trace#endSection 这两个接口;我们可以在代码中插入这些代码来分析某个特定的过程;比如我们觉得Fragment的onCreateView过程有问题,那就在onCreateView 中加上代码:

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
            Bundle savedInstanceState) {
    Trace.beginSection("Fragement_onCreateView");
    // .. 其他代码
    // ...
    // .. 结束处
    Trace.endSection();
}

这样,在Trace的分析结果中就会带上Fragement_onCreateView 这个过程的运行时间段信息(当然你得开启 -a 选项!),如下:

Android性能分析工具-systrace使用

命令行参数介绍

参数介绍:python ``[systrace.py](http://systrace.py) options

options 描述
-o < FILE > 输出的目标文件
-t N, –time=N 执行时间,单位为秒。默认5s
-b N, –buf-size=N buffer大小(单位kB),用于限制trace总大小,默认无上限
-k < KFUNCS >,–ktrace=< KFUNCS > 追踪kernel函数,用逗号分隔
-a < APP_NAME >,–app=< APP_NAME > 追踪应用包名,用逗号分隔
–from-file=< FROM_FILE > 从文件中创建互动的systrace
-e < DEVICE_SERIAL >,–serial=< DEVICE_SERIAL > 指定设备
-l, --list-categories 列举可用的tags,即查看支持跟踪的类别
-h 显示帮助

其中-l命令列举出的tags有

Android性能分析工具-systrace使用

categories 描述
sched CPU调度的信息,非常重要;你能看到CPU在每个时间段在运行什么线程;线程调度情况,比如锁信息。
gfx Graphic系统的相关信息,包括SurfaceFlinger,VSYNC消息,Texture,RenderThread等;分析卡顿非常依赖
view View绘制系统的相关信息,比如onMeasure,onLayout等;对分析卡顿比较有帮助。
am ActivityManager调用的相关信息;用来分析Activity的启动过程比较有效。
binder_driver Binder驱动的相关信息,如果你怀疑是Binder IPC的问题,不妨打开这个。
core_services SystemServer中系统核心Service的相关信息,分析特定问题用。
... .....

3. 在monitor中捕捉。

a. 启动monitor。

找到monitor目录:Android/Sdk/monitor。启动终端输入 ./monitor.

Android性能分析工具-systrace使用

monitor界面如下:

Android性能分析工具-systrace使用

b. 抓取相关trace。

连接需要抓trace的手机(手机进入开发者模式,启动usb调试功能)。之后即可选中手机,选择相关设置,开始抓trace。

Android性能分析工具-systrace使用

c. 查看trace信息。

抓完trace,在chrome://tracing/打开文件。

PS:个别手机无法通过monitor抓取trace文件,亦或者生成的trace文件无法打开。

如何查看trace信息?

查看信息的网址

旧版:谷歌浏览器输入 chrome://tracing/,点击load加载文件查看trace文件内容。主要打开.html格式的trace。
新版:打开网页“ui.perfetto.dev/”,点击load加载文件查看trace文件内容。主要打开.perfetto-trace格式的trace。

操作快捷键文章来源地址https://www.toymoban.com/news/detail-467874.html

导航操作 作用
w 放大,[+shift]速度更快
s 缩小,[+shift]速度更快
a 左移,[+shift]速度更快
d 右移,[+shift]速度更快
模式切换操作 作用(可通过按数字1~4,用于切换鼠标模式; 另外,按住alt键,再滚动鼠标滚轮能实现放大/缩小功能。)
1 选择模式,双击将高亮相同任务
2 平移模式,拖动平移视图
3 缩放模式,拖动鼠标实现放大/缩小
4 时移模式,拖动来创建或移除时间窗口线
常用操作 作用
f 放大当前选定区域
m 标记当前选定区域
v 高亮VSync
E 将当前鼠标位置在时间轴上居中
g 切换是否显示60hz的网格线
Shift + G 在当前选定任务的结束处显示网格
0 恢复trace到初始态,这里是数字0而非字母o
Left Arrow 在当前时间轴上选择上一个事件。
Right Arrow 在当前时间轴上选择下一个事件。
一般操作 作用
h 切换是否显示详情
/ 搜索关键字
enter 显示搜索结果,可通过← →定位搜索结果
` 显示/隐藏脚本控制台
? 显示帮助功能

到了这里,关于Android性能分析工具-systrace使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux性能分析工具perf和火焰图使用方法

    perf是linux上的性能分析工具,perf可以对event进行统计得到event的发生次数,或者对event进行采样,得到每次event发生时的相关数据(cpu、进程id、运行栈等),利用这些数据来对程序性能进行分析。 perf可以统计或采样的event有很多,如果我们要分析cpu,那么我们可以使用cpu-cycles、

    2024年01月16日
    浏览(61)
  • JVM-jvisualvm性能监控可视化工具使用与eden-s0-s1分配分析(三)

    目录 第一步:安装jvisualvm  第二步:安装VisualvmGc插件 方式一:jvisualvm工具直接下载安装 方式二:去官网下载导入安装 总结 第三步:idea安装VisualvM Launcher插件 第四步:演示young中eden、s0、s1垃圾回收过程 1、配置jvm堆大小  2、启动一个项目 3、打开jvisualvm 第五步:jvisualvm性

    2024年02月11日
    浏览(50)
  • 辅助性能优化——长安链性能分析工具原理及用法

    如何提升区块链系统性能是很多开发者都会关注的事,但是有些对区块链并非十分熟悉的开发者可能会感到没有头绪。长安链提供了性能分析工具帮助开发者梳理系统耗时,优化系统性能。下面对长安链性能分析工具原理及使用进行介绍。 time_counter.sh是长安链性能分析工具,

    2024年02月13日
    浏览(57)
  • 前端性能分析工具-Lighthouse

    对于前端开发人员来说,除了实现页面功能外,那就是页面的性能响应问题也要关注。同样对于测试人员在进行性能测试时,也要关注前端页面的性能指标。测试前端性能市面上可以用到的工具也比较多,比如可以用 HttpWatch 进行页面的抓取与分析,或者也可以使用抓包工具

    2024年02月11日
    浏览(59)
  • 【Lighthouse前端性能分析工具】

    我们多数性能测试,基本上针对接口的性能测试,很少涉及到前端页面的性能测试。 但影响用户体验的因素除了后端接口数据的返回,还有前端页面的渲染等等。 所以我们除了在开发的过程中注意代码的质量,同时还需要专业的网站测试工具辅助,让我们知道自己的网页还

    2024年02月12日
    浏览(43)
  • unity 渲染性能分析工具

    既然要优化,肯定要有个目标: pc上一般要求:一秒渲染60帧 移动端:一秒渲染30帧 这应该是最低的要求,如果游戏运行时,游戏帧率有变化,人眼能够明显的感觉到帧率下降。 优化的首要规则是找到性能问题的所在。 一般出现问题不是在cpu就是gpu。 unity内置了性能检测工

    2024年02月03日
    浏览(56)
  • Lighthouse前端性能分析工具

    我们多数性能测试,基本上针对接口的性能测试,很少涉及到前端页面的性能测试。 但影响用户体验的因素除了后端接口数据的返回,还有前端页面的渲染等等。 所以我们除了在开发的过程中注意代码的质量,同时还需要专业的网站测试工具辅助,让我们知道自己的网页还

    2024年02月16日
    浏览(40)
  • 前端性能分析工具——Lighthouse

    1、谷歌插件lighthouse的基本介绍 Lighthouse 是一个网站性能测评工具, 它是 Google Chrome 推出的一个开源自动化工具,能够对 PWA 和网页多方面的效果指标进行评测,并给出最佳实践的建议以帮助开发者改进网站的质量。它的使用方法也非常简单,我们只需要提供一个要测评的网

    2024年02月13日
    浏览(44)
  • pytorch性能分析工具Profiler

    https://zhuanlan.zhihu.com/p/360479566 PyTorch Profiler 是一个开源工具,可以对大规模深度学习模型进行准确高效的 性能分析 。包括如下等功能: 分析model的GPU、CPU的使用率 各种算子op的时间消耗 trace网络在pipeline的CPU和GPU的使用情况 Profiler 利用 Tensorboard 可视化 模型的性能 ,帮助发现

    2023年04月12日
    浏览(44)
  • MySQL高级篇——性能分析工具

     导航:   【黑马Java笔记+踩坑汇总】JavaSE+JavaWeb+SSM+SpringBoot+瑞吉外卖+SpringCloud+黑马旅游+谷粒商城+学成在线+设计模式+牛客面试题 目录 1. 数据库服务器的优化步骤 2. 查看系统性能参数 2.1 SHOW STATUS LIKE \\\'参数\\\' 2.2 查看SQL的查询成本 3. 定位执行慢的 SQL:慢查询日志 3.0 介绍 

    2024年02月02日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包