(1)function 主要用于跟踪内核函数的调用栈(其被调用过程) (2)function_graph 主要用于跟踪内核函数内部调用流程及耗时 这两个对内核性能分析的作用不大,主要用来梳理内核模块的逻辑 回到顶部 二 使用 (1)function 使用 /sys/kernel/debug/tracing# echo nop > current_tracer ---清空跟踪器/sys/kernel/debug/tr...
function_graph # # CPU DURATION FUNCTION CALLS # | | | | | | | 2) | drm_open() { 2) | drm_minor_acquire() { 2) 8.625 us | _raw_spin_lock_irqsave(); 2) 4.709 us | _raw_spin_unlock_irqrestore(); 2) | drm_dev_enter() { 2) 5.750 us | __srcu_read_lock(); 2) ...
(2)function_graph 主要用于跟踪内核函数内部调用流程及耗时 这两个对内核性能分析的作用不大,主要用来梳理内核模块的逻辑 二 使用 (1)function 使用 /sys/kernel/debug/tracing# echo nop > current_tracer ---清空跟踪器 /sys/kernel/debug/tracing# echo drm_open > set_ftrace_filter ---设置跟踪函数为drm...
ftrace_graph_call:// ftrace_graph_caller();nop// If enabled, this will be replaced// "b ftrace_graph_caller"#endifmcount_exitENDPROC(ftrace_caller) 由于我们在使能function graph的时候在ftrace_enable_ftrace_graph_caller里面把ftrace_graph_call地址所在的nop指令改成了b ftrace_graph_caller(注意这...
一、ftrace function graph是什么 除了上面提到的trace events之外,tracer提供了很多其余的功能(如下的config宏开关),本文主要介绍function graph的实现。 CONFIG_FUNCTION_TRACER=y CONFIG_FUNCTION_GRAPH_TRACER=y CONFIG_CONTEXT_SWITCH_TRACER=y CONFIG_NOP_TRACER=y ...
tracer(function、function_graph、irq_off)原理和代码分析 trace event 1. ring Buffer Ringbuffer是trace32框架的一个基础,所有的trace原始数据都是通过Ring Buffer记录的,其主要有以下几个作用: 存储在内存中,速度非常快,对系统的性能影响降到最低的水平 ring结构,可以循环写,安全而不浪费内存空间,能够get到最新...
一、ftrace function graph是什么 除了上面提到的trace events之外,tracer提供了很多其余的功能(如下的config宏开关),本文主要介绍function graph的实现。 代码语言:javascript 代码运行次数:0 运行 AI代码解释 CONFIG_FUNCTION_TRACER=yCONFIG_FUNCTION_GRAPH_TRACER=yCONFIG_CONTEXT_SWITCH_TRACER=yCONFIG_NOP_TRACER=y ...
所以用的 最多的是ftrace 的 function、function_graph 这两个跟踪器。 在学习使用 function、function_graph 之前,需要先了解一些,ftrace 相关的一些数据和节点文件知识。 正文 最新的linux 内核,ftrace 所有相关数据和文件节点都位于 /sys/kernel/tracing 目录下。 ftrace部分数据和文件节点说明: 文件...用途... ...
#endif /* CONFIG_FUNCTION_GRAPH_TRACER */ ENDPROC(_mcount) #else /* CONFIG_DYNAMIC_FTRACE */ 对应的伪代码如下: void _mcount(void) { /* save any bare state needed in order to do initial checking */ /* (1) 如果函数指针ftrace_trace_function不等于默认的桩函数ftrace_stub, ...
例如,如果想要跟踪内核函数的调用情况,可以将 “function” 写入 current_tracer 文件;如果想要以图形化的方式查看函数调用关系,可以将 “function_graph” 写入该文件。 使用以下命令可以设置当前启用的 tracer 为 function: echo function > /sys/kernel/debug/tracing/current_tracer ...