diff options
Diffstat (limited to 'kernel/trace/Kconfig')
-rw-r--r-- | kernel/trace/Kconfig | 123 |
1 files changed, 108 insertions, 15 deletions
diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig index 34e707e5ab87..8a4d72931042 100644 --- a/kernel/trace/Kconfig +++ b/kernel/trace/Kconfig | |||
@@ -9,6 +9,9 @@ config USER_STACKTRACE_SUPPORT | |||
9 | config NOP_TRACER | 9 | config NOP_TRACER |
10 | bool | 10 | bool |
11 | 11 | ||
12 | config HAVE_FTRACE_NMI_ENTER | ||
13 | bool | ||
14 | |||
12 | config HAVE_FUNCTION_TRACER | 15 | config HAVE_FUNCTION_TRACER |
13 | bool | 16 | bool |
14 | 17 | ||
@@ -31,12 +34,20 @@ config HAVE_FTRACE_MCOUNT_RECORD | |||
31 | config HAVE_HW_BRANCH_TRACER | 34 | config HAVE_HW_BRANCH_TRACER |
32 | bool | 35 | bool |
33 | 36 | ||
37 | config HAVE_FTRACE_SYSCALLS | ||
38 | bool | ||
39 | |||
34 | config TRACER_MAX_TRACE | 40 | config TRACER_MAX_TRACE |
35 | bool | 41 | bool |
36 | 42 | ||
37 | config RING_BUFFER | 43 | config RING_BUFFER |
38 | bool | 44 | bool |
39 | 45 | ||
46 | config FTRACE_NMI_ENTER | ||
47 | bool | ||
48 | depends on HAVE_FTRACE_NMI_ENTER | ||
49 | default y | ||
50 | |||
40 | config TRACING | 51 | config TRACING |
41 | bool | 52 | bool |
42 | select DEBUG_FS | 53 | select DEBUG_FS |
@@ -44,13 +55,29 @@ config TRACING | |||
44 | select STACKTRACE if STACKTRACE_SUPPORT | 55 | select STACKTRACE if STACKTRACE_SUPPORT |
45 | select TRACEPOINTS | 56 | select TRACEPOINTS |
46 | select NOP_TRACER | 57 | select NOP_TRACER |
58 | select BINARY_PRINTF | ||
59 | |||
60 | # | ||
61 | # Minimum requirements an architecture has to meet for us to | ||
62 | # be able to offer generic tracing facilities: | ||
63 | # | ||
64 | config TRACING_SUPPORT | ||
65 | bool | ||
66 | # PPC32 has no irqflags tracing support, but it can use most of the | ||
67 | # tracers anyway, they were tested to build and work. Note that new | ||
68 | # exceptions to this list aren't welcomed, better implement the | ||
69 | # irqflags tracing for your architecture. | ||
70 | depends on TRACE_IRQFLAGS_SUPPORT || PPC32 | ||
71 | depends on STACKTRACE_SUPPORT | ||
72 | default y | ||
73 | |||
74 | if TRACING_SUPPORT | ||
47 | 75 | ||
48 | menu "Tracers" | 76 | menu "Tracers" |
49 | 77 | ||
50 | config FUNCTION_TRACER | 78 | config FUNCTION_TRACER |
51 | bool "Kernel Function Tracer" | 79 | bool "Kernel Function Tracer" |
52 | depends on HAVE_FUNCTION_TRACER | 80 | depends on HAVE_FUNCTION_TRACER |
53 | depends on DEBUG_KERNEL | ||
54 | select FRAME_POINTER | 81 | select FRAME_POINTER |
55 | select KALLSYMS | 82 | select KALLSYMS |
56 | select TRACING | 83 | select TRACING |
@@ -83,7 +110,6 @@ config IRQSOFF_TRACER | |||
83 | default n | 110 | default n |
84 | depends on TRACE_IRQFLAGS_SUPPORT | 111 | depends on TRACE_IRQFLAGS_SUPPORT |
85 | depends on GENERIC_TIME | 112 | depends on GENERIC_TIME |
86 | depends on DEBUG_KERNEL | ||
87 | select TRACE_IRQFLAGS | 113 | select TRACE_IRQFLAGS |
88 | select TRACING | 114 | select TRACING |
89 | select TRACER_MAX_TRACE | 115 | select TRACER_MAX_TRACE |
@@ -106,7 +132,6 @@ config PREEMPT_TRACER | |||
106 | default n | 132 | default n |
107 | depends on GENERIC_TIME | 133 | depends on GENERIC_TIME |
108 | depends on PREEMPT | 134 | depends on PREEMPT |
109 | depends on DEBUG_KERNEL | ||
110 | select TRACING | 135 | select TRACING |
111 | select TRACER_MAX_TRACE | 136 | select TRACER_MAX_TRACE |
112 | help | 137 | help |
@@ -127,13 +152,13 @@ config SYSPROF_TRACER | |||
127 | bool "Sysprof Tracer" | 152 | bool "Sysprof Tracer" |
128 | depends on X86 | 153 | depends on X86 |
129 | select TRACING | 154 | select TRACING |
155 | select CONTEXT_SWITCH_TRACER | ||
130 | help | 156 | help |
131 | This tracer provides the trace needed by the 'Sysprof' userspace | 157 | This tracer provides the trace needed by the 'Sysprof' userspace |
132 | tool. | 158 | tool. |
133 | 159 | ||
134 | config SCHED_TRACER | 160 | config SCHED_TRACER |
135 | bool "Scheduling Latency Tracer" | 161 | bool "Scheduling Latency Tracer" |
136 | depends on DEBUG_KERNEL | ||
137 | select TRACING | 162 | select TRACING |
138 | select CONTEXT_SWITCH_TRACER | 163 | select CONTEXT_SWITCH_TRACER |
139 | select TRACER_MAX_TRACE | 164 | select TRACER_MAX_TRACE |
@@ -143,16 +168,30 @@ config SCHED_TRACER | |||
143 | 168 | ||
144 | config CONTEXT_SWITCH_TRACER | 169 | config CONTEXT_SWITCH_TRACER |
145 | bool "Trace process context switches" | 170 | bool "Trace process context switches" |
146 | depends on DEBUG_KERNEL | ||
147 | select TRACING | 171 | select TRACING |
148 | select MARKERS | 172 | select MARKERS |
149 | help | 173 | help |
150 | This tracer gets called from the context switch and records | 174 | This tracer gets called from the context switch and records |
151 | all switching of tasks. | 175 | all switching of tasks. |
152 | 176 | ||
177 | config EVENT_TRACER | ||
178 | bool "Trace various events in the kernel" | ||
179 | select TRACING | ||
180 | help | ||
181 | This tracer hooks to various trace points in the kernel | ||
182 | allowing the user to pick and choose which trace point they | ||
183 | want to trace. | ||
184 | |||
185 | config FTRACE_SYSCALLS | ||
186 | bool "Trace syscalls" | ||
187 | depends on HAVE_FTRACE_SYSCALLS | ||
188 | select TRACING | ||
189 | select KALLSYMS | ||
190 | help | ||
191 | Basic tracer to catch the syscall entry and exit events. | ||
192 | |||
153 | config BOOT_TRACER | 193 | config BOOT_TRACER |
154 | bool "Trace boot initcalls" | 194 | bool "Trace boot initcalls" |
155 | depends on DEBUG_KERNEL | ||
156 | select TRACING | 195 | select TRACING |
157 | select CONTEXT_SWITCH_TRACER | 196 | select CONTEXT_SWITCH_TRACER |
158 | help | 197 | help |
@@ -165,13 +204,11 @@ config BOOT_TRACER | |||
165 | representation of the delays during initcalls - but the raw | 204 | representation of the delays during initcalls - but the raw |
166 | /debug/tracing/trace text output is readable too. | 205 | /debug/tracing/trace text output is readable too. |
167 | 206 | ||
168 | ( Note that tracing self tests can't be enabled if this tracer is | 207 | You must pass in ftrace=initcall to the kernel command line |
169 | selected, because the self-tests are an initcall as well and that | 208 | to enable this on bootup. |
170 | would invalidate the boot trace. ) | ||
171 | 209 | ||
172 | config TRACE_BRANCH_PROFILING | 210 | config TRACE_BRANCH_PROFILING |
173 | bool "Trace likely/unlikely profiler" | 211 | bool "Trace likely/unlikely profiler" |
174 | depends on DEBUG_KERNEL | ||
175 | select TRACING | 212 | select TRACING |
176 | help | 213 | help |
177 | This tracer profiles all the the likely and unlikely macros | 214 | This tracer profiles all the the likely and unlikely macros |
@@ -224,7 +261,6 @@ config BRANCH_TRACER | |||
224 | 261 | ||
225 | config POWER_TRACER | 262 | config POWER_TRACER |
226 | bool "Trace power consumption behavior" | 263 | bool "Trace power consumption behavior" |
227 | depends on DEBUG_KERNEL | ||
228 | depends on X86 | 264 | depends on X86 |
229 | select TRACING | 265 | select TRACING |
230 | help | 266 | help |
@@ -236,7 +272,6 @@ config POWER_TRACER | |||
236 | config STACK_TRACER | 272 | config STACK_TRACER |
237 | bool "Trace max stack" | 273 | bool "Trace max stack" |
238 | depends on HAVE_FUNCTION_TRACER | 274 | depends on HAVE_FUNCTION_TRACER |
239 | depends on DEBUG_KERNEL | ||
240 | select FUNCTION_TRACER | 275 | select FUNCTION_TRACER |
241 | select STACKTRACE | 276 | select STACKTRACE |
242 | select KALLSYMS | 277 | select KALLSYMS |
@@ -266,11 +301,66 @@ config HW_BRANCH_TRACER | |||
266 | This tracer records all branches on the system in a circular | 301 | This tracer records all branches on the system in a circular |
267 | buffer giving access to the last N branches for each cpu. | 302 | buffer giving access to the last N branches for each cpu. |
268 | 303 | ||
304 | config KMEMTRACE | ||
305 | bool "Trace SLAB allocations" | ||
306 | select TRACING | ||
307 | help | ||
308 | kmemtrace provides tracing for slab allocator functions, such as | ||
309 | kmalloc, kfree, kmem_cache_alloc, kmem_cache_free etc.. Collected | ||
310 | data is then fed to the userspace application in order to analyse | ||
311 | allocation hotspots, internal fragmentation and so on, making it | ||
312 | possible to see how well an allocator performs, as well as debug | ||
313 | and profile kernel code. | ||
314 | |||
315 | This requires an userspace application to use. See | ||
316 | Documentation/vm/kmemtrace.txt for more information. | ||
317 | |||
318 | Saying Y will make the kernel somewhat larger and slower. However, | ||
319 | if you disable kmemtrace at run-time or boot-time, the performance | ||
320 | impact is minimal (depending on the arch the kernel is built for). | ||
321 | |||
322 | If unsure, say N. | ||
323 | |||
324 | config WORKQUEUE_TRACER | ||
325 | bool "Trace workqueues" | ||
326 | select TRACING | ||
327 | help | ||
328 | The workqueue tracer provides some statistical informations | ||
329 | about each cpu workqueue thread such as the number of the | ||
330 | works inserted and executed since their creation. It can help | ||
331 | to evaluate the amount of work each of them have to perform. | ||
332 | For example it can help a developer to decide whether he should | ||
333 | choose a per cpu workqueue instead of a singlethreaded one. | ||
334 | |||
335 | config BLK_DEV_IO_TRACE | ||
336 | bool "Support for tracing block io actions" | ||
337 | depends on SYSFS | ||
338 | depends on BLOCK | ||
339 | select RELAY | ||
340 | select DEBUG_FS | ||
341 | select TRACEPOINTS | ||
342 | select TRACING | ||
343 | select STACKTRACE | ||
344 | help | ||
345 | Say Y here if you want to be able to trace the block layer actions | ||
346 | on a given queue. Tracing allows you to see any traffic happening | ||
347 | on a block device queue. For more information (and the userspace | ||
348 | support tools needed), fetch the blktrace tools from: | ||
349 | |||
350 | git://git.kernel.dk/blktrace.git | ||
351 | |||
352 | Tracing also is possible using the ftrace interface, e.g.: | ||
353 | |||
354 | echo 1 > /sys/block/sda/sda1/trace/enable | ||
355 | echo blk > /sys/kernel/debug/tracing/current_tracer | ||
356 | cat /sys/kernel/debug/tracing/trace_pipe | ||
357 | |||
358 | If unsure, say N. | ||
359 | |||
269 | config DYNAMIC_FTRACE | 360 | config DYNAMIC_FTRACE |
270 | bool "enable/disable ftrace tracepoints dynamically" | 361 | bool "enable/disable ftrace tracepoints dynamically" |
271 | depends on FUNCTION_TRACER | 362 | depends on FUNCTION_TRACER |
272 | depends on HAVE_DYNAMIC_FTRACE | 363 | depends on HAVE_DYNAMIC_FTRACE |
273 | depends on DEBUG_KERNEL | ||
274 | default y | 364 | default y |
275 | help | 365 | help |
276 | This option will modify all the calls to ftrace dynamically | 366 | This option will modify all the calls to ftrace dynamically |
@@ -296,7 +386,7 @@ config FTRACE_SELFTEST | |||
296 | 386 | ||
297 | config FTRACE_STARTUP_TEST | 387 | config FTRACE_STARTUP_TEST |
298 | bool "Perform a startup test on ftrace" | 388 | bool "Perform a startup test on ftrace" |
299 | depends on TRACING && DEBUG_KERNEL && !BOOT_TRACER | 389 | depends on TRACING |
300 | select FTRACE_SELFTEST | 390 | select FTRACE_SELFTEST |
301 | help | 391 | help |
302 | This option performs a series of startup tests on ftrace. On bootup | 392 | This option performs a series of startup tests on ftrace. On bootup |
@@ -306,7 +396,7 @@ config FTRACE_STARTUP_TEST | |||
306 | 396 | ||
307 | config MMIOTRACE | 397 | config MMIOTRACE |
308 | bool "Memory mapped IO tracing" | 398 | bool "Memory mapped IO tracing" |
309 | depends on HAVE_MMIOTRACE_SUPPORT && DEBUG_KERNEL && PCI | 399 | depends on HAVE_MMIOTRACE_SUPPORT && PCI |
310 | select TRACING | 400 | select TRACING |
311 | help | 401 | help |
312 | Mmiotrace traces Memory Mapped I/O access and is meant for | 402 | Mmiotrace traces Memory Mapped I/O access and is meant for |
@@ -328,3 +418,6 @@ config MMIOTRACE_TEST | |||
328 | Say N, unless you absolutely know what you are doing. | 418 | Say N, unless you absolutely know what you are doing. |
329 | 419 | ||
330 | endmenu | 420 | endmenu |
421 | |||
422 | endif # TRACING_SUPPORT | ||
423 | |||