ftrace 内核函数追踪
ftrace 是 Linux 内置的内核追踪框架,通过 tracefs 追踪函数调用、调度、中断和延迟。它不需要安装额外工具,适合定位内核态卡顿、IO 延迟和调度问题。
常用 tracer:function、function_graph、irqsoff、preemptoff、wakeup、sched_switch。输出在 /sys/kernel/tracing/trace。
查看可用 tracer:
cat /sys/kernel/tracing/available_tracers
启用函数图追踪:
cd /sys/kernel/tracing
echo function_graph > current_tracer
echo 1 > tracing_on
sleep 5
echo 0 > tracing_on
cat trace | head -100
只追踪指定函数:
echo 'vfs_read' > set_graph_function
echo function_graph > current_tracer
过滤进程:
echo $$ > set_ftrace_pid
清理配置:
echo nop > current_tracer
echo > trace
查看追踪器开销:
cat /sys/kernel/tracing/trace_stat/function0
tracing_on,持续写入影响性能。/sys/kernel/debug/tracing,取决于内核。set_ftrace_filter 不生效。function_graph 开销高于 function,生产慎用。