Ftrace
内核源码位置 src/kernel/trace:
/sys/kernel/debug/tracing
root@v:/sys/kernel/debug/tracing# ls
available_events events per_cpu set_ftrace_notrace trace tracing_on
available_filter_functions free_buffer printk_formats set_ftrace_pid trace_clock tracing_thresh
available_tracers function_profile_enabled README set_graph_function trace_marker uprobe_events
buffer_size_kb instances saved_cmdlines set_graph_notrace trace_options uprobe_profile
buffer_total_size_kb kprobe_events saved_cmdlines_size snapshot trace_pipe
current_tracer kprobe_profile set_event stack_max_size trace_stat
dyn_ftrace_total_info max_graph_depth set_event_pid stack_trace tracing_cpumask
enabled_functions options set_ftrace_filter stack_trace_filter tracing_max_latency
buffer_size_kb:这个属性比較重要,也是使用中须要注意的,这是设置启动的CPU的缓存大小。取决于追踪log的大小,超出会反复利用覆盖,可是一次性分配又须要考虑内存。
buffer_total_size_kb:这个就是总和buffer size 了,启用了多少个cpu去trace就乘以buffer_size_kb.
current_tracer: 当前的追踪器。有哪几种能够查看available_tracers ,用echo * > 重定向 设置改变,详细tracer的不同需另行參考 ,默觉得nop
events:文件夹下就是加入在kernel源代码中已经存在的各个event集合。
free_buffer:顾名思义,可是这个使用方法比較特殊,有仅仅要open之后。等处理完buffer之后 close这个文件就可以释放buffer,有兴趣能够去trace.c里面看看这个节点的file_operation,不手动去close这个节点的话,上面设置的buffer是不会free的。
trace:用于追踪操作的文件节点,就是读取该节点获取trace log
tracing_cpumask:用到的cpu标记。以数值bit位表示多少个cpu,这个尤为注意。比方四核 cat显示就是 f 也就是1111。
tracing_on:开关