Ensure your gvm config contain below ftrace configs:
#导出config配置
adb root
adb shell proc/config.gz#确认下列ftrace config是否开启,如果没有开启在代码中进行配置
CONFIG_TASKS_TRACE_RCU=y
CONFIG_TRACEPOINTS=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y
CONFIG_HAVE_ARCH_TRACEHOOK=y
CONFIG_ARCH_HAVE_TRACE_MMIO_ACCESS=y
CONFIG_DMA_FENCE_TRACE =y
CONFIG_STACKTRACE=y
CONFIG_RCU_TRACE=y
CONFIG_NOP_TRACER=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
CONFIG_CONTEXT_SWITCH_TRACER=y
CONFIG_FTRACE=y
CONFIG_FUNCTION_TRACER =y
CONFIG_STACK_TRACER =y
CONFIG_IRQSOFF_TRACER =y
CONFIG_PREEMPT_TRACER =y
CONFIG_SCHED_TRACER =y
CONFIG_ENABLE_DEFAULT_TRACERS =y
CONFIG_FTRACE_SYSCALLS =y
CONFIG_BLK_DEV_IO_TRACE =y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
CONFIG_FUNCTION_GRAPH_TRACER=y
CONFIG_DYNAMIC_FTRACE=y
设置ftrace event
adb root
adb wait-for-device
adb remount
adb shell "echo 0 > /sys/kernel/debug/tracing/tracing_on"
adb shell "echo > /sys/kernel/debug/tracing/trace"
adb shell "echo 51200 > /sys/kernel/debug/tracing/buffer_size_kb" (enlarge ftrace buffer accordingly)
adb shell "echo thermal:* > /sys/kernel/debug/tracing/set_event"
adb shell "echo msm_low_power:* > /sys/kernel/debug/tracing/set_event"
adb shell "echo sched:sched_migrate_task > /sys/kernel/debug/tracing/set_event"
adb shell "echo sched:sched_switch > /sys/kernel/debug/tracing/set_event"
adb shell "echo sched:sched_wakeup > /sys/kernel/debug/tracing/set_event"
adb shell "echo sched:sched_cpu_load > /sys/kernel/debug/tracing/set_event"
adb shell "echo core_ctl_eval_need > /sys/kernel/debug/tracing/set_event"
adb shell "echo cpufreq_interactive:* > /d/tracing/set_event"
adb shell "echo kgsl:* > /d/tracing/set_event"
adb shell "echo mdss:* > /d/tracing/set_event"
adb shell "echo irq:* > /sys/kernel/debug/tracing/set_event"
adb shell "cat /sys/kernel/debug/tracing/set_event"
使用systrace抓trace
#抓取android qvm 侧trace
systrace: python systrace.py –b 96000(buffer size ,accordingly) –t 5 --no-compress -o output.html
#抓取 qnx 侧trace
tracelogger: tracelogger –s 5 (tracebuffer.kev at /dev/shmem/
获取clock
# Reading CPU clocks
clock.sh info apcs_gold_sysleaf_clk
# Reading GFX core clock
clock.sh info gpu_cc_gx_gfx3d_clk
# Reading DDR clock
clock.sh info ddr_clk
# Reading NPU core clock
clock.sh info npu_cc_npu_core_clk
# Dumping all clocks (if supported on the platform, CPU intensive, use with care)
clock.sh info
固定ddr 频率
Change DDR frequency
In the current software design, all internal buses and DDR are set to run at their
maximum supported frequencies. Users can change the DDR frequencies by sending a
JSON formatted string to /dev/pil_service. For example, to set the DDR to 1300 MHz,
run the command:
echo "{class: ddr, res: fixed, val: 1300}" > /dev/pil_service
In future the capability to set DDR frequencies would be exposed via DPLMP interface