学习AndroidPerfetto基础一

1.哔哩哔哩学习视频:

Android Perfetto 基础和案例分享_哔哩哔哩_bilibili

2.Perfetto的简单介绍

Perfetto 是一个用于性能检测进而追踪分析的生产级开源工具

Perfetto提供上帝视角,背后需要整个Android系统的知识储备

Perfetto由Google开发,2017开始第一笔提交

Perfetto已经全面取代Systrace工具

Perfetto拥有完整的文档:https://perfetto.dev/docs/

系统开发者使用Perfetto来分析系统性能、CPU调度、响应速度、系统流畅行、内存、耗电问题

Perfetto也被用于性能测试、偶然性性能问题抓取、文件批处理、竞品分析等领域

例如:Perfetto - System profiling, app tracing and trace analysis - Perfetto Tracing Docs,可以看到perfetto提供的框架介绍

0

3.如何抓Perfetto

3.1 命令行抓取

实际项目中主要是使用命令行抓取最方便,也是大部分开发者使用最多的方式

adb shell atrace -o /sdcard/systrace.trace -z -b 50000 -t 30 am wm view res ss gfx view hal bionic pm sched irq freq idle disk sync binder_driver binder_lock memreclaim dalvik input 50000:缓冲区的大小,单位是消息数。 30:抓取时间,单位是秒。 导出trace adb pull /sdcard/systrace.trace xxx(文件存放路径) 提供android log,如果有root权限可以同步提供kernel log(dmesg) android log:adb shell logcat > logcat.txt kernel log:adb shell dmesg > dmesg.txt 注:在测试过程中,需要同步抓取trace、android log、kernel log(如果有root),同时备注发生问题的时间点。 抓取命令 adb shell perfetto -t 10s sched freq idle am wm gfx view binder_driver hal dalvik camera input res memory power -o /data/misc/perfetto-traces/trace_file_.perfetto-trace 10:抓取时间,单位是秒 2.导出trace adb pull /data/misc/perfetto-traces/trace_file_.perfetto-trace D:\Download

3.2 手机界面抓取

路径:设置-》开发者选项-》启动系统跟踪

0

3.3 网页端抓取

0

4.Perfetto基本的View介绍

4.1 Slice

表示嵌套、有时间限制的操作。例如一个切片可以覆盖从函数从开始执行到返回的时间段、从网络加载文件所花费的时间。对应代码中的Trace.beginSection/ATRACE_BEGIN记录的事件

例如下图Choreographer#doFrame、animation、traversal都是一个Slice.

0

上下层多个slice也可以看出嵌套的关系,这种嵌套关系,有点像函数调用栈的关系

4.2 Counter

具有随着时间变化值的事件,例如一个轨迹事件可以记录进程执行期间的瞬时内存使用情况。对应代码中Trace.traceCounter/ATRACE_INT记录的事件

0

例如鼠标移动过去显示一个数字7

4.3 Scheduler Slices

调度器切片指示哪个线程在何时被调度到哪个CPU上

0

可以看到基于CPU进行统计,例如上述的大小核

4.4 运行状态

Perfetto上的task都会有CPU state + Slice,分上下两行显示

0

4.5 Matric

Perfetto 预先通过解析脚本解析出来的信息,主要是定制的,下述是荣耀手机上的定制信息

0

4.6 实时计算

实时计算并显示结果到UI,例如我们点下CPU state中的running中的critical path,就会显示如下Thread的调用栈信息

0

5.Expected timeline和ActualTimeline表示App性能

App janks 卡顿分析

0

例如可以快速看下是否很多红色表述的掉帧

0

6. Perfetto上展示logcat信息

0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/943703.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ffmpeg: stream_loop报错 Error while filtering: Operation not permitted

问题描述 执行ffmpeg命令的时候,报错:Error while filtering: Operation not permitted 我得命令如下 ffmpeg -framerate 25 -y -i /data/workerspace/mtk/work_home/mtk_202406111543-l9CSU91H1f1b3/tmp/%08d.png -stream_loop -1 -i /data/workerspa…

快速掌握Elasticsearch检索之二:滚动查询获取全量数据(golang)

Elasticsearch8.17.0在mac上的安装 Kibana8.17.0在mac上的安装 Elasticsearch检索方案之一:使用fromsize实现分页 1、滚动查询的使用场景 滚动查询区别于上一篇文章介绍的使用from、size分页检索,最大的特点是,它能够检索超过10000条外的…

StableAnimator模型的部署:复旦微软提出可实现高质量和高保真的ID一致性人类视频生成

文章目录 一、项目介绍二、项目部署模型的权重下载提取目标图像的关节点图像(这个可以先不看先用官方提供的数据集进行生成)提取人脸(这个也可以先不看)进行图片的生成 三、模型部署报错 一、项目介绍 由复旦、微软、虎牙、CMU的…

【深度学习】Java DL4J基于 CNN 构建车辆识别与跟踪模型

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…

如何在短时间内读懂复杂的英文文献?

当我们拿起一篇文献开始阅读时,就像是打开了一扇通往未知世界的大门。但别急着一头扎进去,咱们得像个侦探一样,带着疑问去探险。毕竟,知识的海洋深不可测,不带点“装备”怎么行?今天就聊聊,平时…

