Linux kernel debug trace: ftrace
Ftracefunction tracer是内核自带的高性能tracing框架它实际是由多个不同的追踪工具组成的框架用于函数调用内核事件和系统行为的追踪调试或分析延迟以及解决发生在用户空间之外的性能问题。Ftrace使用tracefs文件系统来保存控制文件用于显示输出tracefs被配置到内核时会创建目录/sys/kernel/tracing该目录下对应多个控制和输出文件以下是关键文件的列表(所有时间值均以微妙为单位)ftrace - 函数追踪器 — Linux 内核文档current_tracer:显示当前配置的traceravailable_tracers:显示已被编译进kernel的tracers这些tracer都可以通过echo tracer current_tracer的方式被配置tracing_on:是否enable tracer (即将tracer写入trace ring buffer)trace:该文件保存了易读的trace输出tracing_max_latency:有的tracer记录了最大延迟该文件记录了最长延迟及对应的trace如中断被禁用的最长时间。tracing_thresh:当时延大于该文件的值不为0时该功能激活时有些tracers才会记录tracing_cpumask:仅追踪被cpumask设置的特定CPUset_ftrace_filter:动态配置哪些tracer enable被enable的tracer 可通过available_filter_functions中列出set_ftrace_notrace:动态配置哪些tracer disable若与set_ftrace_filter 冲突以set_ftrace_notrace为主。set_ftrace_pid只追踪列在该文件中的任务PIDset_ftrace_notrace_pid不追踪列在该文件中的任务PIDset_event_pid/set_event_notrace_pid:确定事件是否追踪列在该文件中的任务PIDset_graph_function/set_graph_notrace:启用/disable function graph tracer 的ftracer列表enabled_functions:显示该function所有被调用的函数及调用次数