1. Ftrace 功能描述
1.1 基本原理
trace的核心思想是跟踪记录;
ftrace即linux kernel中实现的一套trace机制,可以记录各个function、event等处理的时长和调用顺序;
基于ftrace,Android拓展为systrace功能记录系统主要事件的处理path(alios 也有类似的atrace);
1.2 用途
- 学习系统功能模块的调用path跟踪;
- 系统各个阶段的耗时情况跟踪优化;
- 对display模块中抖动、丢帧问题排查;
1.3 官方文档
- android:https://source.android.com/devices/tech/debug/ftrace#dftrace
- kernel:https://www.kernel.org/doc/Documentation/trace/ftrace.txt
2. 配置使能
2.1 配置项
CONFIG_IRQSOFF_TRACER=y
CONFIG_PREEMPTIRQ_EVENTS=y
CONFIG_PREEMPT_TRACER=y
CONFIG_SCHED_TRACER=y
CONFIG_HWLAT_TRACER=y
CONFIG_FTRACE_SYSCALLS=y
CONFIG_PROFILE_ALL_BRANCHES=y
CONFIG_STACK_TRACER=y
CONFIG_BLK_DEV_IO_TRACER=y
CONFIG_FUNCTION_PROFILER=y
2.2 配置方法
配置config文件,有两种方式:
- 知道具体添加哪些config,则直接找到对应的config文件,手动写入,然后重新build;
/kernel/arch/arm/configs/***
/kernel/arch/arm64/configs/*** - 通过make menuconfig的方式写入
2.2.1 make menuconfig 配置
第一级选择 kernel hacking:
第二级选择 Tracer:
第三级根据需要选择:
2.3 配置问题记录
一般来说我们实际项目中,都会根据HW资源另写一个config文件,这时候如果直接使用make menuconfig,load对应文件进来修改后save,做git diff对比,会发现整个文件都不大一样了;
对于这种情况:
- 我们的做法是修改后将原来的 .config与生成后 .config做对比,将差异重新写到我们所需要的文件中;
- 或者简单的做法,直接手动修改对应的config文件;
2.4 如何确认修改成功
- 查看build出来的.config文件
- 查看机器内的config文件: adb sh