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

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.xdnf.cn/news/15181.html

相关文章:

  • 炎热工厂救援:算法打造安全壁垒
  • MS1826+MS9332 4K@30Hz HD4×2视频分割器
  • ## SQLITE:多表(子母表)联合查询【DA_Project笔记】
  • 如何将 iPhone 文件传到 Mac?
  • Python七彩花朵
  • 4万亿英伟达,凭什么?
  • 安全监测预警平台的应用场景
  • Linux 下使用 VS Code 远程 GDB 调试 ARM 程序
  • 探索飞算 JavaAI 进阶:解锁高效Java开发的新维度
  • Selenium 自动化实战技巧【selenium】
  • springboot生成pdf方案之dot/html/图片转pdf三种方式
  • PDF 转图助手 PDF2JPG 绿色版:免安装直接用,急处理文件的救急小天使
  • 技术突破与落地应用:端到端 2.0 时代辅助驾驶TOP10 论文深度拆解系列【第九篇(排名不分先后)】
  • GPT和MBR分区
  • 云蝠智能 VoiceAgent重构企业呼入场景服务范式
  • 重学前端004 --- html 表单
  • 从二维到三维:数字孪生如何重塑UI前端设计
  • 【Git】git的回退功能
  • Flutter优缺点
  • 港科大 NMPC 控制下的高效自主导航!SkyVLN:城市环境无人机视觉语言导航与非线性模型预测控制
  • 哪些因素会影响NMR杂质检测的准确性
  • 全面掌控 Claude Code:命令 + 参数 + 快捷键一文全整理(建议收藏)
  • Linux的基础I/O
  • 如何在 PyCharm 批量调整代码缩进?PyCharm 调整代码格式化和代码缩进的快捷键有哪些?
  • S7-1200 与 S7-300 CPS7-400 CP UDP 通信 Step7 项目编程
  • 最常用的JS加解密场景MD5
  • Vue 3 入门——自学习版本
  • 分布式推客系统全栈开发指南:SpringCloud+Neo4j+Redis实战解析
  • C#事件:从原理到实践的深度剖析
  • 微软语音合成标记语言SSML文档结构和事件(详细文档和实例)