码迷,mamicode.com
首页 > 其他好文 > 详细

【转】使用ftrace查找Kernel启动阶段的延时原因

时间:2021-02-25 11:57:59      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:max   opener   car   blog   target   net   deb   name   csdn   

 

转自   ftrace(三)(实例) : https://blog.csdn.net/rikeyone/article/details/80110843

 

查找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 

【转】使用ftrace查找Kernel启动阶段的延时原因

标签:max   opener   car   blog   target   net   deb   name   csdn   

原文地址:https://www.cnblogs.com/hankfu/p/14442949.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!