Android16之命令atrace用法实例(二百六十七)

简介: CSDN博客专家、《Android系统多媒体进阶实战》作者

博主新书推荐:《Android系统多媒体进阶实战》🚀
Android Audio工程师专栏地址:Audio工程师进阶系列原创干货持续更新中...... 】🚀
Android多媒体专栏地址:多媒体系统工程师系列原创干货持续更新中...... 】🚀
推荐1:AAOS车载系统+AOSP14系统攻城狮入门视频实战课 🚀
推荐2:Android14 Binder之HIDL与AIDL通信实战课 🚀
推荐3:Android15快速自定义与集成音效实战课 🚀
推荐4:Android15音频策略实战课 🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
更多原创,欢迎关注:Android系统攻城狮

🍉🍉🍉文章目录🍉🍉🍉

      • [🌻1. 前言](#🌻1. 前言)
      • [🌻2. Android16 atrace 系统跟踪命令顺序介绍](#🌻2. Android16 atrace 系统跟踪命令顺序介绍)
      • [🌻3. 代码实例](#🌻3. 代码实例)
        • [🌻3.1 收集10秒图形与输入事件](#🌻3.1 收集10秒图形与输入事件)
        • [🌻3.2 查看冷启动阶段锁竞争](#🌻3.2 查看冷启动阶段锁竞争)
        • [🌻3.3 持续抓取直至手动停止](#🌻3.3 持续抓取直至手动停止)
      • [🌻3.4 atrace 命令总结](#🌻3.4 atrace 命令总结)

🌻1. 前言

本篇目的:Android16之命令atrace用法实例

🌻2. Android16 atrace 系统跟踪命令顺序介绍

atrace是Android平台内置的系统级跟踪工具,最早随Jelly Bean引入,用于以几乎零开销的方式收集内核ftrace与用户空间trace事件。进入Android16后,atrace在AOSP build/envsetup.sh中被封装为可直接在主机端调用的shell函数,使开发者无需记忆复杂长命令即可对真机或模拟器进行性能剖析。工具首先依赖adb与设备端atrace可执行文件,当用户在主机终端输入atrace时,封装函数会顺序完成以下动作:自动检测连接设备、根据当前lunch目标选择对应root权限、向设备写入/sys/kernel/debug/tracing/events/目录下的可用事件掩码、配置环形缓冲区大小、启动跟踪、实时回显已捕获事件数量,并在用户按下Ctrl-C后拉取trace文件到主机标准输出或指定文件,随后自动关闭ftrace,恢复默认状态,保证对系统性能影响降到最低。

在内核层面,atrace顺序打开ftrace,通过trace_marker写入用户态事件,同时使能调度、irq、workqueue、ext4、gfx等预置标签;在用户态,它顺序绑定libutils的Trace类与atrace客户端,保证app层TRACE.begin/TRACE.end事件与内核事件时间戳一致。Android16新增顺序化缓冲区写入策略,避免高负载下事件乱序,同时支持按CPU分别回读,保证多核场景数据一致性。

主机端封装还提供顺序参数解析:先处理-c清理旧数据,再处理-t秒数、-b缓冲区KB、-o输出文件名,最后追加事件标签列表。顺序解析保证命令行简洁且向后兼容。开发者可在顺序调用lunch后,直接atrace -t 10 -b 4096 -o /tmp/boot.trace sched gfx view,即可在10秒内获得调度与图形绘制详情。

顺序化设计使atrace成为Android16性能调优的入口工具,可无缝衔接systrace.py、perfetto等后续可视化流程,为帧率、启动速度、内存抖动提供第一手数据。

🌻3. 代码实例

🌻3.1 收集10秒图形与输入事件
bash 复制代码
source build/envsetup.sh
lunch aosp_x86_64 eng
atrace -t 10 -b 2048 gfx input > /tmp/gfx.trace

输出

capturing trace...done, file pulled 845 KB

🌻3.2 查看冷启动阶段锁竞争
bash 复制代码
adb shell setprop debug.atrace.tags.enableflags 0x2D
atrace -t 5 -a com.android.launcher3 sched freq > cold.trace

输出

trace written to cold.trace 1.3 MB

🌻3.3 持续抓取直至手动停止
bash 复制代码
atrace --async_start -b 4096 sched gfx view && sleep 30 && atrace --async_stop -o long.trace

输出

async trace stopped, written 5.7 MB

🌻3.4 atrace 命令总结

关键字 功能描述 典型应用代码
atrace 顺序开启ftrace并回显 atrace -t 10 -b 4096 sched gfx
-t 设置抓取时长 atrace -t 5
-b 设置缓冲区大小 atrace -b 8192
-o 输出到文件 atrace -o boot.trace
相关推荐
Android系统攻城狮6 天前
Android16进阶之MediaPlayer.isLooping调用流程与实战(二百三十二)
android16·音频进阶·android hal·audio hal·多媒体进阶
Android系统攻城狮6 天前
Android16进阶之MediaPlayer.setLooping调用流程与实战(二百三十一)
android16·音频进阶·android hal·audio hal·多媒体进阶
Gensors传感器6 天前
Gensors压力扫描阀:解锁柔性光伏阵列绕流场重构的关键
压力测试·传感技术·高精度测量·风洞试验·压力扫描阀·扫描阀·柔性光伏阵列
汽车仪器仪表相关领域7 天前
动态诊断充电中枢:DCA-8000型动态诊断充电系统 4S店/维修连锁/新能源服务站/车队维保全场景实战全解
人工智能·车载系统·汽车·负载均衡·压力测试·可用性测试
feathered-feathered7 天前
测试实战【用例设计】自己写的项目+功能测试(1)
java·服务器·后端·功能测试·jmeter·单元测试·压力测试
天真小巫11 天前
2026.2.20总结(认识自我)
单元测试·压力测试
Android系统攻城狮16 天前
Android16进阶之MediaPlayer.getDuration调用流程与实战(二百二十九)
android16·音频进阶·音频性能实战
Android系统攻城狮16 天前
Android16进阶之MediaPlayer.isPlaying调用流程与实战(二百三十)
mediaplayer·android16·音频进阶·音频性能实战
007张三丰17 天前
软件测试专栏(5/20):自动化测试入门指南:从零开始构建你的第一个测试框架
自动化测试·python·算法·压力测试·测试框架
在坚持一下我可没意见19 天前
ideaPool论坛系统测试报告
java·spring boot·功能测试·selenium·jmeter·mybatis·压力测试