当前位置: 首页 > news >正文

Android simpleperf生成火焰图

1、什么是simpleperf

Simpleperf 是 Android 的原生 CPU 分析工具。 它可用于分析 Android 应用程序和在 Android 上运行的本机进程。 它可以在 Android 上分析 Java 和 C++ 代码。 simpleperf 可执行文件可以在 Android >=L 上运行,而 Python 脚本可以在 Android >= N 上使用。

Simpleperf 是 Android 开源项目的一部分。 源代码在这里。 最新的文档在这里。

2、什么是火焰图

火焰图是基于 perf 结果产生的 SVG 图片,用来展示进程在一段时间 CPU 的调用栈。

3、如何使用simpleperf生成火焰图

3.1 使用top命令查看系统中cpu占用比较高的进程

 

c

体验AI代码助手

代码解读

复制代码

Tasks: 265 total, 1 running, 264 sleeping, 0 stopped, 0 zombie Mem: 16777216T total, 16777216T used, 669576K free, 34742272 buffers Swap: 524284K total, 262144 used, 524028K free, 1382884K cached 400%cpu 52%user 0%nice 19%sys 323%idle 0%iow 6%irq 0%sirq 0%host PID USER PR NI VIRT RES SHR S[%CPU] %MEM TIME+ ARGS 334 audioserver 20 0 79M 34M 13M S 45.1 0.9 22:28.34 android.hardware.audio.service-droidlogic 3698 root 20 0 11M 3.4M 2.7M R 16.1 0.0 0:00.07 top -n 5 399 root 20 0 72M 29M 24M S 6.4 0.8 2:31.09 tvserver 3630 root 20 0 0 0 0 I 3.2 0.0 0:12.92 [kworker/3:0-events] 3626 system 30 10 13M 2.8M 2.1M S 3.2 0.0 0:11.76 logcat -b all -v threadtime -v usec -v printable -D -f /data/misc/logd/logcat -r 2048 -n 25+ 3595 root 20 0 0 0 0 I 3.2 0.0 0:06.15 [kworker/1:2-events_freezable] 348 root 20 0 27M 4.6M 3.7M S 3.2 0.1 1:13.28 android.hardware.mcuapimanager@1.0-service 335 system 20 0 20M 5.8M 3.7M S 3.2 0.1 0:13.60 android.hardware.avmanager@1.0-service

3.2 使用simpleperf采集数据

 

c

体验AI代码助手

代码解读

复制代码

//示例中的 " -p 348 " 指的是需要分析的进程号 //" -g " 意味着抓取的数据含有堆栈信息 simpleperf record -p 348 -g --duration 10 -o /mnt/media_rw/sda1/simpleperf_mcu.data

3.3 将simpleperf_mcu.data拷贝到系统源码目录android/system/extras/simpleperf/scripts/

 

c

体验AI代码助手

代码解读

复制代码

cd android/system/extras/simpleperf/scripts/ python report_sample.py simpleperf_mcu.data > simpleperf_mcu_report.data

3.4 从github中获取如下工具

 

c

体验AI代码助手

代码解读

复制代码

git clone https://github.com/brendangregg/FlameGraph.git

3.5 生成火焰图

 

c

体验AI代码助手

代码解读

复制代码

cd FlameGraph ./stackcollapse-perf.pl ../simpleperf_mcu_report.data > simpleperf_mcu_report_fold.data ./flamegraph.pl simpleperf_mcu_report_fold.data > simpleperf_mcu_report_fold.svg 生成的p.svg需要用Google Chrome打开

image.png

作者:哈哈linux
链接:https://juejin.cn/post/7054479045966168077
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

http://www.dtcms.com/a/274353.html

相关文章:

  • 深度解析 DApp 开发:从技术架构到商业落地的全链路解决
  • Linux 进程管理核心机制
  • 掌握Spring声明式事务传播机制:AOP与ThreadLocal的协同工作
  • 破解异构日志清洗五大难题,全面提升运维数据可观测性
  • 用FunctionCall实现文件解析(一):环境准备与基础知识
  • uniapp语音播报天气预报微信小程序
  • 秒杀系统该怎么设计?
  • uniapp-在windows上IOS真机运行(含开发证书申请流程)
  • 在Spring Boot 开发中 Bean 的声明和依赖注入最佳的组合方式是什么?
  • Spring Boot集成Redis:从配置到实战的完整指南
  • Adobe Acrobat DC JavaScript 基础到应用
  • python的卷烟营销数据统计分析系统
  • 重学前端003 --- CSS 颜色
  • 汽车级MCU选型新方向:eVTOL垂桨控制监控芯片的替代选型技术分析
  • 实现在线预览pdf功能,后台下载PDF
  • PDF 转图助手 PDF2JPG 绿色版:免安装直接用,急处理文件的救急小天使
  • 电力分析仪的“双语对话”:CCLinkIE与Modbus TCP的无缝连接
  • 【Unity游戏存档系统】
  • 爬虫练习1
  • 【环境配置】KAG - Windows 安装部署
  • 7.11文件和异常
  • kafka kraft模式升级metadata.version
  • JVM--监控和故障处理工具
  • Oracle 高可用性与安全性
  • SpringCloud【OpenFeign】
  • 数据治理(管理)能力评估——解读2024数据治理与数据管理能力成熟度评估模型【附全文阅读】
  • 10款主流报销管理平台对比及推荐
  • Linux操作系统之进程间通信:命名管道
  • Linux编程练习题1:打印图形
  • python学习DataFrame数据结构