理解和使用systrace

用手机抓取Systrace方法教程 和你一起终身学习,这里是程序员Android经典好文推荐,通过阅读本文,您将收获以下知识点:一、手机端打开Systrace方法二、System Traceing的主要功能三、Systrace 的抓取方法四、Systrace 的打开方法五、Sytrace 转换成html 的方法一、手机端打开Systrace方法Systrace 是研发人员用来分析手机卡顿等性能问题的Log,那么如何在手机端抓取Sys... 阅读详情

理解和使用systrace。

一、介绍systrace

systrace是Android4.1版本之后推出的,对系统Performance分析的工具。

systrace的功能包括跟踪系统的I/O操作、内核工作队列、CPU负载以及Android各个子系统的运行状况等。在Android平台中,它主要由3部分组成:

  • 内核部分:Systrace利用了Linux Kernel中的ftrace功能。所以,如果要使用systrace的话,必须开启kernel中和ftrace相关的模块。
  • 数据采集部分:Android定义了一个Trace类。应用程序可利用该类把统计信息输出给ftrace。同时,Android还有一个atrace程序,它可以从ftrace中读取统计信息然后交给数据分析工具来处理。
  • 数据分析工具:Android提供一个systrace.py(python脚本文件,位于Android SDK目录/sdk/platform-tools/systrace中,其内部将调用atrace程序)用来配置数据采集的方式(如采集数据的标签、输出文件名等)和收集ftrace统计数据并生成一个结果网页文件供用户查看。

二、抓取systrace

有三种方式抓取systrace:

2.1 systrace.py工具

命令行的用法是:

      
1
      
python systrace.py [options] [category1] [category2] ... [categoryN]

需要装python,最好是2.7版本,避免出现问题,示例如下:

      
1
2
      
cd android-sdk/platform-tools/systrace
python systrace.py --time=10 -o mynewtrace.html sched gfx view wm

2.1.1 options

其中options可取值:

options 描述
-o < FILE > 输出的目标文件
-t N, –time=N 执行时间,默认5s
-b N, –buf-size=N buffer大小(单位kB),用于限制trace总大小,默认无上限
-k < KFUNCS >,–ktrace=< KFUNCS > 追踪kernel函数,用逗号分隔
-a < APP_NAME >,–app=< APP_NAME > 追踪应用包名,用逗号分隔
–from-file=< FROM_FILE > 从文件中创建互动的systrace
-e < DEVICE_SERIAL >,–serial=< DEVICE_SERIAL > 指定设备
-l, –list-categories 列举可用的tags

2.1.2 category

其中category可取值:

category 描述
gfx Graphics
input Input
view View System
webview WebView
wm Window Manager
am Activity Manager
sm Sync Manager
audio Audio
video Video
camera Camera
hal Hardware Modules
app Application
res Resource Loading
dalvik Dalvik VM
rs RenderScript
bionic Bionic C Library
power Power Management
sched CPU Scheduling
irq IRQ Events
freq CPU Frequency
idle CPU Idle
disk Disk I/O
mmc eMMC commands
load CPU Load
sync Synchronization
workq Kernel Workqueues
memreclaim Kernel Memory Reclaim
regulators Voltage and Current Regulators

2.2 Device Monitor(DDMS)

可以使用Eclipse或者Android Studio集成开发工具,切换到DDMS,点击devices,点击Systrace按钮:


ddms-capture-systrace.png

补充说明:

  • Destionation file :trace输出的文件路径
  • Trace duration : 配置抓取systrace的时间,通常设置5秒,并在5秒内重现问题,时间太短会导致问题重现时没有被抓到,时间太长会导致Java Heap不够而无法保存,因此在能抓到问题点的情况下,时间越小越好。
  • Trace Buffer Size : Buffer Size是存储systrace的size,同样的,太小会导致信息丢失,时间太长会导致Java Heap不够而无法保存,建议20480。
  • Enable Application Traces from :如果用户有自己在应用程序中加入自己的systrace log:
    Trace.beginSection("newInstance"); Trace.endSection();
    那么此处必须选择这个应用对应的进程名字,否则新加的systrace log不会被抓到。

