Perfetto 使用 笔记

Android上如何使用perfetto分析systrace 可以编写 Python 脚本来解析和分析 Perfetto trace 数据。Perfetto 提供了 Python API 进行更深层次的数据处理。示例:使用 Perfetto 分析 Systrace 数据。 阅读详情

抓取命令

抓取

adb shell perfetto -o /data/misc/perfetto-traces/trace_file.perfetto-trace -t 10s sched freq idle am wm gfx view binder_driver hal dalvik camera input res memory

导出命令

adb pull /data/misc/perfetto-traces/trace_file.perfetto-trace

打开工具

PerfettoUI

快捷键

可以查看工具栏左侧部分,以下是常用部分:

W:放大
S:缩小
A:左移
D:右移
M:选中当前鼠标点击的时间段

pip to top 功能很实用,可以远距离几项聚合来看。还有搜索功能,知道名称效率更高。

主要内容分类

线程状态

  1. 线程状态
  2. 执行方法

Counter 计数采用部分信息

一个程序里面全局的一个变量值展示,比如在surfaceFlinger的vsync 的部分值

asycn 执行块部分信息

比如ValueAnimator
对应代码
Trace.asyncBegin 和 Trace.asyncTraceEnd

跨进程通讯的发起端与接受端跳转

  1. 同步
    binder transaction
    binder reply

  2. 异步 (binder 有个三角形标记)
    binder transaction async
    binder async rcv

代码中添加trace

fw 添加

工具类路径

system/core/libcutils/include/cutils/trace.h

方法

  1. ATRACE_ALL()
  2. ATRACE_NAME(name)
  3. atrace_begin(mTag, name) 对应宏定义 ATRACE_BEGIN(name)
  4. atrace_end(mTag) 对应宏定义 ATRACE_END()

前两种方法颗粒度较大,要考虑好作用域 (方法或代码块),内部使用 后面两种方法。

  1. ATRACE_INT(mTag, int)
  2. ATRACE_FORMAT(fmt,…)

因为显示的值都是固定的,所以提供了第6个方法,可以动态显示内容,比如时间等,路径framework/native/include/gui/TraceUtils.h

app 中添加

Trace.java
traceBegin
traceEnd

Perfetto使用详解 Perfetto 支持多个平台,包括 Linux、Android 和 Chrome,并提供了用于记录系统级和应用级活动的服务和库、低开销的针对 Native 和 Java 的内存分析工具、可供 SQL 分析跟踪文件的 C++库和 Python 库(Python 基于 C++库),以及基于 Web 可视化方便分析 Trace 文件的 Perfetto UI。快速开始,Android 抓 Trace:可视化工具,Perfetto UI:地址:https://ui.perfetto.dev/ 阅读详情

相关推荐

储能EMS工作原理深度剖析:功率分配与充放电策略的底层逻辑

储能EMS的功率分配与充放电策略,是其智能化的集中体现。功率分配更像一个“执行指挥官”,关注如何将总任务高效、公平、安全地分解到每个士兵(PCS/电池簇);而充放电策略则像“总参谋长”,基于战场情报(市场、电网、自身状态)制定最优的作战计划。AI强化学习策略:让EMS通过与复杂环境不断交互,自主学习最优策略,适应不确定性。数字孪生与仿真:在虚拟空间中提前验证策略,评估风险,实现预防性控制。跨站协同优化:多个储能站的EMS通过云平台协同,参与区域电网甚至跨省市场的联合优化调度。

小帽子的博客 375

Android Binder机制原理(史上最强理解,没有之一)

Binder是Android系统进程间通信(IPC)方式之一

可乐 12万+

霍尔电流传感器在新能源汽车中的应用综述

本文旨在全面剖析霍尔电流传感器在新能源汽车领域的应用现状、技术挑战及发展趋势。通过系统梳理其在电池管理系统、电机控制、车载充电等核心系统的应用场景,深入分析面临的技术瓶颈与创新解决方案,并基于最新技术动向展望未来发展方向,为相关领域的技术创新提供参考依据。

m0_46819860的博客 2259

通过 Perfetto 工具快速定位到audio卡顿杂音/Binder阻塞简单分析

本文主要通过 Perfetto 工具快速定位到audio卡顿杂音位置。并确认导致audio卡顿的大概原因。讲究快速定位,简单分析。

qq_53303957的博客 4721

