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

Simpleperf 性能工具介绍app_profiler.py -i perf.data

Android-SimplePerf工具浅解_simpleperf的原理-CSDN博客

Simpleperf 工具介绍_simpleperf record-CSDN博客

https://zhuanlan.zhihu.com/p/493733454?utm_id=0

https://zhuanlan.zhihu.com/p/680585194

https://zhuanlan.zhihu.com/p/684969147

Simpleperf 理论与实践指南系列之总结篇 - 知乎

首先simpleperf是NDK自带的工具,一般下载NDK后,可以直接使用。

Simpleperf的用处:

现代CPU具有一个硬件组件,为性能监控单元,简称PMU,具有一些硬件计数器,主要是记录程序的CPU占用,及执行的指令数,以及统计缓存未命中事件的数量。

simpleperf包含三个功能,stat, record以及repor。

stat的作用是统计一个时间段内被分析的执行的进程发生的事件数。

主要进行以下步骤:1. 给定用户选项,通过对linux 内核进行系统调用启用分析。2. 内核在被分析的进程占用时启用计数器。3. 分析结束后,从内核读取计数器,并报告计数摘要。

record的作用主要是记录一个时间段内被分析的执行进程的样本。

主要进行以下步骤: 1. 也是通过对linux内核进行系统调用启动分析。2. 在simpleperf和linux内核之间创建映射缓冲区。3. 内核被调度到分析进程时启动计数器。4. 每次达到了预设定数量的事件发生时,就将样本存储到前面创建的映射缓冲区。4.最后从缓冲区中读取样本并生成perf.data。

report的作用就是从前面得到的perf.data读取数据,分析进程及其调用的其他库中,展示时间消耗热点并输出报告。

tips:编译生成的共享库时,需要去掉-s(strip)编译选项,这样库中可以包含函数符号,这样报告中显示的就是函数名称而不是一些数字!!!

/system/bin/simpleperf record -p 5946 -g --duration 60 -f 999 simpleperf report -i data/perf.data 用 -o 参数,指定输出文件,来解决问题:$ adb shell /data/local/tmp/simpleperf record -p <进程号> --duration <持续时间> -o /sdcard/perf.data python app_profiler.py -p com.tencent.xxx -r "-e cpu-clock -g --duration 60"-o perf.data -lib xxx\Android_ASTC\Game_Symbols_v1\UAGame-arm64

python 脚本(注:脚本被用于使得剖析和解析剖析结果更方便。)
<1> app_profiler.py:被用于剖析一个 android 应用程序。它的主要工作:准备剖析环境、下载 simpleperf 到设备上,在主机上生成并拉出 perf.data 数据文件。( 注:它由 app_profiler.config 配置 )

simpleperf record -p $(ps -ef | grep run_sdk | head -n 1 |awk '{print $2}') --call-graph fp -f 6000 --duration 10 -m 4096 -o /data/local/tmp/out.bin

说明:record就是记录一段时间已分析进程中的时间摘要。

-p一般后面会紧跟进程号。

$(ps -ef | grep run_sdk | head -n 1 |awk '{print $2}') 这句表示的是执行run_sdk,查找其对应的进程号,正好紧跟在-p的后面

--call-graph:设置堆栈展开的方式,包含三种模式(fp, dwarf,lbr)

fp: perf默认采用的方式,需要关闭对堆栈有影响的编译优化(-fno-omit-frame-pointer,-fno-optimize-sibling-calls),否则可能获取不到正确的堆栈信息。

优点:性能消耗小,生成文件小,report速度快。

缺点:不遵守X86Calling convention的函数无法获取堆栈信息,内联函数无法获取堆栈信息。

dwarf:

优点:堆栈信息最详细,内联函数也可以获取堆栈信息。

缺点:性能消耗大,生成文件大,report时间长 。

lbr:

优点:性能消耗极小,堆栈信息非常准确

缺点:需要处理器支持。

-f: 样本数/s

--duration:持续时间 单位s

-m: 如果记录过程中有事件丢失,可以将 -m 的值调大,默认小于等于1024.

-o:指定输出路径

结果可视化

http://www.jsqmd.com/news/472663/

相关文章:

  • C#毕业设计——基于C#+asp.net+SQL server的通用作业批改系统设计与实现(毕业论文+程序源码)——作业批改系统
  • 2026年江苏名酒回收机构推荐榜:名酒 / 老酒 / 虫草回收、上门服务、商家选择指南,盛鑫回收用专业鉴定守护靠谱交易 - 海棠依旧大
  • anaconda常用指令
  • “水莲花数”
  • 2026年成都/自贡/内江/泸州/宜宾/乐山/四川/云南云梯车、高空车、吊车、挖掘机、压路机、铲车租赁市场盘点:如何甄选可靠服务伙伴? - 2026年企业推荐榜
  • Ubuntu 22.04 搭建onlyoffice私服
  • 欧洲智慧零售及无人店铺展代理:好评度高选择策略解析
  • Logstash 项目教程:从零开始构建数据管道
  • ubantu环境初始化
  • 零基础Java第二期:数据类型与变量
  • 2026年3月江苏名酒回收公司选择指南:茅台回收、名酒老酒回收、洋酒红酒回收、虫草回收机构 - 海棠依旧大
  • 英国伯明翰电子烟展门票办理:靠谱合作公司选择的5大核心策略
  • 2026年3月杭州租车公司选择指南:商务、婚车、大巴、考斯特、豪车、旅游包车租车公司推荐 - 海棠依旧大
  • STM32开发入门(一):在 Keil 上新建 Project 工程
  • 数据的存储(原反补码/大小端存储/截断溢出/隐式类型转换/浮点数存储)
  • 老三网址读取
  • 前端反接保护:实用方案解析与探讨
  • 2026年杭州租车服务指南:商务出行、旅游包车、婚车车队及汽车租赁公司选择建议,卓强汽车用十年沉淀护航每一次安心旅程 - 海棠依旧大
  • 【Java实战】Java集成AD域账号登录
  • ES 处理索引数据变动的原理剖析
  • 【OS】进程等待-就绪态分析及原语-事务对比
  • 减速电机 手指气缸 直线导轨规格尺寸图
  • 基于QT对UR3进行开发
  • 河北省雄安新区(马蹄湾村)航空高光谱遥感应用数据集下载
  • 【人工智能】少样本学习/提示(Few-shot Learning/Prompting),这种能力模仿了人类的学习方式,即我们通常不需要大量的例子来学习新事物或识别新的物体
  • 大卫三角形法(canvas)和立体图示法(echarts)实现
  • Kafka 高吞吐量的原因是什么?
  • CCV 开源项目使用教程
  • Kafka 如何调优?
  • go协程奇偶打印和交替打印ABC