Perfetto 抓取 trace 使用详解 — Android APP 性能追踪与分析工具
创作不易,希望能一键三连哦~点赞、保藏、加重视➕,随用随学不走失~
Perfetto 是 Google 开源的一款 Android & Linux 功能追踪与剖析东西。它能够协助开发者剖析 App 的功能体现,找到功能瓶颈,并进行优化。
- Perfetto 官方源码链接地址 github.com/google/perf…
- Perfetto 在线剖析东西 ui.perfetto.dev/
- 也可用Android Studio自带东西Profiler进行剖析(有一点点卡,但便利不依赖网络)
Perfetto 的主要功能包含:
- 搜集盯梢和功能数据: 它能够trace Android平台上的各种体系和运用组件,获取具体的履行信息和功能数据。
- 实时剖析和检查数据: 在数据搜集过程中,能够实时生成交互式的剖析陈述,协助开发者快速找到功能问题。
- 保存和导出数据: 搜集的数据能够保存到本地文件或上传到 Perfetto 剖析服务,便利分享和长时刻剖析。
- 定制盯梢装备: 开发者能够自定义盯梢装备,选择自己重视的体系与运用组件进行盯梢,过滤不需要的数据。
运用perfetto主要有以下步骤:
翻开perfetto
- perfetto 的指令行东西是这个装备在 Android11 之后是默许翻开的,但是如果你是 Android 9 ( P ) 或者 10 ( Q ) ,那么就需要手动设置一下相应的 prop 特点,用于搜集和剖析盯梢数据。
# 1-翻开,0-关闭
adb shell setprop persist.traced.enable 1
装备盯梢信息
- 装备盯梢,选择要盯梢的数据源和时刻范围等。装备信息写入文本文件并传给perfetto指令行东西,如:config.pbtx,可借助Perfetto 在线剖析东西中的⏺️Record new trace进行手动勾选想要录制的内容,它会帮你生成装备文件指令,在Recording command,如下图所示。
- 你能够仿制Recording command中生成好的指令到cmd终端进行履行,等候对应的时刻即可完成录制trace。
- 你也能够将Recording command中生成好的指令,仿制两个EOF标签之间的指令到config.pbtx装备文件中。并将装备文件上传到Android设备中,如:
adb push config.pbtx /data/local/tmp/config.pbtx
duration_ms: 10000
buffers: {
size_kb: 522240
fill_policy: DISCARD
}
buffers: {
size_kb: 2048
fill_policy: DISCARD
}
data_sources: {
config {
name: "android.gpu.memory"
}
}
data_sources: {
config {
name: "linux.process_stats"
target_buffer: 1
process_stats_config {
scan_all_processes_on_start: true
proc_stats_poll_ms: 1000
}
}
}
data_sources: {
config {
name: "android.log"
android_log_config {
}
}
}
data_sources: {
config {
name: "android.surfaceflinger.frametimeline"
}
}
data_sources: {
config {
name: "android.game_interventions"
}
}
data_sources: {
config {
name: "linux.sys_stats"
sys_stats_config {
meminfo_period_ms: 1000
vmstat_period_ms: 1000
}
}
}
data_sources: {
config {
name: "android.heapprofd"
target_buffer: 0
heapprofd_config {
sampling_interval_bytes: 4096
shmem_size_bytes: 8388608
block_client: true
all_heaps: true
}
}
}
data_sources: {
config {
name: "android.java_hprof"
target_buffer: 0
java_hprof_config {
}
}
}
data_sources: {
config {
name: "linux.ftrace"
ftrace_config {
ftrace_events: "sched/sched_switch"
ftrace_events: "power/suspend_resume"
ftrace_events: "sched/sched_wakeup"
ftrace_events: "sched/sched_wakeup_new"
ftrace_events: "sched/sched_waking"
ftrace_events: "power/cpu_frequency"
ftrace_events: "power/cpu_idle"
ftrace_events: "power/gpu_frequency"
ftrace_events: "gpu_mem/gpu_mem_total"
ftrace_events: "raw_syscalls/sys_enter"
ftrace_events: "raw_syscalls/sys_exit"
ftrace_events: "mm_event/mm_event_record"
ftrace_events: "kmem/rss_stat"
ftrace_events: "ion/ion_stat"
ftrace_events: "dmabuf_heap/dma_heap_stat"
ftrace_events: "kmem/ion_heap_grow"
ftrace_events: "kmem/ion_heap_shrink"
ftrace_events: "sched/sched_process_exit"
ftrace_events: "sched/sched_process_free"
ftrace_events: "task/task_newtask"
ftrace_events: "task/task_rename"
ftrace_events: "lowmemorykiller/lowmemory_kill"
ftrace_events: "oom/oom_score_adj_update"
ftrace_events: "sched/sched_blocked_reason"
ftrace_events: "ftrace/print"
atrace_apps: "lmkd"
symbolize_ksyms: true
}
}
}
运转perfetto trace
- 运转perfetto trace指令进行盯梢数据搜集。
adb shell 'cat /data/local/tmp/config.pbtx | perfetto --txt -c - -o /data/misc/perfetto-traces/trace.perfetto-trace'
导出 .perfetto-trace 记载文件
- 接下来便是从设备将
/data/misc/perfetto-traces/trace.perfetto-trace
途径下的文件下载到电脑中,指令如下:
adb pull /data/misc/perfetto-traces/trace_file.perfetto-trace ./traces/
至此,怎么从设备中录制trace文件的作业就完成了,接下来便是怎么进行剖析trace来有针对的进行APP的功能优化了。
创作不易,希望能一键三连哦~点赞、保藏、加重视➕,随用随学不走失~