Unity AR涂涂乐实战:用户上传图片秒变3D模型新皮肤(附完整代码)

本文详细介绍了如何在Unity AR应用中实现用户上传图片动态生成3D模型皮肤的功能,重点讲解了动态创建材质球的技术方案和性能优化策略。通过完整的代码示例,开发者可以学习到多源图片处理、移动端内存管理以及AR场景适配等核心技巧,快速打造高性能的儿童教育类AR应用。

weixin_31509753的博客 370

问题:dpkg-deb: error: paste subprocess was killed by signal (Broken pipe)

 1. 问题:Ubuntu安装软件的过程中出现依赖项的问题 “E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).” 按照指示执行如下两条命令都没有解决问题。 sudo apt-get -f install sudo apt-get --fix-broken ...

gloria_littlechi的博客 2万+

Framework篇 - Binder 线程池

本文源代码基于 Android 7.0。 本文主要分析Binder 线程池以及 Binder线程启动过程。 目录: 概述 分析 总结 1.概述 Android 系统启动完成后,ActivityManager,PackageManager 等各大服务都运行在 systemserver 进程, app 应用需要使用系统服务都是通过 binder 来完成进...

u014294681的博客 5778

Cadence Sigrity PowerDC实战:如何用PCB电热混合仿真解决散热难题(附详细配置步骤)

本文详细介绍了如何利用Cadence Sigrity PowerDC进行PCB电热混合仿真,以解决高功率密度设计中的散热难题。文章通过解析电热耦合原理,并附上详细的配置步骤与实战技巧,指导硬件工程师同步优化电气性能与热管理,从而在设计源头提升产品可靠性与效率。

weixin_29292535的博客 198

深入理解Binder通信原理及面试问题

Binder承担了绝大部分Android进程通信的职责,可以看做是Android的血管系统,负责不同服务模块进程间的通信。在对Binder的理解上,可大可小,日常APP开发并不怎么涉及Binder通信知识,最多就是Service及AIDL的使用会涉及部分Binder知识。Binder往小了说可总结成一句话:一种IPC进程间通信方式,负责进程A的数据,发送到进程B。往大了说,其实涉及的知识还是很多的

happylishang的专栏 1万+

车载以太网SOMEIP入门必看:从服务发现到事件订阅,一次搞懂三种核心通信模式(附报文实例)

本文深入解析车载以太网SOME/IP的三种核心通信模式:服务发现、方法调用和事件订阅,通过真实报文实例和仿真工具演示,帮助开发者快速掌握这一关键技术。文章特别强调服务发现机制的基础作用,并详细介绍了Request/Response与Fire&Forget两种方法调用模式的应用场景,为智能汽车网络通信开发提供实用指南。

weixin_30955617的博客 111

【思考模型框架】前景理论(Prospect Theory),认为人们并不是完全理性的决策者,而是根据一些心理上的偏差来评估选项的价值

前景理论,是一种行为经济学理论。前景理论,描述了人们在不确定条件下如何作出决策。前景理论,认为人们并不是完全理性的决策者,而是根据一些心理上的偏差来评估选项的价值。

奶爸的编程之路,也就一周冷个三天 1643

Binder调试命令

lrwxrwxrwx root root 1970-01-01 08:00 d -> /sys/kernel/debug 具体的进入目录/sys/kernel/debug 实际操作

dk_work的博客 2338

TIA西门子博途V19安装教程及注意事项

TIA西门子博途V19安装教程及注意事项

Robot_PLC_HMI_Automation 1万+

【学习笔记:Perfetto】

Perfetto 是一个用于 Android、Linux 和 Chrome OS 上的系统跟踪器,可以帮助开发人员分析应用程序和系统的性能问题。它提供了丰富的跟踪数据源,包括 CPU、内存、网络和 I/O 等,可以帮助开发人员深入了解系统的内部运行状况。Perfetto 的设计目标是高效、轻量级和可扩展的。它使用了一些先进的技术,如采样器、缓冲区复用和在线分析,以最小化对系统性能的影响。

m0_52481422的博客 1050

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【perfetto分析性能学习笔记】

perfrtto性能分析

q_2474932226的博客 5616

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

必学干货:Perfetto分析native内存泄露实战笔记

