os-android:性能分析工具(systrace,starce,top,iotop)

2023-11-23 11:08

本文主要是介绍os-android:性能分析工具(systrace,starce,top,iotop),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

os-android:性能分析工具(systrace,starce,atrace)

1 超级神器 systrace

Systrace 允许你在系统级别收集和检查设备上运行的所有进程的计时信息。Systrace采集内核、Android系统和应用层的信息,然后生成HTML图像化报告。如果想分析Android系统或者app的问题,首先我们需要抓取Systrace文件分析并找出引起系统卡顿,瞬间就可定位出卡顿的原因。调试Native层的卡顿问题,定制化加些ATRACE标记,找出卡顿原因也轻松。

工具位置:${Android-SDK}\platform-tools\systrace 文档:https://source.android.com/devices/tech/debug/systrace。

systrace集成在Android Device Monitor中,工具位置: Android-SDK\tools\monitor.bat。Android Device Monitor可以进行屏幕截图、dump视图结构和抓取systrace。除了通过Android Device Monitor使用systrace, 也可以直接调用Android-SDK\platform-tools\systrace\systrace.py

1.1 查看支持哪些trace类型

rk3328_box:/ # python systrace.py --list-categories
rk3328_box:/ # py -2 systrace.py --list-categories

1.2 抓trace并输出

rk3328_box:/ # #包含问题现象的,才有分析价值
rk3328_box:/ # py -2 systrace.py -o mynewtrace.html -t 10 audio video network mmc sync sched freq idle am wm gfx view hal

1.3 使用Android-Studio的systrace

Android Studio 3.1以后,DDMS 和 Systrace、Hierarchy Viewer都不用了。
使用Android Profiler替代DDMS 和 Systrace,Layout Inspector 替代Hierarchy Viewer。

1.4 目标板上使用atrace

rk3328_box:/ # atrace -o /data/new_trace.html -t 15 -b 4096 audio video network mmc sync sched
rk3328_box:/ # atrace -t 10 -b 4096 audio video network mmc sync sched

1.5 chrome查看trace

在chrome的地址栏中敲入chrome://tracing/ 然后通过load按钮加载你的trace文件

1.6 代码中添加Trace

#define ATRACE_TAG ATRACE_TAG_GRAPHICS
#include "utils/Trace.h"
ATRACE_CALL();
ATRACE_BEGIN(name);
ATRACE_END();
ATRACE_NAME(name);

2 strace 查看系统调用

strace 是Linux下的调试利器,可以跟踪所有的系统调用,打印系统调用的参数和返回值; strace还可以指定跟踪子线程/子进程,支持多线程程序的调试。Android的底层是Linux操作系统, strace一般固件默认支持。strace本身不依赖于系统,从一个机器拷贝到另一个机器直接能用。strace 依赖三个最基本的库:libc.so, libstdc++.so 和 libm.so。放心使用就是了。

rk3328_box:/ # strace  -h
Filtering:-e expr        a qualifying expression: option=[!]all or option=[!]val1[,val2]...options:    trace, abbrev, verbose, raw, signal, read, write, fault-P path        trace accesses to pathTracing:-b execve      detach on execve syscall-D             run tracer process as a detached grandchild, not as parent-f             follow forksrk3328_box:/ # ps -A | grep mediaserver
rk3328_box:/ # strace -f -p 6605
rk3328_box:/ # strace -f -p `ps -A | grep mediaserver | awk '{print $2}'`rk3328_box:/ # ps -A | grep surface | awk '{print $2}'
rk3328_box:/ # strace -f -p 21962
rk3328_box:/ # strace -f -tt -T -p <pid>
rk3328_box:/ # strace -p <pid> -c

3 top 和 iotop 分析程序性能

rk3328_box:/ # top -m 10
rk3328_box:/ # iotop -m 10

这篇关于os-android:性能分析工具(systrace,starce,top,iotop)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/417488

相关文章

Java的"伪泛型"变"真泛型"后对性能的影响

《Java的伪泛型变真泛型后对性能的影响》泛型擦除本质上就是擦除与泛型相关的一切信息,例如参数化类型、类型变量等,Javac还将在需要时进行类型检查及强制类型转换,甚至在必要时会合成桥方法,这篇文章主... 目录1、真假泛型2、性能影响泛型存在于Java源代码中,在编译为字节码文件之前都会进行泛型擦除(ty

使用Java编写一个字符脱敏工具类

《使用Java编写一个字符脱敏工具类》这篇文章主要为大家详细介绍了如何使用Java编写一个字符脱敏工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、字符脱敏工具类2、测试工具类3、测试结果1、字符脱敏工具类import lombok.extern.slf4j.Slf4j

Android 实现一个隐私弹窗功能

《Android实现一个隐私弹窗功能》:本文主要介绍Android实现一个隐私弹窗功能,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 效果图如下:1. 设置同意、退出、点击用户协议、点击隐私协议的函数参数2. 《用户协议》、《隐私政策》设置成可点击的,且颜色要区分出来res/l

使用Python开发Markdown兼容公式格式转换工具

《使用Python开发Markdown兼容公式格式转换工具》在技术写作中我们经常遇到公式格式问题,例如MathML无法显示,LaTeX格式错乱等,所以本文我们将使用Python开发Markdown兼容... 目录一、工具背景二、环境配置(Windows 10/11)1. 创建conda环境2. 获取XSLT

Android实现一键录屏功能(附源码)

《Android实现一键录屏功能(附源码)》在Android5.0及以上版本,系统提供了MediaProjectionAPI,允许应用在用户授权下录制屏幕内容并输出到视频文件,所以本文将基于此实现一个... 目录一、项目介绍二、相关技术与原理三、系统权限与用户授权四、项目架构与流程五、环境配置与依赖六、完整

Android 12解决push framework.jar无法开机的方法小结

《Android12解决pushframework.jar无法开机的方法小结》:本文主要介绍在Android12中解决pushframework.jar无法开机的方法,包括编译指令、框架层和s... 目录1. android 编译指令1.1 framework层的编译指令1.2 替换framework.ja

Android开发环境配置避坑指南

《Android开发环境配置避坑指南》本文主要介绍了Android开发环境配置过程中遇到的问题及解决方案,包括VPN注意事项、工具版本统一、Gerrit邮箱配置、Git拉取和提交代码、MergevsR... 目录网络环境:VPN 注意事项工具版本统一:android Studio & JDKGerrit的邮

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

慢sql提前分析预警和动态sql替换-Mybatis-SQL

《慢sql提前分析预警和动态sql替换-Mybatis-SQL》为防止慢SQL问题而开发的MyBatis组件,该组件能够在开发、测试阶段自动分析SQL语句,并在出现慢SQL问题时通过Ducc配置实现动... 目录背景解决思路开源方案调研设计方案详细设计使用方法1、引入依赖jar包2、配置组件XML3、核心配

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见