]> bbs.cooldavid.org Git - net-next-2.6.git/blame - kernel/trace/Kconfig
Merge branches 'tracing/ftrace' and 'linus' into tracing/core
[net-next-2.6.git] / kernel / trace / Kconfig
CommitLineData
16444a8a 1#
606576ce
SR
2# Architectures that offer an FUNCTION_TRACER implementation should
3# select HAVE_FUNCTION_TRACER:
16444a8a 4#
2a3a4f66 5
8d26487f
TE
6config USER_STACKTRACE_SUPPORT
7 bool
8
2a3a4f66
FW
9config NOP_TRACER
10 bool
11
78d904b4
SR
12config HAVE_FTRACE_NMI_ENTER
13 bool
14
606576ce 15config HAVE_FUNCTION_TRACER
16444a8a 16 bool
bc0c38d1 17
fb52607a 18config HAVE_FUNCTION_GRAPH_TRACER
15e6cb36
FW
19 bool
20
60a7ecf4
SR
21config HAVE_FUNCTION_TRACE_MCOUNT_TEST
22 bool
23 help
24 This gets selected when the arch tests the function_trace_stop
25 variable at the mcount call site. Otherwise, this variable
26 is tested by the called function.
27
677aa9f7
SR
28config HAVE_DYNAMIC_FTRACE
29 bool
30
8da3821b
SR
31config HAVE_FTRACE_MCOUNT_RECORD
32 bool
33
1e9b51c2
MM
34config HAVE_HW_BRANCH_TRACER
35 bool
36
352ad25a
SR
37config TRACER_MAX_TRACE
38 bool
39
7a8e76a3
SR
40config RING_BUFFER
41 bool
42
78d904b4
SR
43config FTRACE_NMI_ENTER
44 bool
45 depends on HAVE_FTRACE_NMI_ENTER
46 default y
47
bc0c38d1
SR
48config TRACING
49 bool
50 select DEBUG_FS
7a8e76a3 51 select RING_BUFFER
c2c80529 52 select STACKTRACE if STACKTRACE_SUPPORT
5f87f112 53 select TRACEPOINTS
f3384b28 54 select NOP_TRACER
769b0441 55 select BINARY_PRINTF
bc0c38d1 56
40ada30f
IM
57#
58# Minimum requirements an architecture has to meet for us to
59# be able to offer generic tracing facilities:
60#
61config TRACING_SUPPORT
62 bool
63 depends on TRACE_IRQFLAGS_SUPPORT
64 depends on STACKTRACE_SUPPORT
422d3c7a 65 default y
40ada30f
IM
66
67if TRACING_SUPPORT
68
17d80fd0
PZ
69menu "Tracers"
70
606576ce 71config FUNCTION_TRACER
1b29b018 72 bool "Kernel Function Tracer"
606576ce 73 depends on HAVE_FUNCTION_TRACER
1b29b018 74 select FRAME_POINTER
4d7a077c 75 select KALLSYMS
1b29b018 76 select TRACING
35e8e302 77 select CONTEXT_SWITCH_TRACER
1b29b018
SR
78 help
79 Enable the kernel to trace every kernel function. This is done
80 by using a compiler feature to insert a small, 5-byte No-Operation
81 instruction to the beginning of every kernel function, which NOP
82 sequence is then dynamically patched into a tracer call when
83 tracing is enabled by the administrator. If it's runtime disabled
84 (the bootup default), then the overhead of the instructions is very
85 small and not measurable even in micro-benchmarks.
35e8e302 86
fb52607a
FW
87config FUNCTION_GRAPH_TRACER
88 bool "Kernel Function Graph Tracer"
89 depends on HAVE_FUNCTION_GRAPH_TRACER
15e6cb36 90 depends on FUNCTION_TRACER
764f3b95 91 default y
15e6cb36 92 help
fb52607a
FW
93 Enable the kernel to trace a function at both its return
94 and its entry.
95 It's first purpose is to trace the duration of functions and
96 draw a call graph for each thread with some informations like
97 the return value.
98 This is done by setting the current return address on the current
99 task structure into a stack of calls.
15e6cb36 100
81d68a96
SR
101config IRQSOFF_TRACER
102 bool "Interrupts-off Latency Tracer"
103 default n
104 depends on TRACE_IRQFLAGS_SUPPORT
105 depends on GENERIC_TIME
106 select TRACE_IRQFLAGS
107 select TRACING
108 select TRACER_MAX_TRACE
109 help
110 This option measures the time spent in irqs-off critical
111 sections, with microsecond accuracy.
112
113 The default measurement method is a maximum search, which is
114 disabled by default and can be runtime (re-)started
115 via:
116
117 echo 0 > /debugfs/tracing/tracing_max_latency
118
6cd8a4bb
SR
119 (Note that kernel size and overhead increases with this option
120 enabled. This option and the preempt-off timing option can be
121 used together or separately.)
122
123config PREEMPT_TRACER
124 bool "Preemption-off Latency Tracer"
125 default n
126 depends on GENERIC_TIME
127 depends on PREEMPT
128 select TRACING
129 select TRACER_MAX_TRACE
130 help
131 This option measures the time spent in preemption off critical
132 sections, with microsecond accuracy.
133
134 The default measurement method is a maximum search, which is
135 disabled by default and can be runtime (re-)started
136 via:
137
138 echo 0 > /debugfs/tracing/tracing_max_latency
139
140 (Note that kernel size and overhead increases with this option
141 enabled. This option and the irqs-off timing option can be
142 used together or separately.)
143
f06c3810
IM
144config SYSPROF_TRACER
145 bool "Sysprof Tracer"
4d2df795 146 depends on X86
f06c3810 147 select TRACING
b22f4858 148 select CONTEXT_SWITCH_TRACER
f06c3810
IM
149 help
150 This tracer provides the trace needed by the 'Sysprof' userspace
151 tool.
152
352ad25a
SR
153config SCHED_TRACER
154 bool "Scheduling Latency Tracer"
352ad25a
SR
155 select TRACING
156 select CONTEXT_SWITCH_TRACER
157 select TRACER_MAX_TRACE
158 help
159 This tracer tracks the latency of the highest priority task
160 to be scheduled in, starting from the point it has woken up.
161
35e8e302
SR
162config CONTEXT_SWITCH_TRACER
163 bool "Trace process context switches"
35e8e302
SR
164 select TRACING
165 select MARKERS
166 help
167 This tracer gets called from the context switch and records
168 all switching of tasks.
169
b77e38aa
SR
170config EVENT_TRACER
171 bool "Trace various events in the kernel"
b77e38aa
SR
172 select TRACING
173 help
174 This tracer hooks to various trace points in the kernel
175 allowing the user to pick and choose which trace point they
176 want to trace.
177
1f5c2abb
FW
178config BOOT_TRACER
179 bool "Trace boot initcalls"
1f5c2abb 180 select TRACING
ea31e72d 181 select CONTEXT_SWITCH_TRACER
1f5c2abb
FW
182 help
183 This tracer helps developers to optimize boot times: it records
98d9c66a
IM
184 the timings of the initcalls and traces key events and the identity
185 of tasks that can cause boot delays, such as context-switches.
186
187 Its aim is to be parsed by the /scripts/bootgraph.pl tool to
188 produce pretty graphics about boot inefficiencies, giving a visual
189 representation of the delays during initcalls - but the raw
190 /debug/tracing/trace text output is readable too.
191
79fb0768
SR
192 You must pass in ftrace=initcall to the kernel command line
193 to enable this on bootup.
1f5c2abb 194
2ed84eeb 195config TRACE_BRANCH_PROFILING
1f0d69a9 196 bool "Trace likely/unlikely profiler"
1f0d69a9
SR
197 select TRACING
198 help
199 This tracer profiles all the the likely and unlikely macros
200 in the kernel. It will display the results in:
201
45b79749 202 /debugfs/tracing/profile_annotated_branch
1f0d69a9
SR
203
204 Note: this will add a significant overhead, only turn this
205 on if you need to profile the system's use of these macros.
206
207 Say N if unsure.
208
2bcd521a
SR
209config PROFILE_ALL_BRANCHES
210 bool "Profile all if conditionals"
211 depends on TRACE_BRANCH_PROFILING
212 help
213 This tracer profiles all branch conditions. Every if ()
214 taken in the kernel is recorded whether it hit or miss.
215 The results will be displayed in:
216
217 /debugfs/tracing/profile_branch
218
219 This configuration, when enabled, will impose a great overhead
220 on the system. This should only be enabled when the system
221 is to be analyzed
222
223 Say N if unsure.
224
2ed84eeb 225config TRACING_BRANCHES
52f232cb
SR
226 bool
227 help
228 Selected by tracers that will trace the likely and unlikely
229 conditions. This prevents the tracers themselves from being
230 profiled. Profiling the tracing infrastructure can only happen
231 when the likelys and unlikelys are not being traced.
232
2ed84eeb 233config BRANCH_TRACER
52f232cb 234 bool "Trace likely/unlikely instances"
2ed84eeb
SR
235 depends on TRACE_BRANCH_PROFILING
236 select TRACING_BRANCHES
52f232cb
SR
237 help
238 This traces the events of likely and unlikely condition
239 calls in the kernel. The difference between this and the
240 "Trace likely/unlikely profiler" is that this is not a
241 histogram of the callers, but actually places the calling
242 events into a running trace buffer to see when and where the
243 events happened, as well as their results.
244
245 Say N if unsure.
246
f3f47a67
AV
247config POWER_TRACER
248 bool "Trace power consumption behavior"
f3f47a67
AV
249 depends on X86
250 select TRACING
251 help
252 This tracer helps developers to analyze and optimize the kernels
253 power management decisions, specifically the C-state and P-state
254 behavior.
255
256
e5a81b62
SR
257config STACK_TRACER
258 bool "Trace max stack"
606576ce 259 depends on HAVE_FUNCTION_TRACER
606576ce 260 select FUNCTION_TRACER
e5a81b62 261 select STACKTRACE
4d7a077c 262 select KALLSYMS
e5a81b62 263 help
4519d9e5
IM
264 This special tracer records the maximum stack footprint of the
265 kernel and displays it in debugfs/tracing/stack_trace.
266
267 This tracer works by hooking into every function call that the
268 kernel executes, and keeping a maximum stack depth value and
f38f1d2a
SR
269 stack-trace saved. If this is configured with DYNAMIC_FTRACE
270 then it will not have any overhead while the stack tracer
271 is disabled.
272
273 To enable the stack tracer on bootup, pass in 'stacktrace'
274 on the kernel command line.
275
276 The stack tracer can also be enabled or disabled via the
277 sysctl kernel.stack_tracer_enabled
4519d9e5
IM
278
279 Say N if unsure.
e5a81b62 280
a93751ca 281config HW_BRANCH_TRACER
1e9b51c2 282 depends on HAVE_HW_BRANCH_TRACER
a93751ca 283 bool "Trace hw branches"
1e9b51c2
MM
284 select TRACING
285 help
286 This tracer records all branches on the system in a circular
287 buffer giving access to the last N branches for each cpu.
288
36994e58
FW
289config KMEMTRACE
290 bool "Trace SLAB allocations"
291 select TRACING
36994e58
FW
292 help
293 kmemtrace provides tracing for slab allocator functions, such as
294 kmalloc, kfree, kmem_cache_alloc, kmem_cache_free etc.. Collected
295 data is then fed to the userspace application in order to analyse
296 allocation hotspots, internal fragmentation and so on, making it
297 possible to see how well an allocator performs, as well as debug
298 and profile kernel code.
299
300 This requires an userspace application to use. See
301 Documentation/vm/kmemtrace.txt for more information.
302
303 Saying Y will make the kernel somewhat larger and slower. However,
304 if you disable kmemtrace at run-time or boot-time, the performance
305 impact is minimal (depending on the arch the kernel is built for).
306
307 If unsure, say N.
308
e1d8aa9f
FW
309config WORKQUEUE_TRACER
310 bool "Trace workqueues"
311 select TRACING
312 help
313 The workqueue tracer provides some statistical informations
314 about each cpu workqueue thread such as the number of the
315 works inserted and executed since their creation. It can help
316 to evaluate the amount of work each of them have to perform.
317 For example it can help a developer to decide whether he should
318 choose a per cpu workqueue instead of a singlethreaded one.
319
2db270a8
FW
320config BLK_DEV_IO_TRACE
321 bool "Support for tracing block io actions"
322 depends on SYSFS
1dfba05d 323 depends on BLOCK
2db270a8
FW
324 select RELAY
325 select DEBUG_FS
326 select TRACEPOINTS
327 select TRACING
328 select STACKTRACE
329 help
330 Say Y here if you want to be able to trace the block layer actions
331 on a given queue. Tracing allows you to see any traffic happening
332 on a block device queue. For more information (and the userspace
333 support tools needed), fetch the blktrace tools from:
334
335 git://git.kernel.dk/blktrace.git
336
337 Tracing also is possible using the ftrace interface, e.g.:
338
339 echo 1 > /sys/block/sda/sda1/trace/enable
340 echo blk > /sys/kernel/debug/tracing/current_tracer
341 cat /sys/kernel/debug/tracing/trace_pipe
342
343 If unsure, say N.
36994e58 344
3d083395
SR
345config DYNAMIC_FTRACE
346 bool "enable/disable ftrace tracepoints dynamically"
606576ce 347 depends on FUNCTION_TRACER
677aa9f7 348 depends on HAVE_DYNAMIC_FTRACE
3d083395
SR
349 default y
350 help
351 This option will modify all the calls to ftrace dynamically
352 (will patch them out of the binary image and replaces them
353 with a No-Op instruction) as they are called. A table is
354 created to dynamically enable them again.
355
606576ce 356 This way a CONFIG_FUNCTION_TRACER kernel is slightly larger, but otherwise
3d083395
SR
357 has native performance as long as no tracing is active.
358
359 The changes to the code are done by a kernel thread that
360 wakes up once a second and checks to see if any ftrace calls
361 were made. If so, it runs stop_machine (stops all CPUS)
362 and modifies the code to jump over the call to ftrace.
60a11774 363
8da3821b
SR
364config FTRACE_MCOUNT_RECORD
365 def_bool y
366 depends on DYNAMIC_FTRACE
367 depends on HAVE_FTRACE_MCOUNT_RECORD
368
60a11774
SR
369config FTRACE_SELFTEST
370 bool
371
372config FTRACE_STARTUP_TEST
373 bool "Perform a startup test on ftrace"
40ada30f 374 depends on TRACING
60a11774
SR
375 select FTRACE_SELFTEST
376 help
377 This option performs a series of startup tests on ftrace. On bootup
378 a series of tests are made to verify that the tracer is
379 functioning properly. It will do tests on all the configured
380 tracers of ftrace.
17d80fd0 381
fe6f90e5
PP
382config MMIOTRACE
383 bool "Memory mapped IO tracing"
40ada30f 384 depends on HAVE_MMIOTRACE_SUPPORT && PCI
fe6f90e5
PP
385 select TRACING
386 help
387 Mmiotrace traces Memory Mapped I/O access and is meant for
388 debugging and reverse engineering. It is called from the ioremap
389 implementation and works via page faults. Tracing is disabled by
390 default and can be enabled at run-time.
391
392 See Documentation/tracers/mmiotrace.txt.
393 If you are not helping to develop drivers, say N.
394
395config MMIOTRACE_TEST
396 tristate "Test module for mmiotrace"
397 depends on MMIOTRACE && m
398 help
399 This is a dumb module for testing mmiotrace. It is very dangerous
400 as it will write garbage to IO memory starting at a given address.
401 However, it should be safe to use on e.g. unused portion of VRAM.
402
403 Say N, unless you absolutely know what you are doing.
404
17d80fd0 405endmenu
40ada30f
IM
406
407endif # TRACING_SUPPORT
408