在android开发中经常会有需求来分析一些内存问题,比如内存泄露,内存过大等,针对java相关的进程其实内存都还比较好定位,因为大家app开发时候都会经常使用Android Studio抓取hprof内存快照,然后与MAT工具结合起来一起分析定位内存泄露相关的问题。这里使用一个demo来测试,使用在onCreate中进行Bitmap的构造,看看是否可以看到它的一个内存情况。这里就需要看你前面config设置的是哪个进程名字,然后去对应进程中找下面的Heap Profile。

learnframework的博客 1618

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【Camera 性能笔记】六、Perfetto分析及SQL

uninterruptible sleep NON IO 不可中断的休眠,非IO 在等内核锁,通常是低内存导致等待。mem.locked VmLck VmLck代表进程已经锁住的物理内存的大小.锁住的物理内存不能交换到硬盘。mem.rss VmRSS RSS值,这里的值是RssAnon、RssFile和RssShmem的和。oom_score_adj oom_score_adj 当前该进程的OOM Score ADJ值。

Cam_Rxy的博客 1435

性能分析——Perfetto

周一至周五晚上 6点—晚上8点。

lightingstar的博客 657

【Camera 性能笔记】一、perfetto关键操作

flow events : 通常用于binder transaction 到 binder reply之间,可以通过[ 和 ] 进行切换。privot table弹出框中点击edit -> select a cloumn 选择name stack -> add、query。perfetto网站 -> support flag -> privot table -> enable。搜索关键词之后,可以点击f 进行快速显示。如何打开privot table。shift m 永久选中区域。

Cam_Rxy的博客 590

性能优化:手把手教你perfetto抓取直接用chrome浏览器踩坑笔记

上面其实看出,本质上就是下载个tracebox文件,然后执行这个tracebox文件既可以,但是下载这个tracebox文件一般国内网络都不行哈,所以这里可能又会阻碍一批人,不过这里马哥给大家提供一个 ubuntu 64位可以直接执行的文件。最后发现确实模拟器设备用WebUsb方式无法发现设备,原因暂时没有追究,不过尝试实体机手机确实是可以发现的,插上实体手机后就会有相关提示,当然前提需要手机需要开启usb调试相关。点击这种“ADB + WebSocket”方式后,发现有一堆错误提示,无法链接发现设备。

learnframework的博客 1428

Android 系统开发笔记(二)

但是,编译规则中需要条件语句的复杂问题将在Go(在这种语言中,您可以使用高级语言功能,并且可以跟踪条件语句引入的隐式依赖项)中处理,大多数条件语句都会转换为映射属性,其中选择了映射中的某个值并将其附加到顶级属性。每个模块必须有name属性,并且相应值在所有name文件中必须是唯一的,仅有两个例外情况是命名空间和预构建模块中的Android.bp属性值,这两个值可能会重复。Soong 可以让不同目录中的模块指定相同的名称,只要每个模块都在单独的命名空间中声明即可。映射可以包含任何类型的值,包括嵌套映射。

优快云NETVIP的博客 899

Perfetto详细解析

本篇文章主要介绍Perfetto的详细使用,以及各个模块在Perfetto上的表现,如何对手机性能做基本分析,如何判断卡顿等进行解析,后续会出相关的实战文章。

Android系统优化 3万+

Flutter在OpenHarmony上的云笔记应用开发实践

跨平台开发框架Flutter凭借其高性能的Skia渲染引擎和热重载特性,已成为移动应用开发的重要选择。在OpenHarmony生态中,Flutter通过自绘机制确保了UI一致性,同时避免了JavaScript桥接的性能损耗。本文以云笔记应用为例,展示了如何利用Flutter实现复杂数据结构处理、多页面导航和本地存储等核心功能。通过MVC架构设计和单向数据流模式,开发者可以构建高性能的跨平台应用。笔记类应用特别适合验证框架成熟度,其需求涵盖了数据持久化、富文本编辑和实时搜索等典型场景。在OpenHarmony

weixin_33423874的博客 96

Perfetto使用

概述 在 Android 9.0(API级别28)或更高版本的设备上,可以使用 System Tracing 的 System App 在设备上记录系统跟踪 Perfetto 工具是Android下一代全新的统一的 trace 收集和分析框架,可以抓取平台和app的 trace 信息,是用来取代 systrace 的,但 systrace 由于历史原因也还会一直存在,并且 Perfetto 抓取...

Arvin Hu的博客 1万+
上一篇: Android Overlay机制总结
彼天
博客等级 码龄11年 37粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值