systrace 基本使用

systrace 基本使用,第1张

Systrace 是谷歌提供的一款工具,用于记录短期内的设备活动,是性能分析的利器。


本文主要介绍 systrace 文件的抓取和简单的解析 systrace 图。


首先我们要下载 platform-tools 工具包,这个是可以单独下载的。


下载好后,在其中会有一个 systrace 目录,就是我们需要用到的。


此外,python2.7 也是需要下载并配置的好的。


工具准备好后,我们就正式进入 systrace 的使用介绍。


systrace 基本使用
  • 1. 生成 systrace 文件
  • 2. 解析 systrace
    • 2.1 耗时统计
    • 2.2 线程各类型时间片统计
    • 2.3 cpu 状态查看
    • 2.4 线程唤醒信息查看

1. 生成 systrace 文件

进入 cmd 命令行,切换到 systrace 目录下,比如我笔记本上 systrace 的目录是 E:\tools\platform-tools\systrace>,那我就切换到这个目录。




连接手机和电脑后,输入 python systrace.py -o camera.html并回车,随后命令栏出现 Starting tracing (stop with enter) ... 的提示。


这个时候就在手机上进行目标动作,比如我这里启动了相机,等相机启动完成后,按回车键结束抓取 systrace。


(温馨提示,如果执行抓取命令时报错 ImportError: No module named six,那么就执行 python -m pip install six,其他类似)。


2. 解析 systrace

第一步完成后,我们在 systrace 目录下得到了 camera.html 这个文件,下面是解析文件。


在浏览器地址栏中输入 chrome://tracing/并回车,将生产的 camera.html 拖动到浏览器页面上,则出现如下界面。




这个玩意怎么看呢,简单说一下。


首先是左边栏,最前面的是 cpu 信息,随后就是各个进程了。


对于图形界面,从左往右时间是时间增长的过程。


常用的快捷键有:

W:放大画面,S:缩小画面
A:画面左移,D:画面右移

下面这个悬浮窗就是选择模式工具栏,最上面的黑箭头常用来单击选中某个阶段或者框选出某些阶段,最下面的用于统计时间长度

简单介绍完了,我们找到刚刚启动的相机进程,如下:

重点看看它的 UI 线程。




从这个图里,我们能看到什么信息呢?

2.1 耗时统计

这是最基本作用,我们能直观的看到启动相机过程中各个阶段的耗时情况,比如 bindApplication、activityStart 等阶段,这些阶段的抓取是通过在源码中添加 trace_tag 实现的。


上图显示的是从点击桌面图标到启动后绘制完第一帧耗时共 922 ms。


通常来说,各流程的起始时间比较好确定,一般就是点击、按键、滑动等事件输入时,但结束时间点却往往在不同公司或团队有不同的约定。


比如启动相机这个过程,结束点可能会选择绘制完一帧、绘制完三帧,或者在画面上出现某个图标。


2.2 线程各类型时间片统计

我们发现这个相机启动有点慢了,想知道时间究竟花在哪里了,此时可以框选整个过程的 cpu 状态条,红框里的部分就是 cpu 状态条,它总共有 5 中颜色代表不同的 cpu 状态。




Running(绿色):运行中,该状态的线程正在 cpu 上运行,点击 绿色的片段会显示正运行在哪个 cpu 上。



Runnable(蓝色):可运行,线程可以运行但当前没有安排,在等待 cpu 调度。



Sleep(白色):休眠中,线程没有工作要做,也有可能是线程在互斥锁上被阻塞。



Uninterruptible Sleep - Block I/O(橙色):不可中断的睡眠态,线程被 I / O 阻塞了或正在等待磁盘 *** 作完成。



Uninterruptible Sleep(紫色):不可中断的睡眠态,线程在另一个内核 *** 作上被阻塞,个人几乎没有碰见过。


框选完后,在最下方会统计出 Running、Sleep、Uninterruptible Sleep - IO Block、Runnable、Uninterruptible Sleep 五种状态累计消耗的时间。



2.3 cpu 状态查看

假设我们觉得这个 Running 时间太长了,可以先看看这个 UI 线程主要跑着哪个 cpu 上,然后去查看对于 cpu 的信息。



比如我这个相机 UI 线程,一直跑在 cpu7 上,频率被限制到 2.4 MHz,应该已经是最高频跑了,居然还是不够快。


这一方面说明 cpu 不够好,二也说明相机这个软件启动时做的事情有点多,也许还有优化的空间。



2.4 线程唤醒信息查看

如果过程中出现长短的 sleep,我们肯定想知道它为啥 Sleep,这个时候可以点击 sleep 的 cpu 条,按键盘上的右键后移动到了 runnable 状态,会显示该线程是被谁唤醒的,据此找到唤醒者,看看它之前在做什么,帮助我们定位问题。


以上,应该就是 Systrace 最基本的使用了,感谢大家阅读。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/571380.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存