当前位置:   article > 正文

Android性能优化之Perfetto_android perfetto

android perfetto

Perfetto

一. 通过System Tracing抓取

1. System Tracing Overview

System Tracing即系统跟踪界面,用户可以通过如下两种方式进入系统跟踪界面:

(1)设置 – 其他设置 – 开发者选项 – 系统跟踪(Realme GT Neo 闪速版);

(2)adb shell am start com.android.traceur/com.android.traceur.MainActivity

screenhsot-1
2. System Tracing Options

系统跟踪界面包含以下这些选项,它们与网页版本中的一些选项有着一定的对应关系

(1)录制跟踪记录:开启和关闭trace功能;

(2)跟踪可调试的应用:开启和关闭支持debuggable的应用的自定义trace

(3)类别:打开特定类别的trace,对应Android apps & svcs中的Atrace userspace annotations,默认为以下几个选项

am:ActivityManager

binder_driver:Binder Kernel driver

dalvik:Dalvik VM

freq:CPU Frequency

gfx:Graphics

hal:Hardware Modules

idle:CPU Idle

input:Input

pm:Package Manager

res:Resource Loading

sched:CPU Scheduling

ss:System Server

view:View System

webview:Webview

wm:Window Manager
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

(4)恢复默认类别:用户选择自定义的类别,可以重新恢复默认的类别;

(5)每个CPU的缓冲区空间:对应In-memory buffer size有以下4个选项,默认为16384KB

8192 KB

16384 KB

32768 KB

65536 KB
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

(6)清除已保存的跟踪记录:清除手机中已保存的trace文件,默认情况下1个月后清除;

(7)长期跟踪:保存长期的trace到设备存储空间,对应Recording Mode中的Long trace,可以设置最大长期跟踪记录大小(默认为10GB)和最大长期跟踪记录时长(默认为30分钟);

(8)显示“快捷设置”图块:可以在快捷设置中生成一个快捷图标;

3. System Tracing Capture

设置好选项之后,点击“录制跟踪记录”即可开始抓取trace,接着开始复现相关场景,执行完操作之后可以点击下拉通知栏中的系统跟踪通知停止录制,系统会自动保存trace/data/local/traces目录,用户也可以选择分享trace

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AOJ36GcM-1632643440519)(D:\Screenshot_2021-09-22-15-21-37-26_92b64b2a7aa6eb3771ed6e18d0029815.jpg)]

/data/local/traces中保存的trace导到本地,打开https://ui.perfetto.dev/#!/viewer,可以通过以下两种方式打开trace

3.1 Open trace file

在这里插入图片描述

3.2 Open with legacy UI

在这里插入图片描述

二. 通过网页抓取

https://ui.perfetto.dev/#!/record

1. Recording Mode

Perfetto提供了三种录制模式,给用户提供可视化界面方便从不同维度定制各种选项;

1.1 Stop when full

Stop when full 模式下,Perfetto 工作受buffer sizeMax duration 影响,满足其中任一个条件Perfetto 将会停止;

trace 不会因为被覆盖而导致丢失,但如果trace太多会导致提前终止而无法录制到出问题时的trace

In-memory buffer size:代表每一个核上可以存储的最大的tracebuffer大小,默认为64MB;

Max duration:代表此次trace抓取的最大时长,默认为10s

###### [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xLrv3duk-1632643440523)(C:\Users\qinji\AppData\Roaming\Typora\typora-user-images\image-20210922103917192.png)]

1.2 Ring buffer

Ring buffer的选项与Stop when full一致,区别在于其只会受到Max duration 的影响,时间到了就停止抓取 Trace,但是 Trace会有被覆盖的风险;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RoJfxhxk-1632643440524)(C:\Users\qinji\AppData\Roaming\Typora\typora-user-images\image-20210922104043875.png)]

1.3 Long trace

Long trace 用于长时间地抓取 Trace,但是由于需要定时将 buffer 中的 Trace 写到文件里面去,所以可能会有 IO 的影响;

Max file size:代表生成 Long Trace 的最大文件大小,默认为100M

Flush on disk every:代表间隔多长时间将In-memory buffer 中的 trace 写入到文件中。这个数值太大会容易丢 Trace,而太小容易影响IO,默认为2500ms

System TracingMax Duration默认为30mMax file size默认为10GB

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9YwyBVVY-1632643440525)(C:\Users\qinji\AppData\Roaming\Typora\typora-user-images\image-20210922104147792.png)]

2. Recording command

Recording command用于生成录制指令,点击右上角的复制按钮,在 PC 连接手机的情况下,运行这个指令就可以抓取 Trace
在这里插入图片描述

3. CPU

3.1 Coarse CPU usage counter

通过轻量级的轮询/proc/stat节点,周期性的监控CPU的使用情况;

3.2 Scheduling details

记录每个CPU核上调度任务的详情;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T9uHawIw-1632643440526)(C:\Users\qinji\AppData\Roaming\Typora\typora-user-images\image-20210922155637565.png)]

3.3 CPU frequency and idle states

通过ftrace记录CPU频率和idle状态的改变;
在这里插入图片描述

3.4 Syscalls

记录进入和退出系统调用的过程,仅能在userdebugeng版本上生效;

4. GPU

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zHFkid6x-1632643440527)(C:\Users\qinji\AppData\Roaming\Typora\typora-user-images\image-20210922112703182.png)]

4.1 GPU frequency

通过ftrace记录GPU的频率;

4.2 GPU memory

记录单个进程或者整个GPU的内存使用情况(仅在Android 12+的版本上可用);

5.Power

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4IGnzl5d-1632643440528)(C:\Users\qinji\AppData\Roaming\Typora\typora-user-images\image-20210922113718779.png)]

5.1 Battery drain & power rails

记录电池耗电情况;

5.2 Board voltages & frequencies

记录板级传感器电压和频率的改变;

6. Memory

6.1 Native heap profiling

记录Android进程的native堆的分配和回收(仅在Android 10+的版本上可用);

6.2 Java heap dumps

记录Android应用的java对象的分配情况(仅在Android 11+的版本上可用);

6.3 Kernel meminfo

记录/pro/meminfo节点的轮询情况;

6.4 High-frequency memory events

通过ftracemm_eventrss_station events,记录短期高频的内存增长情况(仅在Android Q+的版本上可用);

6.5 Low memory killer

记录LMK事件和OOM评分调整情况;

6.6 Per process stats

定期取样系统中所有进程的信息:包括线程列表,内存计数(包括RSSswap/proc/status)和oom_score_adj

6.7 Virtual memory stats

通过定期轮询/proc/vmstat获取虚拟内存数据,包括统计swapevictioncompressionpagecache efficiency数据;

7. Android apps & svcs

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-htj2McBO-1632643440529)(C:\Users\qinji\AppData\Roaming\Typora\typora-user-images\image-20210922141424480.png)]

7.1 Atrace userspace annotations

对应System Tracing中的“类别”,打开这个选项之后,可以选择合适的 atrace tag 开启对应的 Trace ;

7.2 Event log

Event log 可以实时记录 Log,然后将 LogTrace 信息一一对应,非常有利于分析问题;

7.3 Frame timeline

Frame timeline记录从surface_flinger获取到的期望的和实际的帧的情况(仅在Android 12+的版本上可用);

8. Chrome

Chrome 主要用于分析 Webview 相关的性能问题;

9. Advanced Settings

Advanced Settings 可以开启 ftrace,主要用于分析内核性能问题;
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/409987
推荐阅读
相关标签
  

闽ICP备14008679号