2 # Architectures that offer an FTRACE implementation should select HAVE_FTRACE:
7 config HAVE_DYNAMIC_FTRACE
10 config HAVE_FTRACE_MCOUNT_RECORD
13 config TRACER_MAX_TRACE
23 bool "Kernel Function Tracer"
24 depends on HAVE_FTRACE
27 select CONTEXT_SWITCH_TRACER
29 Enable the kernel to trace every kernel function. This is done
30 by using a compiler feature to insert a small, 5-byte No-Operation
31 instruction to the beginning of every kernel function, which NOP
32 sequence is then dynamically patched into a tracer call when
33 tracing is enabled by the administrator. If it's runtime disabled
34 (the bootup default), then the overhead of the instructions is very
35 small and not measurable even in micro-benchmarks.
38 bool "Interrupts-off Latency Tracer"
40 depends on TRACE_IRQFLAGS_SUPPORT
41 depends on GENERIC_TIME
42 depends on HAVE_FTRACE
45 select TRACER_MAX_TRACE
47 This option measures the time spent in irqs-off critical
48 sections, with microsecond accuracy.
50 The default measurement method is a maximum search, which is
51 disabled by default and can be runtime (re-)started
54 echo 0 > /debugfs/tracing/tracing_max_latency
56 (Note that kernel size and overhead increases with this option
57 enabled. This option and the preempt-off timing option can be
58 used together or separately.)
61 bool "Preemption-off Latency Tracer"
63 depends on GENERIC_TIME
65 depends on HAVE_FTRACE
67 select TRACER_MAX_TRACE
69 This option measures the time spent in preemption off critical
70 sections, with microsecond accuracy.
72 The default measurement method is a maximum search, which is
73 disabled by default and can be runtime (re-)started
76 echo 0 > /debugfs/tracing/tracing_max_latency
78 (Note that kernel size and overhead increases with this option
79 enabled. This option and the irqs-off timing option can be
80 used together or separately.)
87 This tracer provides the trace needed by the 'Sysprof' userspace
91 bool "Scheduling Latency Tracer"
92 depends on HAVE_FTRACE
94 select CONTEXT_SWITCH_TRACER
95 select TRACER_MAX_TRACE
97 This tracer tracks the latency of the highest priority task
98 to be scheduled in, starting from the point it has woken up.
100 config CONTEXT_SWITCH_TRACER
101 bool "Trace process context switches"
102 depends on HAVE_FTRACE
106 This tracer gets called from the context switch and records
107 all switching of tasks.
109 config DYNAMIC_FTRACE
110 bool "enable/disable ftrace tracepoints dynamically"
112 depends on HAVE_DYNAMIC_FTRACE
115 This option will modify all the calls to ftrace dynamically
116 (will patch them out of the binary image and replaces them
117 with a No-Op instruction) as they are called. A table is
118 created to dynamically enable them again.
120 This way a CONFIG_FTRACE kernel is slightly larger, but otherwise
121 has native performance as long as no tracing is active.
123 The changes to the code are done by a kernel thread that
124 wakes up once a second and checks to see if any ftrace calls
125 were made. If so, it runs stop_machine (stops all CPUS)
126 and modifies the code to jump over the call to ftrace.
128 config FTRACE_MCOUNT_RECORD
130 depends on DYNAMIC_FTRACE
131 depends on HAVE_FTRACE_MCOUNT_RECORD
133 config FTRACE_SELFTEST
136 config FTRACE_STARTUP_TEST
137 bool "Perform a startup test on ftrace"
139 select FTRACE_SELFTEST
141 This option performs a series of startup tests on ftrace. On bootup
142 a series of tests are made to verify that the tracer is
143 functioning properly. It will do tests on all the configured