Android性能调试方法

ぃ、小莉子 提交于 2019-11-30 00:33:04

bootchart

bootchart 可为整个系统提供所有进程的 CPU 和 I/O 负载细分。该工具不需要重建系统映像,可以用作进入 systrace 之前的快速健全性检查。

要启用 bootchart,请运行以下命令:

adb shell ‘touch /data/bootchart/enabled’
adb reboot

在设备启动后,获取启动图表:

$ANDROID_BUILD_TOP/system/core/init/grab-bootchart.sh

完成后,请删除 /data/bootchart/enabled 以防止每次都收集日期数据。

systrace

systrace 允许在启动期间收集内核和 Android 跟踪记录。 systrace 的可视化可以帮助分析启动过程中的具体问题。(不过,要查看整个启动过程中的平均数量或累计数量,直接查看内核跟踪记录更为方便)。

要在启动过程中启用 systrace,请执行以下操作:

在 frameworks/native/atrace/atrace.rc 中,将

write /sys/kernel/debug/tracing/tracing_on 0

更改为:

#write /sys/kernel/debug/tracing/tracing_on 0

这将启用跟踪功能(默认处于停用状态)。

在 device.mk 文件中,添加下面这行内容:

PRODUCT_PROPERTY_OVERRIDES +=    debug.atrace.tags.enableflags=802922
PRODUCT_PROPERTY_OVERRIDES +=    persist.traced.enable=0

在设备 BoardConfig.mk 文件中,添加以下内容:

BOARD_KERNEL_CMDLINE := ... trace_buf_size=64M trace_event=sched_wakeup,sched_switch,sched_blocked_reason,sched_cpu_hotplug

如果是详细的 I/O 分析,还要添加块以及 ext4 和 f2fs。

在设备专用的 init.rc 文件中,进行以下更改:

on property:sys.boot_completed=1(这会在启动完成后停止跟踪)
write /d/tracing/tracing_on 0
write /d/tracing/events/ext4/enable 0
write /d/tracing/events/f2fs/enable 0
write /d/tracing/events/block/enable 0

在设备启动后,获取跟踪记录:

adb root && adb shell atrace --async_stop -z -c -o /data/local/tmp/boot_trace
adb pull /data/local/tmp/boot_trace
$ANDROID_BUILD_TOP/external/chromium-trace/systrace.py --from-file=boot_trace

注意:Chrome 无法处理过大的文件。请考虑使用 tail、head 或 grep 分割 boot_trace 文件,以获得必要的部分。由于事件过多,I/O 分析通常需要直接分析获取的 boot_trace。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!