ftrace (abbreviated from Function Tracer) is a tracingframework for the Linux kernel. Although its original name, Function Tracer, came from ftrace's ability to record information related to various function calls performed while the kernel is running, ftrace's tracing capabilities cover a much broader range of kernel's internal operations.[1][2]
With its various tracer plugins, ftrace can be targeted at different static tracepoints, such as scheduling events, interrupts, memory-mapped I/O, CPU power state transitions, and operations related to file systems and virtualization. Also, dynamic tracking of kernel function calls is available, optionally restrictable to a subset of functions by using globs, and with the possibility to generate call graphs and provide stack usage. At the same time, ftrace can be used to measure various latencies within the Linux kernel, such as for how long interrupts or preemption are disabled.[1][3][4]:3–11,14,18
A ftrace-enabled Linux kernel is built by enabling the CONFIG_FUNCTION_TRACERkernel configuration option. The entire interaction with ftrace is performed through readable and writable virtual files contained in a specifically mounted debugfs file system, thus ftrace requires no userspace utilities to operate.[1][2][5] However, additional userspace utilities—such as trace-cmd and KernelShark—exist to provide improved data recording, analysis and visualization features.[1][4]:31–47[6]
ftrace is primarily developed by Steven Rostedt, and it was merged into the Linux kernel mainline in kernel version 2.6.27, released on October 9, 2008.[7]