uniapp中Nvue白屏问题 ReferenceError: require is not defined

uniapp控制台输出如下 exception function:createInstanceContext, exception:white screen cause create instanceContext failed,check js stack ->Uncaught ReferenceError: require is not defined 或者 exception function:createInstanceContext, exception:white s…

Elasticsearch:使用 Ollama 和 Go 开发 RAG 应用程序

作者:来自 Elastic Gustavo Llermaly 使用 Ollama 通过 Go 创建 RAG 应用程序来利用本地模型。 关于各种开放模型,有很多话要说。其中一些被称为 Mixtral 系列,各种规模都有,而一种可能不太为人所知的是 openbiollm,这…

SpringBoot(Ⅱ)——@SpringBootApplication注解+自动装配原理+约定大于配置

1. SpringBootApplication注解 SpringBootApplication标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就通过运行这个类的main方法来启动SpringBoot应用; 并且Configuration注解中也有Component注解,所以这个主启动类/主配置类…

指针与数组:深入C语言的内存操作艺术

数组名的理解 在上⼀个章节我们在使⽤指针访问数组的内容时,有这样的代码: int arr[10] {1,2,3,4,5,6,7,8,9,10}; int *p &arr[0]; 这⾥我们使⽤ &arr[0] 的⽅式拿到了数组…

Python的数字类型

python的数字类型包括:整数,浮点数,复数。 整数 python的整数没有长度限制,无限大,有无限的精度 python的整数除法,即便能整除,结果也是小数,小数 在python中用float类型表示&…

【连续学习之SS-IL算法】2021年CPVR会议论文Ss-il:Separated softmax for incremental learning

1 介绍 年份:2021 期刊: 2021CPVR Ahn H, Kwak J, Lim S, et al. Ss-il: Separated softmax for incremental learning[C]//Proceedings of the IEEE/CVF International conference on computer vision. 2021: 844-853. 本文提出的SS-IL&#xff08…

3.BMS系统原理图解读

一、BMS电池板 (1)电池的连接关系:串联 (2)采样控制点:CELL0 - CELL5 (3)端子P1和P3:BAT和BAT- (4)开关S1:控制充放电回路的机械开关 二、BMS控制板 (1)主控MCU 电源 复位 晶振 (2)LED指示灯:4电量指示 1调试指…

洛谷P5250 【深基17.例5】木材仓库(c嘎嘎)

题目链接:P5250 【深基17.例5】木材仓库 - 洛谷 | 计算机科学教育新生态 题目难度:普及/提高 解题心得:本题借鉴了大佬的做法(因为没想多好的处理方法~~),本题可以用map,对于操作1,存的话直接另…

pyqt和pycharm环境搭建

安装 python安装: https://www.python.org/downloads/release/python-3913/ python3.9.13 64位(记得勾选Path环境变量) pycharm安装: https://www.jetbrains.com/pycharm/download/?sectionwindows community免费版 换源: pip config se…

ArcGIS Pro地形图四至角图经纬度标注与格网标注

今天来看看ArcGIS Pro 如何在地形图上设置四至角点的经纬度。方里网标注。如下图的地形图左下角经纬度标注。 如下图方里网的标注 如下为本期要介绍的例图,如下: 图片可点击放大 接下来我们来介绍一下 推荐学习:GIS入门模型构建器Arcpy批量…

深度学习与图像处理(国产深度学习框架——飞桨官方指定教材)

计算机视觉从小白到大师之路 《深度学习与图像处理(PaddlePaddle版)》这一本就够了 1.引言 随着人工智能技术的飞速发展,各行各业对深度学习、图像处理相关领域的人才需求日益迫切。本书旨在通过系统的理论讲解与丰富的实战案例&#xff0…

Bluetooth Spec【0】蓝牙核心架构

蓝牙核心系统由一个主机、一个主控制器和零个或多个辅助控制器组成蓝牙BR/ EDR核心系统的最小实现包括了由蓝牙规范定义的四个最低层和相关协议,以及一个公共服务层协议;服务发现协议(SDP)和总体配置文件要求在通用访问配置文件&a…

代码随想录Day51 99. 岛屿数量,99. 岛屿数量,100. 岛屿的最大面积。

1.岛屿数量深搜 卡码网题目链接(ACM模式)(opens new window) 题目描述: 给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接…

【机器学习与数据挖掘实战】案例06:基于Apriori算法的餐饮企业菜品关联分析

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈机器学习与数据挖掘实战 ⌋ ⌋ ⌋ 机器学习是人工智能的一个分支,专注于让计算机系统通过数据学习和改进。它利用统计和计算方法,使模型能够从数据中自动提取特征并做出预测或决策。数据挖掘则是从大型数据集中发现模式、关联…

突破传统,探索单页网站的强大潜力!

单页网站简单、直接,而且设计通常令人惊叹,非常适合展示关键信息而不会让访问者不知所措。 然而,构建单页网站有其自身的挑战,尤其是在 SEO 方面。由于内容数量有限且针对特定关键字的页面较少,可能很难在 SERP 中进行…