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

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

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

8192 KB

16384 KB

32768 KB

65536 KB

(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,主要用于分析内核性能问题;
在这里插入图片描述

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android基于Perfetto 是指Android手机操作系统基于Perfetto技术进行性能分析和优化。 Perfetto是一种高效的性能分析工具,它旨在帮助开发者了解和优化Android设备的性能。它提供了一种跨平台的工具集,可以捕获和分析系统和应用程序的性能数据。通过使用Perfetto,开发者可以更深入地了解他们的应用程序的性能状况,并有针对性地进行优化。 Android基于Perfetto主要有以下几个方面的应用。首先,Perfetto可以在设备上收集和记录各种性能数据,如CPU使用率、内存使用情况、网络活动等。这些数据可以帮助开发者分析和定位应用程序中的性能问题,并及时进行优化。其次,Perfetto可以帮助开发者分析系统级别的性能问题,例如系统的响应时间、电池寿命等。通过收集和分析这些数据,开发者可以发现系统级别的性能瓶颈,并提出相应的解决方案。最后,Perfetto还可以与其他调试工具和性能分析工具集成,以提供更全面的性能分析功能。 总的来说,Android基于Perfetto技术可以帮助开发者更好地了解和优化Android设备的性能。它提供了丰富的性能分析功能,帮助开发者更深入地了解应用程序和系统的性能状况,并提供相应的优化建议。通过使用Android基于Perfetto,开发者可以提升应用程序的性能,提供更好的用户体验。 ### 回答2: Android基于Perfetto的意思是Android系统在性能追踪方面采用了Perfetto这一开源工具。Perfetto是一个用于系统级性能追踪的工具套件,旨在帮助开发者识别和解决Android系统中的性能问题。 通过使用Perfetto,开发者可以对Android系统进行详细的性能追踪和分析。Perfetto工具套件提供了一系列用于捕获、提取和可视化性能数据的工具和API。通过这些工具和API,开发者可以收集和分析与CPU、内存、磁盘、网络等相关的性能数据。 Perfetto还为开发者提供了一个可视化的分析界面,用于直观地查看和理解性能数据。开发者可以根据这些数据追踪系统中的性能瓶颈和问题,并采取相应的优化措施。 Android基于Perfetto的使用带来了许多好处。首先,它为开发者提供了一个全面的性能追踪和分析工具,帮助他们更好地理解和解决系统中的性能问题。其次,Perfetto的开源性质使得开发者可以自由地调整和扩展工具套件,以满足特定的需求。 综上所述,Android基于Perfetto的应用使得开发者能够更好地了解和优化系统的性能问题,提高用户体验和系统效率。这对于Android开发者和用户来说都是一个积极的进步。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值