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

相关文章

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种

解决1093 - You can‘t specify target table报错问题及原因分析

《解决1093-Youcan‘tspecifytargettable报错问题及原因分析》MySQL1093错误因UPDATE/DELETE语句的FROM子句直接引用目标表或嵌套子查询导致,... 目录报js错原因分析具体原因解决办法方法一:使用临时表方法二:使用JOIN方法三:使用EXISTS示例总结报错原

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期