simpleperf介绍

Simpleperf是Android平台的一个native层性能分析工具。它的命令行界面支持与linux-tools perf大致相同的选项,但是它还支持许多Android特有的改进。

simpleperf原理

CPU具有一个硬件组件,称为性能监控单元(PMU)。PMU具有一些硬件计数器,计数一些诸如 经历了多少次CPU周期,执行了多少条指令,或发生了多少次缓存未命中 等的事件。

Linux内核将这些硬件计数器包装到硬件perf事件 (hardware perf events)中。此外,Linux内核还提供了独立于硬件的软件事件和跟踪点事件。Linux内核通过 perf_event_open 系统调用将这些都暴露给了用户空间,这正是simpleperf所使用的机制。

简单说,simpleperf的工作原理就是根据的设置的频率进行采样,在CPU上(每个核上都有)产生一个中断,中断到来时记录当前CPU正在运行哪个进程的哪个函数。最终的结果是一个统计量,记录的是一段时间内某个函数被击中的次数百分比,百分比越大说明这段时间这个函数占用的cpu资源越多。

simpleperf功能

使用simpleperf list 命令列出当前所有可用的事件

simpleperf使用

simpleperf的使用分为两步:

1. 记录事件

2. 生产分析报告

使用方式也分为两种:

1. 命令行方式

2. python脚本方式

pythony脚本与simpleperf工具存在于android的ndk中,且相同目录,可以通过locate来定位本地的simpleperf所在目录。

~/bin/android-ndk-r20/simpleperf

reference:

simpleperf record --help

simpleperf report --help

https://android.googlesource.com/platform/system/extras/+/master/simpleperf/doc/README.md

https://android.googlesource.com/platform/system/extras/+/master/simpleperf/doc/android_application_profiling.md

举例:

 命令行方式记录事件

simpleperf record -p 829 -o /data/local/tmp/perf.data -e cpu-cycles:u -f 1000 --duration 10 --call-graph dwarf --post-unwind               or

simpleperf record --app com.android.settings -o /data/local/tmp/perf.data -e cpu-cycles:u -f 1000 --duration 10 --call-graph dwarf --post-unwind

命令行方式生产分析报告

simpleperf report -i /data/local/tmp/perf.data --children -g caller > /data/local/tmp/perfdata

pythony脚本记录事件

python app_profiler.py -p mediacenter

python app_profiler.py --pid xxx

pythony脚本生产分析报告

python report.py   or
python report_html.py

参考

Linux perf Examples

CPU Flame Graphs

https://hotttao.github.io/2020/01/04/linux_perf/04_perf/

android simpleperf工具介绍相关推荐

  1. android studio开发工具介绍,Android应用开发之Android开发工具介绍、Android Studio配置...

    本文将带你了解Android应用开发之Android开发工具介绍.Android Studio配置,希望本文对大家学Android有所帮助. 2.1   Android Studio配置 2.1.1 ...

  2. Android开发工具介绍

    AndroidSDK:Android standard develop kits 安卓开发的工具集 目前主流的安卓开发工具: 1.Adnroid-Adt-bundle SDKManager.exe:  ...

  3. Android Studio CPU profiler性能分析工具介绍和使用详解

    Android Studio CPU profiler性能分析工具介绍和使用详解 CPU profiler介绍 Android Studio CPU 性能剖析器可实时检查应用的 CPU 使用率和线程活 ...

  4. Android系统性能调优工具介绍

    经作者授权,发表Tieto某青年牛的一篇<程序员>大作. Android系统性能调优工具介绍 在软件开发过程中,想必很多读者都遇到过系统性能问题.而解决系统性能问题的几个主要步骤是: 测评 ...

  5. 几个常见的Android多渠道打包工具介绍

    Android项目开发完,多途径打包是必不可少的环节.其原理在于,通过在Android安卓包中增加不同的标识,区别各个途径下载来源,用于计算App在不同使用市场或途径合作中的各项数据. 工欲善其事,必 ...

  6. Android逆向工具简单介绍

    目录 一.Android逆向概述 1.什么是Android逆向 2.逆向过程 3.逆向用途 1)APP自动化执行程序脚本 2)修改APP的功能 3)APP安全 二.常用逆向工具介绍 1.APP抓包工具 ...

  7. Android手机自动化测试工具介绍

    1. Monkey Runner 1.1 什么是Monkey Runner? Monkey Runner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和 ...

  8. android 测试工具,Android开源项目第四篇:开发及测试工具篇

    本文为那些不错的Android开源项目第四篇--开发工具篇,**主要介绍Android开发工具和测试工具相关的开源项目**. Android开源项目系列汇总已完成,包括: 1.Buck faceboo ...

  9. qpython3调用adb_Python实现的基于ADB的Android远程工具

    Python实现的基于ADB的Android远程工具,本工具为原创,涉及知识: - Python编程 - Tkinter GUI编程 - ADB通信机制 代码全文: #!/usr/bin/env py ...

最新文章

  1. !aspxpages(即!dumphttpcontext)命令输出的解释
  2. [CoolStuff]有趣的Zumobi
  3. Pinging ? with 32 bytes of data 故障解决
  4. iOS UIButton 图片文字上下垂直布局 解决方案
  5. 跨网段实现内网互通_【供暖站组网】冠航SD-LAN助力河北石家庄市30个供暖站异地组网实现内网互联互通...
  6. deepin终端配置为英文
  7. python散点图显示数据_Python数据可视化——散点图
  8. 浅谈嵌套命名实体识别(Nested NER)
  9. js控制 html.textboxfor,javascript - Html.TextBoxFor regex is not working - Stack Overflow
  10. android 动态生成fragment,Android动态加载fragment(fragment复用)
  11. java项目log4j_java项目测试log4j
  12. activemq java 重发_java – 无法让ActiveMQ重新发送我的消息
  13. 程序员1年经验包装成5年,转正时领导:试用期不想过了?
  14. 大数据时代,新起的数据有哪几种模型
  15. es搜索准实时的理解
  16. 使用 matlab 数字图像处理(十)—— 维纳滤波复原
  17. 【转】Sql递归查询
  18. 哈哈哈,这个勒索软件笑死我了!太菜了~
  19. linux识别罗兰声卡,罗兰UA22 USB音频接口声卡调试介绍篇
  20. Windows任务栏图标变白解决方案

热门文章

  1. win10 查看计算机名称与用户名称
  2. 小程序运营打包 遇到找不到game.json
  3. keyshot手机渲染教程_keyshot渲染教程
  4. 软工1816 · 作业(十一)事后诸葛亮
  5. 游戏引擎除了开发游戏还能做什么?
  6. 【程序员思维修炼】读书笔记
  7. STM8L051的硬件I2C调试
  8. 微信小程序 修改 radio 默认 样式
  9. 鸿蒙基于linux系统,鸿蒙操作系统(HarmonyOS)是基于Linux的吗?尽管已知道它是基于微内核的...
  10. oracle的rollup操作---按照小组进行分组,同时求总计