本讲是Android Camera性能分析专题的第6讲,我们介绍如何通过perfetto抓取trace,包括如下内容:
- 启动Tracing服务
- 通过命令行方式抓取perfetto trace
- 通过python脚本抓取perfetto trace
- 通过perfetto命令抓取perfetto trace
- 通过UI方式抓取perfetto trace
资源 | 描述 |
---|---|
在线课程 | 极客笔记在线课程 |
知识星球 | 星球名称:深入浅出Android Camera 星球ID: 17296815 |
极客笔记圈 |
启动Tracing服务
从Android P开始Android引入perfetto,在Android R才默认打开Tracing服务
打开方法
- Android P和Android Q才需要手动先打开
# Needed only on Android 9 (P) and 10 (Q) on non-Pixel phones.
adb shell setprop persist.traced.enable 1
adb reboot
确认相关服务是否正常启动
HWPCT:/ $ ps -A |grep -iE "traced"
nobody 1016 1 46520 2444 0 0 S traced
nobody 1017 1 46520 2624 0 0 S traced_probes
通过命令行方式抓取perfetto trace
通过python脚本抓取perfetto trace
抓取perfetto的python脚本
- https://raw.githubusercontent.com/google/perfetto/master/tools/record_android_trace
-
/external/perfetto/tools/record_android_trace
执行抓取命令(与systrace类似)
python3 record_android_trace -o trace_file.perfetto-trace -t 10s -b 32mb -n sched freq idle am wm gfx view binder_driver hal dalvik camera input res memory
还可以指定configure文件
- 如何产生perfetto configure文件
- 见视频讲解
- record_camera_config
- 命令
python3 record_android_trace -o trace_file.perfetto-trace -t 10s -b 32mb -n -c record_camera.config
通过perfetto命令抓取perfetto trace
执行抓取命令
adb shell perfetto -o /data/misc/perfetto-traces/trace_file.perfetto-trace -t 10s sched freq idle am wm gfx view binder_driver hal dalvik camera input res memory
adb pull /data/misc/perfetto-traces/trace_file.perfetto-trace
还可以指定Configure文件
adb push record_camera.config /data/local/tmp/record_camera.config
adb shell “cat /data/local/tmp/record_camera.config | perfetto --txt -c - -o /data/misc/perfetto-traces/trace.perfetto-trace”
adb pull /data/misc/perfetto-traces/trace.perfetto-trace
通过UI方式抓取perfetto trace
在Settings中配置和打开trace
Developer options > System tracing
- 选择Category
-
Show quick settings title
Pull 抓取到的trace
adb pull /data/local/traces