转自:https://cloud.tencent.com/developer/article/1905180
1. Recording settings
录制的设置,主要有三种模式,适合不同的场景。
1.1 Stop when full
in-memory buffer size
代表可以存储trace的最大buffer大小。在内存中,不会影响到IO。
Max duration
设置此次 trace 抓取的最大时长。
Stop when full模式下,perfetto停止工作受Max duration和buffer size影响,一旦满足其中一个条件,perfetto将会停止。 优点:trace不会因为overwrite而导致丢失。 缺点:如果trace太多,会导致提前结束,无法录制到出现问题时候的trace。 一般10s,64mb也就够用了。
1.2 Ring buffer
可以看到选项和2.1 Stop when full一样,意思也是一样。Ring buffer模式只会收到Max duration的影响,时间到了就停止抓取trace,但是trace会有被overwrite的风险。
1.3 Long trace
用于长时间地抓取trace,但是由于需要定时将buffer中的trace写到文件里面去,会有IO的影响。前面两个选项和前两个模式的意思是一样的。
Flush on disk every
间隔多少时间将buffer中的trace写入到文件中。这个数值不能太大也不能太小。太大了,容易丢trace,太小了容易影响IO。
Long trace主要是受Max duration,或者ctrl + c暂停命令。
2. CPU
CPU选项是经常使用的,基本上除了syscalls不打开,前面三个都会常规打开
2.1 Coarse CPU usage countor
粗粒度的CPU使用统计
2.2 Scheduling details
可以看到每个CPU上运行的task。
2.3 CPU frequency and idle states
可以看到每颗CPU的运行频率以及是否空闲
2.4 Syscalls
需要userdebug版本系统,可以记录每一个系统调用,但是对性能影响比较大
3. GPU
可以记录 GPU 主频以及GPU 内存使用
3.1 GPU Frequency
可以看到GPU频率
3.2 GPU Memory
可以看到GPU内存使用量以及各个进程的占用,仅Android 12+以上使用。
4. Power
5. Memory
6. Android apps & svcs
6.1 Atrace userspace anotations
开启这个选项之后,选择合适的atrace tag就可以开启对应的trace了,这个tag就对应了System Tracing的界面的catergray。
6.2 Event log (logcat)
可以实时记录log,然后将log和trace信息一一对应。 非常有利于分析问题。选择合适的log类型,就可以记录log了。
生成的perfetto文件,滑动下方的android log,可以看到有一根竖线,对应到trace的tag,日志和trace tag的一一对应
6.3 Frame timeline
这个是Android 12(S)的新功能,具体如何使用可以参考这个网址的官方视频
https://www.youtube.com/playlist?list=PLWz5rJ2EKKc-xjSI-rWn9SViXivBhQUnp
可以看到SF某一帧是合成的APP的哪一帧,已经合成的状态,具体作用,大家可以参考上面的链接视频。
7. Chrome
这个选项,主要是分析webview相关的性能问题,我也用的不多,大家如果遇到需要分析webview相关的性能问题,可以尝试开启这些功能。
8. Advanced settings
目前就一个功能,开启ftrace,对于需要分析内核性能问题,可以开启这个,选择对应的tag。或者可以自己增加。
9. 开启 APP 的 Atrace
atrace_apps: "*"
总结配置:
adb shell perfetto \
-c - --txt \
-o /data/misc/perfetto-traces/trace \
<<EOF
buffers: {
size_kb: 63488
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
}
}
}
data_sources: {
config {
name: "android.log"
android_log_config {
log_ids: LID_EVENTS
log_ids: LID_CRASH
log_ids: LID_KERNEL
log_ids: LID_DEFAULT
log_ids: LID_RADIO
log_ids: LID_SECURITY
log_ids: LID_STATS
log_ids: LID_SYSTEM
}
}
}
data_sources: {
config {
name: "android.surfaceflinger.frametimeline"
}
}
data_sources: {
config {
name: "linux.sys_stats"
sys_stats_config {
stat_period_ms: 1000
stat_counters: STAT_CPU_TIMES
stat_counters: STAT_FORK_COUNT
}
}
}
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: "sched/sched_process_exit"
ftrace_events: "sched/sched_process_free"
ftrace_events: "task/task_newtask"
ftrace_events: "task/task_rename"
ftrace_events: "ftrace/print"
atrace_categories: "am"
atrace_categories: "adb"
atrace_categories: "aidl"
atrace_categories: "dalvik"
atrace_categories: "audio"
atrace_categories: "binder_lock"
atrace_categories: "binder_driver"
atrace_categories: "bionic"
atrace_categories: "camera"
atrace_categories: "database"
atrace_categories: "gfx"
atrace_categories: "hal"
atrace_categories: "input"
atrace_categories: "network"
atrace_categories: "nnapi"
atrace_categories: "pm"
atrace_categories: "power"
atrace_categories: "rs"
atrace_categories: "res"
atrace_categories: "rro"
atrace_categories: "sm"
atrace_categories: "ss"
atrace_categories: "vibrator"
atrace_categories: "video"
atrace_categories: "view"
atrace_categories: "webview"
atrace_categories: "wm"
atrace_apps: "*"
}
}
}
duration_ms: 10000
EOF
标签:log,trace,buffer,简介,perfetto,GPU,CPU From: https://www.cnblogs.com/treecarrybear/p/17056783.html