ftrace(三)(实例)

抓取event trace实例

1.设置event

echo 1 > /sys/kernel/debug/tracing/events/enable

2.使能ftrace

echo 1 > /sys/kernel/debug/tracing/tracing_on

3.关闭ftrace

echo 0 > /sys/kernel/debug/tracing/tracing_on

4.获取trace log

cat /sys/kernel/debug/tracing/trace > /sdcard/trace.txt

5.我们可以通过adb pull命令拉取trace.txt到PC上使用chrome浏览器来查看

浏览器打开chrome://tracing,点击打开trace.txt

查找Kernel启动阶段的延时原因

1.确保内核配置了如下选项


CONFIG_FTRACE: "Tracers"
CONFIG_FUNCTION_TRACER: "Kernel Function Tracer"
CONFIG_FUNCTION_GRAPH_TRACER: "Kernel Function Graph Tracer"

2.配置function graph trace到commandline

tracing_thresh=200 ftrace=function_graph

这将在kernel启动阶段自动使能function graph tracer,并且会跟踪所有延迟超过200us的function

3.用户关闭trace

当启动完成后需要用户自行执行关闭操作,trace才会关闭:

echo 0 > /sys/kernel/debug/tracing/tracing_on    

4.获取trace log

cat /sys/kernel/debug/tracing/trace > /sdcard/trace.txt

查找最大的kernel stack

1.确保内核配置了如下选项


CONFIG_FTRACE: "Tracers"

CONFIG_FUNCTION_TRACER: "Kernel Function Tracer"

CONFIG_STACK_TRACER: "Trace max stack"

2.配置stack trace到commandline

stacktrace

这将在kernel启动阶段自动使能stack trace,并且除非用户执行:

echo 0 > /proc/sys/kernel/stack_tracer_enabled

否则,stack trace会一直运行下去。

3.获取trace log

cat /debug/tracing/stack_trace > /sdcard/trace.txt

启动阶段使能event trace

同上,配置commandline:

trace_event=sched:*,timer:*,irq:* trace_buf_size=40M

有上面的实例可以知道,ftrace除了能够在运行阶段动态配置使能和关闭,也可以利用命令行来进行配置操作,这主要是针对boot阶段的trace操作。

trace某个进程


echo nop > /sys/kernel/debug/tracing/current_tracer

echo function > /sys/kernel/debug/tracing/current_tracer

echo 520 > /sys/kernel/debug/tracing/set_ftrace_pid 

echo 1 > /sys/kernel/debug/tracing/tracing_on

echo 0 > /sys/kernel/debug/tracing/tracing_on

trace函数调用sys_read/sys_write/sys_open/sys_close


echo nop > /sys/kernel/debug/tracing/current_tracer

echo function_graph > /sys/kernel/debug/tracing/current_tracer

echo sys_read  > /sys/kernel/debug/tracing/set_graph_function

echo 1 > /sys/kernel/debug/tracing/tracing_on

echo 0 > /sys/kernel/debug/tracing/tracing_on

trace函数调用__do_fault


echo nop > /sys/kernel/debug/tracing/current_tracer

echo function_graph > /sys/kernel/debug/tracing/current_tracer

echo __do_fault  > /sys/kernel/debug/tracing/set_graph_function

echo 1 > /sys/kernel/debug/tracing/tracing_on

echo 0 > /sys/kernel/debug/tracing/tracing_on

备注

ftrace功能的开关:


 This can be disable (and enabled) with:

   sysctl kernel.ftrace_enabled=0

   sysctl kernel.ftrace_enabled=1 

  or

   echo 0 > /proc/sys/kernel/ftrace_enabled

   echo 1 > /proc/sys/kernel/ftrace_enabled

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值