Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-2.6] / kernel / trace / Kconfig
1 #
2 # Architectures that offer an FTRACE implementation should select HAVE_FTRACE:
3 #
4
5 config NOP_TRACER
6         bool
7
8 config HAVE_FTRACE
9         bool
10         select NOP_TRACER
11
12 config HAVE_DYNAMIC_FTRACE
13         bool
14
15 config HAVE_FTRACE_MCOUNT_RECORD
16         bool
17
18 config TRACER_MAX_TRACE
19         bool
20
21 config RING_BUFFER
22         bool
23
24 config TRACING
25         bool
26         select DEBUG_FS
27         select RING_BUFFER
28         select STACKTRACE
29         select TRACEPOINTS
30
31 config FTRACE
32         bool "Kernel Function Tracer"
33         depends on HAVE_FTRACE
34         depends on DEBUG_KERNEL
35         select FRAME_POINTER
36         select TRACING
37         select CONTEXT_SWITCH_TRACER
38         help
39           Enable the kernel to trace every kernel function. This is done
40           by using a compiler feature to insert a small, 5-byte No-Operation
41           instruction to the beginning of every kernel function, which NOP
42           sequence is then dynamically patched into a tracer call when
43           tracing is enabled by the administrator. If it's runtime disabled
44           (the bootup default), then the overhead of the instructions is very
45           small and not measurable even in micro-benchmarks.
46
47 config IRQSOFF_TRACER
48         bool "Interrupts-off Latency Tracer"
49         default n
50         depends on TRACE_IRQFLAGS_SUPPORT
51         depends on GENERIC_TIME
52         depends on HAVE_FTRACE
53         depends on DEBUG_KERNEL
54         select TRACE_IRQFLAGS
55         select TRACING
56         select TRACER_MAX_TRACE
57         help
58           This option measures the time spent in irqs-off critical
59           sections, with microsecond accuracy.
60
61           The default measurement method is a maximum search, which is
62           disabled by default and can be runtime (re-)started
63           via:
64
65               echo 0 > /debugfs/tracing/tracing_max_latency
66
67           (Note that kernel size and overhead increases with this option
68           enabled. This option and the preempt-off timing option can be
69           used together or separately.)
70
71 config PREEMPT_TRACER
72         bool "Preemption-off Latency Tracer"
73         default n
74         depends on GENERIC_TIME
75         depends on PREEMPT
76         depends on HAVE_FTRACE
77         depends on DEBUG_KERNEL
78         select TRACING
79         select TRACER_MAX_TRACE
80         help
81           This option measures the time spent in preemption off critical
82           sections, with microsecond accuracy.
83
84           The default measurement method is a maximum search, which is
85           disabled by default and can be runtime (re-)started
86           via:
87
88               echo 0 > /debugfs/tracing/tracing_max_latency
89
90           (Note that kernel size and overhead increases with this option
91           enabled. This option and the irqs-off timing option can be
92           used together or separately.)
93
94 config SYSPROF_TRACER
95         bool "Sysprof Tracer"
96         depends on X86
97         select TRACING
98         help
99           This tracer provides the trace needed by the 'Sysprof' userspace
100           tool.
101
102 config SCHED_TRACER
103         bool "Scheduling Latency Tracer"
104         depends on HAVE_FTRACE
105         depends on DEBUG_KERNEL
106         select TRACING
107         select CONTEXT_SWITCH_TRACER
108         select TRACER_MAX_TRACE
109         help
110           This tracer tracks the latency of the highest priority task
111           to be scheduled in, starting from the point it has woken up.
112
113 config CONTEXT_SWITCH_TRACER
114         bool "Trace process context switches"
115         depends on HAVE_FTRACE
116         depends on DEBUG_KERNEL
117         select TRACING
118         select MARKERS
119         help
120           This tracer gets called from the context switch and records
121           all switching of tasks.
122
123 config BOOT_TRACER
124         bool "Trace boot initcalls"
125         depends on HAVE_FTRACE
126         depends on DEBUG_KERNEL
127         select TRACING
128         help
129           This tracer helps developers to optimize boot times: it records
130           the timings of the initcalls and traces key events and the identity
131           of tasks that can cause boot delays, such as context-switches.
132
133           Its aim is to be parsed by the /scripts/bootgraph.pl tool to
134           produce pretty graphics about boot inefficiencies, giving a visual
135           representation of the delays during initcalls - but the raw
136           /debug/tracing/trace text output is readable too.
137
138           ( Note that tracing self tests can't be enabled if this tracer is
139             selected, because the self-tests are an initcall as well and that
140             would invalidate the boot trace. )
141
142 config STACK_TRACER
143         bool "Trace max stack"
144         depends on HAVE_FTRACE
145         depends on DEBUG_KERNEL
146         select FTRACE
147         select STACKTRACE
148         help
149           This special tracer records the maximum stack footprint of the
150           kernel and displays it in debugfs/tracing/stack_trace.
151
152           This tracer works by hooking into every function call that the
153           kernel executes, and keeping a maximum stack depth value and
154           stack-trace saved. Because this logic has to execute in every
155           kernel function, all the time, this option can slow down the
156           kernel measurably and is generally intended for kernel
157           developers only.
158
159           Say N if unsure.
160
161 config DYNAMIC_FTRACE
162         bool "enable/disable ftrace tracepoints dynamically"
163         depends on FTRACE
164         depends on HAVE_DYNAMIC_FTRACE
165         depends on DEBUG_KERNEL
166         default y
167         help
168          This option will modify all the calls to ftrace dynamically
169          (will patch them out of the binary image and replaces them
170          with a No-Op instruction) as they are called. A table is
171          created to dynamically enable them again.
172
173          This way a CONFIG_FTRACE kernel is slightly larger, but otherwise
174          has native performance as long as no tracing is active.
175
176          The changes to the code are done by a kernel thread that
177          wakes up once a second and checks to see if any ftrace calls
178          were made. If so, it runs stop_machine (stops all CPUS)
179          and modifies the code to jump over the call to ftrace.
180
181 config FTRACE_MCOUNT_RECORD
182         def_bool y
183         depends on DYNAMIC_FTRACE
184         depends on HAVE_FTRACE_MCOUNT_RECORD
185
186 config FTRACE_SELFTEST
187         bool
188
189 config FTRACE_STARTUP_TEST
190         bool "Perform a startup test on ftrace"
191         depends on TRACING && DEBUG_KERNEL && !BOOT_TRACER
192         select FTRACE_SELFTEST
193         help
194           This option performs a series of startup tests on ftrace. On bootup
195           a series of tests are made to verify that the tracer is
196           functioning properly. It will do tests on all the configured
197           tracers of ftrace.