Android systrace/atrace/ftrace抓取方法

systrace

预装python(python版本是2.7否则无法抓取)
python2.7安装地址:
https://www.python.org/download/releases/2.7/
安装pywin32依赖:
https://sourceforge.net/projects/pywin32/files/pywin32/Build%20221/
安装six 依赖:
https://pypi.org/project/six/#files
six 安装方法:
下载six-1.15.0.tar.gz 解压到任意目录,在setup.py文件夹下执行python setup.py install

进入SDK目录下的systrace目录。如(adt-bundle-windows-x86_64-20140702\sdk\platform-tools\systrace)
userdebug版本:

python systrace.py am wm view app res ss gfx  view hal bionic pm sched irq freq idle disk mmc load sync workq binder_driver binder_lock pagecache memreclaim dalvik input -t 5 -o systrace.html 

user版本:

python systrace.py am wm view app res ss database freq sched gfx input idle binder_driver binder_lock dalvik -t 5 -o systrace.html 

Options可选值
Android systrace/atrace/ftrace抓取方法_第1张图片

atrace

当系统需要解决深度睡眠或者某些在不连接usb才能复现的问题时,可以使用如下方法来获取systrace(必须是user+root或者userdebug版本)
1、adb root && adb remount
2、进入adb shell 输入如下命令

atrace -z -b 40000 am wm view app res ss gfx  view hal bionic pm sched irq freq idle disk mmc load sync workq binder_driver binder_lock pagecache memreclaim dalvik input -t 15 > /data/local/tmp/trace_output &

然后可以拔掉usb来复现问题。
3、转换systrace

Python systrace.py --from-file trace_output -o output.html

在androidQ或者更高版本上可以使用自带perfetto工具来抓取systrace:
开发者选项->系统跟踪->录制跟踪记录
抓取文件保存在data/local/trace中,可以用网页https://ui.perfetto.dev/#!/viewer
点击open with legacy UI选项打开。

ftrace

#! /bin/sh
echo 0 > /d/tracing/tracing_on
echo 16384 > /d/tracing/buffer_size_kb //这里设置大概抓取5s左右的buffer
echo > /d/tracing/trace
echo task_newtask task_rename ipi_raise ipi_entry ipi_exit irq_handler_entry irq_handler_exit softirq_entry softirq_exit softirq_raise workqueue_execute_start workqueue_execute_end sched_waking sched_wakeup sched_wakeup_new sched_switch sched_migrate_task sched_process_exit sched_blocked_reason cpu_idle cpu_frequency cpu_frequency_limits > /d/tracing/set_event

echo 1 > /d/tracing/tracing_on

复现问题或需要关闭trace时,调用代码

trace_printk("timeout, stop ftrace\n");
tracing_off();

关闭trace

确定问题已经复现:
adb shell
cat /d/tracing/tracing_on -->如果结果是0则继续执行下面的命令,为1代表没有复现该问题,需要继续等待。
cat /d/tracing/trace > /sdcard/ftrace.log
之后adb pull出来该ftrace log文件。可以用chrome浏览器直接load该文件

参考:
https://developer.android.google.cn/topic/performance/tracing

你可能感兴趣的:(sprd_android,android开发,Android,Performance,systrace,android,atrace,android,ftrace,atrace,ftrace)