三、自定义systrace

有时候为了debug方便,那么我们需要自己在apk或者framework层添加trace信息:

3.1 app层

app可以使用:

      
1
2
3
      
import android.os.Trace;
Trace.beginSection(String sectionName)
Trace.EndSection()

然后通过python systrace.py --app=sectionName 指定apk,或者通过ddms选择指定apk,抓取systrace分析。

3.2 Java framework层

Java Framework可以使用:

      
1
2
3
      
import android.os.Trace;
Trace.traceBegin(long traceTag, String methodName)
Trace.traceEnd(long traceTag)

抓取systrace分析。

3.3 Native framework层

Native Framework可以使用:最好在函数开头声明定义

      
1
2
      
#include <cutils/trace.h>
ATRACE_CALL()

抓取systrace分析。

四、分析systrace

Google Chrome浏览器可以打开systrace,如果打不开,可以通过chrome://tracing/,然后load systrace。

以分析UI Performance为例:

4.1 Frame

每个应用都有一行专门显示frame,每一帧就显示为圆圈,正常绘制是1秒60帧,大约一帧16.6毫秒,在这个值以下是正常颜色绿色,如果超过它就会变成红色、黄色。非绿色的都说明有问题。这时需要通过’w’键放大那一帧,然后按‘m’键高亮,进一步分析问题。

对于Android 5.0(API level 21)或者更高的设备,该问题主要聚焦在UI Thread和Render Thread这两个线程当中。对于更早的版本,则所有工作在UI Thread。

systrace-fenxi.png

4.2 Alerts

Systrace能自动分析trace中的事件,并能自动高亮性能问题作为一个Alerts,建议调试人员下一步该怎么做。

比如对于丢帧是,点击黄色或红色的Frames圆点便会有相关的提示信息;另外,在systrace的最右上方,有一个Alerts tab可以展开,这里记录着所有的的警告提示信息。

五、快捷操作

5.1 导航操作

导航操作 作用
w 放大,[+shift]速度更快
s 缩小,[+shift]速度更快
a 左移,[+shift]速度更快
d 右移,[+shift]速度更快

5.2 快捷操作

