Android性能调试工具:Systrace(二)浏览和解读Systrace报告

本文详细介绍了Android性能调试工具Systrace的使用,包括其内核部分、数据采集和数据分析工具。通过解读Systrace报告的不同颜色标识的线程状态,帮助开发者了解CPU执行慢、Binder调用、IO操作等问题,从而定位性能瓶颈。分析线程状态,如绿色(运行中)、蓝色(可运行)、白色(休眠中)、橘色(不可中断的睡眠态IO Block)和紫色(不可中断的睡眠态),并提供了分析方向和优化建议。
部署运行你感兴趣的模型镜像

Systrace 的功能包括跟踪系统的 I/O 操作内核工作队列CPU 负载以及 Android 各个子系统的运行状况等。

Systrace主要由3部分组成:

1.内核部分:使用Systrace必须开启kernel中ftrace相关的模块

2.数据采集部分应用程序利用Android中定义的Trace类把统计信息输出给ftrace。Android再通过atrace 程序ftrace中读取统计信息然后交给数据分析工具(systrace.py,python脚本)来处理。

3.数据分析工具:systrace.py(python脚本文件,Android提供)用来配置数据采集的方式和收集 ftrace 统计数据并生成一个html文件供用户查看

 

 

 

 

查看systrace报告的键盘快捷键

说明
W放大跟踪时间轴。
A在跟踪时间轴上向左平移。
S缩小跟踪时间轴。
D在跟踪时间轴上向右平移。
E以当前鼠标位置为中定位跟踪时间轴。
M高亮当前选区。
1将当前正在使用中的选择模型更改为“选择”模式。对应于鼠标选择器工具栏中显示的第 1 个按钮(请参见右图)。
2将当前正在使用中的选择模型更改为“平移”模式。对应于鼠标选择器工具栏中显示的第 2 个按钮(请参见右图)。
3将当前正在使用中的选择模型更改为“缩放”模式。对应于鼠标选择器工具栏中显示的第 3 个按钮(请参见右图)。
4将当前正在使用中的选择模型更改为“计时”模式。对应于鼠标选择器工具栏中显示的第 4 个按钮(请参见右图)。
G在当前所选任务的开头显示网格。
Shift + G在当前所选任务的末尾显示网格。
向左箭头在当前选定的时间轴上选择上一个事件。
向右箭头在当前选定的时间轴上选择下一个事件。

 

浏览systrace报告

  • Chrome浏览器(必须)。

    • 1.在地址栏输入chrome://tracing命令,然后将生成的trace.html文件拖进来,或者通过load按钮导入。

    • 2.直接双击打开html文件

 

 

 

trace.html文件加载到地址栏chrome://tracing中的视图,需要注意图中着黄色的部分,分析报告的过程中需要用到

 

Systrace 会用不同的颜色来标识不同的线程状态

通过查看线程状态我们可以知道目前的瓶颈是什么, 是 CPU 执行慢还是因为 Binder 调用, 又或是进行 IO 操作, 又或是拿不到CPU时间片;

 

绿色:运行中

只有在运行态的进程才可能在CPU上运行。

同一时刻可能有多个进程处于可执行状态,这些进程的task_struct结构(进程控制块)被放入对应CPU的可执行队列中(一个进程最多只能出现在一个CPU的可执行队列中)。

进程调度器的任务就是从各个CPU的可执行队列分别选择一个进程在该CPU上运行

是否频率不够?
是否跑在了小核上?
是否频繁在 Running 和 Runnable 之间切换?为什么?
是否频繁在 Running 和 Sleep 之间切换?为什么?
是否跑在了不该跑的核上面?比如不重要的线程占用了超大核

 

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

分析方向:Runnable 状态的线程状态持续时间越长,则表示cpu的调度越忙,没有及时处理到这个任务:
是否后台有太多的任务在跑?
没有及时处理是因为频率太低?
没有及时处理是因为被限制到某个cpuset里面,但是 cpu 很满?
此时Running 的任务是什么?为什么?

 

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

分析方向: 这里一般是在等事件驱动(等待资源到来,从等待队列中被唤醒)

 

橘色:不可中断的睡眠态 IO Block

线程在I / O上被阻塞或等待磁盘操作完成,

分析方向:

若有大量的橘色不可中断的睡眠态出现,一般是由于进入了低内存状态;

当系统 io 操作很繁忙时, 每个 io 操作都需要等待排队时, 极易出现阻塞且时间过长

 

紫色:不可中断的睡眠态

如何分析,参看:https://developer.android.com/topic/performance/tracing/navigate-report#user-interactions

我觉得还是官网上写的更好,至于工具多用用就会熟练;

您可能感兴趣的与本文相关的镜像

Yolo-v8.3

Yolo-v8.3

Yolo

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的Joseph Redmon 和Ali Farhadi 开发。 YOLO 于2015 年推出,因其高速和高精度而广受欢迎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值