常用操作 作用
f 放大当前选定区域
m 标记当前选定区域
v 高亮VSync
g 切换是否显示60hz的网格线
0 恢复trace到初始态,这里是数字0而非字母o
一般操作 作用
h 切换是否显示详情
/ 搜索关键字
enter 显示搜索结果,可通过← →定位搜索结果
` 显示/隐藏脚本控制台
? 显示帮助功能

对于脚本控制台,除了能当做记事本的功能,目前还不清楚有啥功能,或许还在开发中。

5.3 模式切换

  • Select mode: 双击已选定区能将所有相同的块高亮选中;(对应数字1)
  • Pan mode: 拖动平移视图(对应数字2)
  • Zoom mode:通过上/下拖动鼠标来实现放大/缩小功能;(对应数字3)
  • Timing mode:拖动来创建或移除时间窗口线。(对应数字4)

可通过按数字1~4,用于切换鼠标模式; 另外,按住alt键,再滚动鼠标滚轮能实现放大/缩小功能。

Reference:

原文地址: http://maoao530.github.io/2017/02/06/systrace/

1-性能分析-android-systrace systrace是Android4.1版本之后推出的,对系统Performance分析的工具。可帮助开发者收集 Android 关键子系统(如 SurfaceFlinger/SystemServer/Kernel/Input/Display 等 Framework 部分关键模块、服务,View系统等)的运行信息,从而帮助开发者更直观的分析系统瓶颈,改进性能。systrace的功能包括跟踪系统的I/O操作、内核工作队列、CPU负载以及Android各个子系统的运行状况等。在Android平台中, 阅读详情

相关推荐

Android 内存分析工具集【7】Android Systrace

本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容: 一、Systrace 简介 二、Systrace 使用方法 三、使用命令行抓取 Systrace 四、使用Systrace 检测UI 性能 五、使用Systrace 检测警告以及掉帧问题 六、查看trace 文件的快捷键 七、代码中添加trace 标记具体分析问题所在 八、使用TraceView 分析trace Log 一、Systrace 简介 Systrace 允许你收集和检查设备上运行的所有进程的计时

蚁人日记 3271

Systrace抓取

Trace的X轴表示时间,Y轴以进程进行分组,进程组内是各个线程,可以收缩和展开。每个应用进程包含每个线程所包含的所有跟踪标记,包括基于启用跟踪类别的高级跟踪事件的层次结构。打开谷歌浏览器, 在Chrome浏览器的地址栏中输入 chrome://tracing,点击Load选择需要的trace文件即可。使用使用android自带的抓取trace的方法,这种方法适用于抓取长trace,最长支持30分钟,但是可能会影响性能。d.下拉状态栏点击“系统跟踪”图块,即可开始抓取,再次点击图块即可停止抓取;

xxdw1992的博客 3372

Systrace分析知识点

和你一起终身学习,这里是程序员Android经典好文推荐,通过阅读本文,您将收获以下知识点:一、抓取Systrace二、CPU模块知识点三、input 点击事件处理流程四、Vsync 事件处理五、Android 绘制一帧流程分析六、Camx Trace TAG开启方法七、参考文献一、抓取Systrace1.1 使用手机抓取使用Google 预留的开发者模式中的 系统跟踪 功能抓取systrace。...

程序员Android 1524

【用法总结】Systrace使用基础

一、systrace基本介绍被弃用了?二、快捷键用法二、systrace命令用法三、systrace报告怎么看?3.1 CPU调度信息3.2 线程状态信息3.2.1 绿色 : 运行中(Running)3.2.1 蓝色:Runanble状态3.2.1 白色:Sleeping状态3.2.1 橘色:不可中断的睡眠态 (Uninterruptible Sleep - IO Block)3.2.1 紫色 : 不可中断的睡眠态(Uninterruptible Sleep)3.4 帧率信息3.5 应用启动耗时分析。

TechMix的博客 8777

Systrace系列1—— 简介

Systrace 是 Android4.1 中新增的性能数据采样和分析工具。它可帮助开发者收集 Android 关键子系统(如 SurfaceFlinger/SystemServer/Kernel/Input/Display 等 Framework 部分关键模块、服务,View系统等)的运行信息,从而帮助开发者更直观的分析系统瓶颈,改进性能。Systrace 的功能包括跟踪系统的 I/O 操作、内核工作队列、CPU 负载以及 Android 各个子系统的运行状况等。内核部分。

tectrol的专栏 825

Systrace系列2 —— 预备知识

本文主要是讲解一些分析 Systrace 的预备知识, 主要bao'ku如何查看 Systrace 中的线程状态 , 如何对线程的唤醒信息进行分析, 如何解读信息区的数据, 以及介绍了常用的快捷键. 通过本篇文章的学习, 相信你可以掌握进程和线程相关的一些信息, 也知道如何查看复杂的 Systrace 中包含的关键信息。

tectrol的专栏 677

理解和使用 systrace

1. 概述 systrace 是 android4.1 中新增的性能数据采集和分析工具,它可帮助开发者收集 Android 关键子系统(如 SurfaceFlinger、WindowManagerService、Framework关键模块、服务、View系统等)的运行信息,从而帮助开发者更直观的分析系统瓶颈,改进性能。 systrace 允许你监视和跟踪 android 系统的行为,它会告诉你系统...

岁月斑驳7的博客 3379

python 用到的systrace.py

python 用到的systrace.py

filament中systrace的使用

systrace是android提供性能检测工具,介绍和用法参考https://blog.youkuaiyun.com/vicwudi/article/details/100191529。这里主要记录filament渲染引擎底层使用systrace进行检测的用法。filament/libs/utils/include/utils/Systrace.h中定义了systrace 的宏用法。 SYSTRACE_ENABLE,启用systrace功能; SYSTRACE_DISABLE禁用systrace功能。...

wang371372的专栏 439

ArcGIS Maps SDK for Unity实战:把真实世界地形‘搬进’游戏场景的保姆级教程

本文详细介绍了如何使用ArcGIS Maps SDK for Unity将真实世界地形导入游戏场景的完整流程。从高程数据获取、TPKX格式转换到Unity中的地形集成与优化,提供了保姆级教程,帮助开发者快速实现高精度地形建模,特别适用于开放世界游戏和数字孪生项目。

weixin_30621465的博客 345

GPU基准测试全攻略:从驱动验证到深度学习环境部署

GPU基准测试是评估显卡性能与稳定性的核心方法,其原理在于通过标准化负载程序,对GPU的计算单元、显存和散热系统进行压力测试。这项技术的价值在于,它能科学量化硬件性能,确保软件环境配置正确,为深度学习、科学计算等重负载任务提供稳定基础。在实际应用场景中,无论是新卡验机、排查深度学习环境问题(如“warning: no usable gpu found”报错),还是验证“PyTorch GPU版本安装”后的实际算力,系统的基准测试都是不可或缺的工程实践环节。通过结合通用计算测试与深度学习框架验证,用户可以提前

weixin_30080745的博客 342

android studio systrace,Android Systrace 基础知识 -- Systrace 简介

本文是 Systrace 系列文章的第一篇,主要是对 Systrace 进行简单介绍,介绍其简单使用方法;如何去看 Systrace;如何结合其他工具对 Systrace 中的现象进行分析。本系列的目的是通过 Systrace 这个工具,从另外一个角度来看待 Android 系统整体的运行,同时也从另外一个角度来对 Framework 进行学习。也许你看了很多讲 Framework 的文章,但是总...

weixin_39999781的博客 1634

IMU660RA姿态解算实战:从传感器滤波到欧拉角输出的完整实现

本文详细介绍了IMU660RA姿态解算的完整实现过程,从传感器滤波到欧拉角输出。通过实战案例和代码示例,展示了如何有效处理陀螺仪和加速度计的噪声问题,并选择合适的算法进行数据融合和姿态解算。特别强调了欧拉角输出中的坐标系对齐和动态补偿技巧,帮助工程师快速掌握IMU660RA的应用。

weixin_42524762的博客 386

Android Systrace 基础知识(10) - Binder 和锁竞争解读

本文是 Systrace 系列文章的第十篇,主要是对 Systrace 中的 Binder 和锁信息进行简单介绍,简单介绍了 Binder 的情况,介绍了 Systrace 中 Binder 通信的表现形式,以及 Binder 信息查看,SystemServer 锁竞争分析等 本系列的目的是通过 Systrace 这个工具,从另外一个角度来看待 Android 系统整体的运行,同时也从另外一个角度来对 Framework 进行学习。也许你看了很多讲 Framework 的文章,但是总是记不住代码,或者不清

qq_25815655的博客 1149

ubuntu安装hodoop详细步骤

进入到Ubuntu系统中打开桌面,点击鼠标右键打开终端,在终端中输入如下命令这样就可以创建一名为hadoop的新用户。给用户输设置密码输入,输入如下命令,设置密码,按提示输入两次然后为hadoop用户增加管理员全新,这样就可以方便部署完成之后输入重启命令,重启一下Ubuntu系统,然后登录到我们创建的hadoop用户上面reboot。

2301_77603488的博客 9198

Neurocomputing 投稿指南

Generation Information:选择论文所属领域。上传附件(利益声明,手稿,摘要)审稿人偏好:可以选择期待的审稿人。

qq_41174671的博客 2万+

Systrace之 input 解读

和你一起终身学习,这里是程序员 Android 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容: 一、input 概述 二、input in Systrace 三、关键知识点和流程 四、Input 刷新与 Vsync 五、Input 调试信息 一、input 概述 在Android 基于 Choreographer 的渲染机制详解 这篇文章中,我有讲到,Android App 的主线程运行的本质是靠 Message 驱动的,这个 Message 可以是

程序员Android 822

YOLOv10精度上不去?QAT量化感知训练全流程,INT8推理mAP只掉0.8%

普通PTQ量化虽简单,但无法应对YOLOv10的小目标特征和激活分布波动,导致精度暴跌。QAT通过“模拟量化误差+联合优化权重与量化参数”,让INT8模型精度接近FP16,同时速度提升1.8倍,完美适配实时检测场景(如安防监控、自动驾驶)。该流程已在工业级项目中验证,针对YOLOv10的优化策略(敏感层保护、小目标加权、分阶段训练)可直接迁移至其他YOLO系列(v8/v9),量化后精度损失均可控制在1%以内。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 915

Systrace1 简介

一 概述 本文是 Systrace 系列文章的第一篇,主要是对 Systrace 进行简单介绍,介绍其简单使用方法;如何去看 Systrace;如何结合其他工具对 Systrace 中的现象进行分析。 本系列的目的是通过 Systrace 这个工具,从另外一个角度来看待 Android 系统整体的运行,同时也从另外一个角度来对 Framework 进行学习。也许你看了很多讲 Framework 的文章,但是总是记不住代码,或者不清楚其运行的流程,也许从 Systrace 这个图形化的角度,你可以理解的更深入

liuwg1226的专栏 393

基于工作流的低代码AI应用开发:Flock平台核心架构与实战指南

在AI应用开发领域,工作流编排正成为连接大语言模型(LLM)能力与复杂业务逻辑的关键技术。其核心原理是将任务分解为模块化节点,通过可视化方式定义执行顺序与数据流向,从而实现灵活可控的自动化流程。这种范式极大地提升了开发效率,降低了技术门槛,使得开发者能够聚焦于业务设计而非底层代码。在技术价值层面,工作流编排支持检索增强生成(RAG)、多智能体协作等高级模式,并能通过人工干预节点确保关键流程的可靠性与合规性。其典型应用场景包括智能客服、自动化办公、数据分析助手等。本文以Flock平台为例,深入解析了如何利用其

weixin_26848497的博客 381

后仿真中《SDF反标必懂连载篇》之 Negative Delay (理论篇)

今天,学习一下SDF文件中的负数延时问题。比如下面的图片中的SETUPHOLD 中的hold time 为负数。

那么菜的博客 2572

Systrace 流畅性实战 1 :了解卡顿原理

当我们说 流畅度 的时候,我们说的是什么?不同的人对流畅性(卡顿掉帧)有不同的理解,对卡顿阈值也有不同的感知,所以有必要在开始这个系列文章之前,先把涉及到的内容说清楚,防止出现不同的理解,...

Gracker的专栏 1750

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Systrace 之 CPU info解读

和你一起终身学习,这里是程序员 Android 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容: 一、CPU 区域图例 二、CPU 核心架构 三、绑核 四、锁频 五、CPU 状态 六、Systrace 中的详细信息 一、CPU 区域图例 下面是高通骁龙 845 Systrace 对应的 CPU Info 区域(底下的一些这里不讲,主要是讲 Kernel CPU 信息) Systrace 中 CPU Info 一般在最上面,里面经常会用到的信息包括: CPU

程序员Android 3085

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Systrace 学习笔记

和你一起终身学习,这里是程序员Android经典好文推荐,通过阅读本文,您将收获以下知识点:一、Systrace 简介二、Systrace 预备知识三、Why 60 fps四、System...

程序员Android 1686

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

android system_server中的dump_Android Systrace 基础知识(4) SystemServer 解读

本文是 Systrace 系列文章的第四篇,主要是对 SystemServer 进行简单介绍,介绍了 SystemServer 中几个比较重要的线程,由于 Input 和 Binder 比较重要,所以单独拿出来讲,在这里就没有再涉及到。本系列的目的是通过 Systrace 这个工具,从另外一个角度来看待 Android 系统整体的运行,同时也从另外一个角度来对 Framework 进行学...

weixin_33601398的博客 318

抓开机systrace

可参考原生atrace service修改: /system/etc/init/atrace.rc on property:persist.debug.atrace.boottrace=1 start boottrace # Run atrace with the categories written in a file #service boottrace /system/bin/atrace --async_start -f /data/misc/boottrace/categories...

PefectWorld的博客 979
上一篇: Binder实用指南(二) - 实战篇
下一篇: 如何调试Android Native Framework
Omni-Space
博客等级 码龄11年 2158粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值