blob: 8d6363f42169c62c61e9a035d615a89966135b0f [file] [log] [blame]
Arnaldo Carvalho de Melo16444a82008-05-12 21:20:42 +02001#
Steven Rostedt606576c2008-10-06 19:06:12 -04002# Architectures that offer an FUNCTION_TRACER implementation should
3# select HAVE_FUNCTION_TRACER:
Arnaldo Carvalho de Melo16444a82008-05-12 21:20:42 +02004#
Frédéric Weisbecker2a3a4f62008-09-21 20:12:14 +02005
Török Edwin8d264872008-11-23 12:39:08 +02006config USER_STACKTRACE_SUPPORT
7 bool
8
Frédéric Weisbecker2a3a4f62008-09-21 20:12:14 +02009config NOP_TRACER
10 bool
11
Steven Rostedt78d904b2009-02-05 18:43:07 -050012config HAVE_FTRACE_NMI_ENTER
13 bool
Mike Frysinger555f3862009-09-14 20:10:15 -040014 help
Randy Dunlap40892362009-12-21 12:01:17 -080015 See Documentation/trace/ftrace-design.txt
Steven Rostedt78d904b2009-02-05 18:43:07 -050016
Steven Rostedt606576c2008-10-06 19:06:12 -040017config HAVE_FUNCTION_TRACER
Arnaldo Carvalho de Melo16444a82008-05-12 21:20:42 +020018 bool
Mike Frysinger555f3862009-09-14 20:10:15 -040019 help
Randy Dunlap40892362009-12-21 12:01:17 -080020 See Documentation/trace/ftrace-design.txt
Steven Rostedtbc0c38d2008-05-12 21:20:42 +020021
Frederic Weisbeckerfb526072008-11-25 21:07:04 +010022config HAVE_FUNCTION_GRAPH_TRACER
Frederic Weisbecker15e6cb32008-11-11 07:14:25 +010023 bool
Mike Frysinger555f3862009-09-14 20:10:15 -040024 help
Randy Dunlap40892362009-12-21 12:01:17 -080025 See Documentation/trace/ftrace-design.txt
Frederic Weisbecker15e6cb32008-11-11 07:14:25 +010026
Steven Rostedt71e308a2009-06-18 12:45:08 -040027config HAVE_FUNCTION_GRAPH_FP_TEST
28 bool
29 help
Mike Frysinger03688972010-01-22 08:12:47 -050030 See Documentation/trace/ftrace-design.txt
Steven Rostedt71e308a2009-06-18 12:45:08 -040031
Steven Rostedt677aa9f2008-05-17 00:01:36 -040032config HAVE_DYNAMIC_FTRACE
33 bool
Mike Frysinger555f3862009-09-14 20:10:15 -040034 help
Randy Dunlap40892362009-12-21 12:01:17 -080035 See Documentation/trace/ftrace-design.txt
Steven Rostedt677aa9f2008-05-17 00:01:36 -040036
Masami Hiramatsu06aeaae2012-09-28 17:15:17 +090037config HAVE_DYNAMIC_FTRACE_WITH_REGS
38 bool
39
Steven Rostedt8da38212008-08-14 15:45:07 -040040config HAVE_FTRACE_MCOUNT_RECORD
41 bool
Mike Frysinger555f3862009-09-14 20:10:15 -040042 help
Randy Dunlap40892362009-12-21 12:01:17 -080043 See Documentation/trace/ftrace-design.txt
Steven Rostedt8da38212008-08-14 15:45:07 -040044
Josh Stone66700002009-08-24 14:43:11 -070045config HAVE_SYSCALL_TRACEPOINTS
Frederic Weisbeckeree08c6e2009-03-07 05:52:59 +010046 bool
Mike Frysinger555f3862009-09-14 20:10:15 -040047 help
Randy Dunlap40892362009-12-21 12:01:17 -080048 See Documentation/trace/ftrace-design.txt
Frederic Weisbeckeree08c6e2009-03-07 05:52:59 +010049
Steven Rostedta2546fa2011-02-09 13:15:59 -050050config HAVE_FENTRY
51 bool
52 help
53 Arch supports the gcc options -pg with -mfentry
54
Steven Rostedtcf4db252010-10-14 23:32:44 -040055config HAVE_C_RECORDMCOUNT
Steven Rostedt72441cb2010-10-13 17:12:30 -040056 bool
57 help
58 C version of recordmcount available?
59
Steven Rostedt352ad252008-05-12 21:20:42 +020060config TRACER_MAX_TRACE
61 bool
62
Josh Triplettea632e92012-09-02 19:45:14 -070063config TRACE_CLOCK
64 bool
65
Steven Rostedt7a8e76a2008-09-29 23:02:38 -040066config RING_BUFFER
67 bool
Josh Triplettea632e92012-09-02 19:45:14 -070068 select TRACE_CLOCK
Steven Rostedt (Red Hat)22287682013-05-03 11:16:18 -040069 select IRQ_WORK
Steven Rostedt7a8e76a2008-09-29 23:02:38 -040070
Steven Rostedt78d904b2009-02-05 18:43:07 -050071config FTRACE_NMI_ENTER
72 bool
73 depends on HAVE_FTRACE_NMI_ENTER
74 default y
75
Tom Zanussi5f77a882009-04-08 03:14:01 -050076config EVENT_TRACING
Zhaoleib11c53e2009-05-25 18:11:59 +080077 select CONTEXT_SWITCH_TRACER
78 bool
79
80config CONTEXT_SWITCH_TRACER
Tom Zanussi5f77a882009-04-08 03:14:01 -050081 bool
82
Steven Rostedt85bac322009-09-04 14:24:40 -040083config RING_BUFFER_ALLOW_SWAP
84 bool
85 help
86 Allow the use of ring_buffer_swap_cpu.
87 Adds a very slight overhead to tracing when enabled.
88
Steven Rostedt5e0a0932009-05-28 15:50:13 -040089# All tracer options should select GENERIC_TRACER. For those options that are
90# enabled by all tracers (context switch and event tracer) they select TRACING.
91# This allows those options to appear when no other tracer is selected. But the
92# options do not appear when something else selects it. We need the two options
93# GENERIC_TRACER and TRACING to avoid circular dependencies to accomplish the
Randy Dunlap40892362009-12-21 12:01:17 -080094# hiding of the automatic options.
Steven Rostedt5e0a0932009-05-28 15:50:13 -040095
Steven Rostedtbc0c38d2008-05-12 21:20:42 +020096config TRACING
97 bool
98 select DEBUG_FS
Steven Rostedt7a8e76a2008-09-29 23:02:38 -040099 select RING_BUFFER
Al Viroc2c80522008-10-31 19:50:41 +0000100 select STACKTRACE if STACKTRACE_SUPPORT
Ingo Molnar5f87f112008-07-23 14:15:22 +0200101 select TRACEPOINTS
Steven Rostedtf3384b22008-10-29 11:15:57 -0400102 select NOP_TRACER
Frederic Weisbecker769b0442009-03-06 17:21:49 +0100103 select BINARY_PRINTF
Tom Zanussi5f77a882009-04-08 03:14:01 -0500104 select EVENT_TRACING
Josh Triplettea632e92012-09-02 19:45:14 -0700105 select TRACE_CLOCK
Steven Rostedtbc0c38d2008-05-12 21:20:42 +0200106
Steven Rostedt5e0a0932009-05-28 15:50:13 -0400107config GENERIC_TRACER
108 bool
109 select TRACING
110
Ingo Molnar40ada302009-03-05 21:19:55 +0100111#
112# Minimum requirements an architecture has to meet for us to
113# be able to offer generic tracing facilities:
114#
115config TRACING_SUPPORT
116 bool
Anton Vorontsov45b95602009-03-24 01:07:24 +0300117 # PPC32 has no irqflags tracing support, but it can use most of the
118 # tracers anyway, they were tested to build and work. Note that new
119 # exceptions to this list aren't welcomed, better implement the
120 # irqflags tracing for your architecture.
121 depends on TRACE_IRQFLAGS_SUPPORT || PPC32
Ingo Molnar40ada302009-03-05 21:19:55 +0100122 depends on STACKTRACE_SUPPORT
KOSAKI Motohiro422d3c72009-03-06 10:40:53 +0900123 default y
Ingo Molnar40ada302009-03-05 21:19:55 +0100124
125if TRACING_SUPPORT
126
Steven Rostedt4ed9f072009-04-20 10:47:36 -0400127menuconfig FTRACE
128 bool "Tracers"
Steven Rostedt65b77242009-05-07 12:49:27 -0400129 default y if DEBUG_KERNEL
Steven Rostedt4ed9f072009-04-20 10:47:36 -0400130 help
Randy Dunlap40892362009-12-21 12:01:17 -0800131 Enable the kernel tracing infrastructure.
Steven Rostedt4ed9f072009-04-20 10:47:36 -0400132
133if FTRACE
Peter Zijlstra17d80fd2008-10-21 16:31:18 +0200134
Steven Rostedt606576c2008-10-06 19:06:12 -0400135config FUNCTION_TRACER
Steven Rostedt1b29b012008-05-12 21:20:42 +0200136 bool "Kernel Function Tracer"
Steven Rostedt606576c2008-10-06 19:06:12 -0400137 depends on HAVE_FUNCTION_TRACER
Steven Rostedt4d7a0772009-02-18 22:06:18 -0500138 select KALLSYMS
Steven Rostedt5e0a0932009-05-28 15:50:13 -0400139 select GENERIC_TRACER
Steven Rostedt35e8e302008-05-12 21:20:42 +0200140 select CONTEXT_SWITCH_TRACER
Steven Rostedt1b29b012008-05-12 21:20:42 +0200141 help
142 Enable the kernel to trace every kernel function. This is done
143 by using a compiler feature to insert a small, 5-byte No-Operation
Randy Dunlap40892362009-12-21 12:01:17 -0800144 instruction at the beginning of every kernel function, which NOP
Steven Rostedt1b29b012008-05-12 21:20:42 +0200145 sequence is then dynamically patched into a tracer call when
146 tracing is enabled by the administrator. If it's runtime disabled
147 (the bootup default), then the overhead of the instructions is very
148 small and not measurable even in micro-benchmarks.
Steven Rostedt35e8e302008-05-12 21:20:42 +0200149
Frederic Weisbeckerfb526072008-11-25 21:07:04 +0100150config FUNCTION_GRAPH_TRACER
151 bool "Kernel Function Graph Tracer"
152 depends on HAVE_FUNCTION_GRAPH_TRACER
Frederic Weisbecker15e6cb32008-11-11 07:14:25 +0100153 depends on FUNCTION_TRACER
Steven Rostedteb4a0372009-06-18 12:53:21 -0400154 depends on !X86_32 || !CC_OPTIMIZE_FOR_SIZE
Ingo Molnar764f3b92008-12-03 10:33:58 +0100155 default y
Frederic Weisbecker15e6cb32008-11-11 07:14:25 +0100156 help
Frederic Weisbeckerfb526072008-11-25 21:07:04 +0100157 Enable the kernel to trace a function at both its return
158 and its entry.
Matt LaPlante692105b2009-01-26 11:12:25 +0100159 Its first purpose is to trace the duration of functions and
160 draw a call graph for each thread with some information like
Randy Dunlap40892362009-12-21 12:01:17 -0800161 the return value. This is done by setting the current return
Matt LaPlante692105b2009-01-26 11:12:25 +0100162 address on the current task structure into a stack of calls.
Frederic Weisbecker15e6cb32008-11-11 07:14:25 +0100163
Steven Rostedtbac429f2009-03-20 12:50:56 -0400164
Steven Rostedt81d68a92008-05-12 21:20:42 +0200165config IRQSOFF_TRACER
166 bool "Interrupts-off Latency Tracer"
167 default n
168 depends on TRACE_IRQFLAGS_SUPPORT
John Stultz592913e2010-07-13 17:56:20 -0700169 depends on !ARCH_USES_GETTIMEOFFSET
Steven Rostedt81d68a92008-05-12 21:20:42 +0200170 select TRACE_IRQFLAGS
Steven Rostedt5e0a0932009-05-28 15:50:13 -0400171 select GENERIC_TRACER
Steven Rostedt81d68a92008-05-12 21:20:42 +0200172 select TRACER_MAX_TRACE
Steven Rostedt85bac322009-09-04 14:24:40 -0400173 select RING_BUFFER_ALLOW_SWAP
Steven Rostedt (Red Hat)22cffc22013-03-05 07:30:24 -0500174 select TRACER_SNAPSHOT
Steven Rostedt (Red Hat)0b85ffc2013-03-05 14:50:23 -0500175 select TRACER_SNAPSHOT_PER_CPU_SWAP
Steven Rostedt81d68a92008-05-12 21:20:42 +0200176 help
177 This option measures the time spent in irqs-off critical
178 sections, with microsecond accuracy.
179
180 The default measurement method is a maximum search, which is
181 disabled by default and can be runtime (re-)started
182 via:
183
GeunSik Lim156f5a72009-06-02 15:01:37 +0900184 echo 0 > /sys/kernel/debug/tracing/tracing_max_latency
Steven Rostedt81d68a92008-05-12 21:20:42 +0200185
Randy Dunlap40892362009-12-21 12:01:17 -0800186 (Note that kernel size and overhead increase with this option
Steven Rostedt6cd8a4b2008-05-12 21:20:42 +0200187 enabled. This option and the preempt-off timing option can be
188 used together or separately.)
189
190config PREEMPT_TRACER
191 bool "Preemption-off Latency Tracer"
192 default n
John Stultz592913e2010-07-13 17:56:20 -0700193 depends on !ARCH_USES_GETTIMEOFFSET
Steven Rostedt6cd8a4b2008-05-12 21:20:42 +0200194 depends on PREEMPT
Steven Rostedt5e0a0932009-05-28 15:50:13 -0400195 select GENERIC_TRACER
Steven Rostedt6cd8a4b2008-05-12 21:20:42 +0200196 select TRACER_MAX_TRACE
Steven Rostedt85bac322009-09-04 14:24:40 -0400197 select RING_BUFFER_ALLOW_SWAP
Steven Rostedt (Red Hat)22cffc22013-03-05 07:30:24 -0500198 select TRACER_SNAPSHOT
Steven Rostedt (Red Hat)0b85ffc2013-03-05 14:50:23 -0500199 select TRACER_SNAPSHOT_PER_CPU_SWAP
Steven Rostedt6cd8a4b2008-05-12 21:20:42 +0200200 help
Randy Dunlap40892362009-12-21 12:01:17 -0800201 This option measures the time spent in preemption-off critical
Steven Rostedt6cd8a4b2008-05-12 21:20:42 +0200202 sections, with microsecond accuracy.
203
204 The default measurement method is a maximum search, which is
205 disabled by default and can be runtime (re-)started
206 via:
207
GeunSik Lim156f5a72009-06-02 15:01:37 +0900208 echo 0 > /sys/kernel/debug/tracing/tracing_max_latency
Steven Rostedt6cd8a4b2008-05-12 21:20:42 +0200209
Randy Dunlap40892362009-12-21 12:01:17 -0800210 (Note that kernel size and overhead increase with this option
Steven Rostedt6cd8a4b2008-05-12 21:20:42 +0200211 enabled. This option and the irqs-off timing option can be
212 used together or separately.)
213
Steven Rostedt352ad252008-05-12 21:20:42 +0200214config SCHED_TRACER
215 bool "Scheduling Latency Tracer"
Steven Rostedt5e0a0932009-05-28 15:50:13 -0400216 select GENERIC_TRACER
Steven Rostedt352ad252008-05-12 21:20:42 +0200217 select CONTEXT_SWITCH_TRACER
218 select TRACER_MAX_TRACE
Steven Rostedt (Red Hat)22cffc22013-03-05 07:30:24 -0500219 select TRACER_SNAPSHOT
Steven Rostedt352ad252008-05-12 21:20:42 +0200220 help
221 This tracer tracks the latency of the highest priority task
222 to be scheduled in, starting from the point it has woken up.
223
Steven Rostedt897f17a2009-05-28 16:31:21 -0400224config ENABLE_DEFAULT_TRACERS
225 bool "Trace process context switches and events"
Steven Rostedt5e0a0932009-05-28 15:50:13 -0400226 depends on !GENERIC_TRACER
Steven Rostedtb77e38a2009-02-24 10:21:36 -0500227 select TRACING
228 help
Randy Dunlap40892362009-12-21 12:01:17 -0800229 This tracer hooks to various trace points in the kernel,
Steven Rostedtb77e38a2009-02-24 10:21:36 -0500230 allowing the user to pick and choose which trace point they
Steven Rostedt897f17a2009-05-28 16:31:21 -0400231 want to trace. It also includes the sched_switch tracer plugin.
Steven Rostedta7abe972009-04-20 10:59:34 -0400232
Frederic Weisbeckeree08c6e2009-03-07 05:52:59 +0100233config FTRACE_SYSCALLS
234 bool "Trace syscalls"
Josh Stone66700002009-08-24 14:43:11 -0700235 depends on HAVE_SYSCALL_TRACEPOINTS
Steven Rostedt5e0a0932009-05-28 15:50:13 -0400236 select GENERIC_TRACER
Frederic Weisbecker0ea1c412009-03-15 22:10:38 +0100237 select KALLSYMS
Frederic Weisbeckeree08c6e2009-03-07 05:52:59 +0100238 help
239 Basic tracer to catch the syscall entry and exit events.
240
Hiraku Toyookadebdd572012-12-26 11:53:00 +0900241config TRACER_SNAPSHOT
242 bool "Create a snapshot trace buffer"
243 select TRACER_MAX_TRACE
244 help
245 Allow tracing users to take snapshot of the current buffer using the
246 ftrace interface, e.g.:
247
248 echo 1 > /sys/kernel/debug/tracing/snapshot
249 cat snapshot
250
Steven Rostedt (Red Hat)0b85ffc2013-03-05 14:50:23 -0500251config TRACER_SNAPSHOT_PER_CPU_SWAP
252 bool "Allow snapshot to swap per CPU"
253 depends on TRACER_SNAPSHOT
254 select RING_BUFFER_ALLOW_SWAP
255 help
256 Allow doing a snapshot of a single CPU buffer instead of a
257 full swap (all buffers). If this is set, then the following is
258 allowed:
259
260 echo 1 > /sys/kernel/debug/tracing/per_cpu/cpu2/snapshot
261
262 After which, only the tracing buffer for CPU 2 was swapped with
263 the main tracing buffer, and the other CPU buffers remain the same.
264
265 When this is enabled, this adds a little more overhead to the
266 trace recording, as it needs to add some checks to synchronize
267 recording with swaps. But this does not affect the performance
268 of the overall system. This is enabled by default when the preempt
269 or irq latency tracers are enabled, as those need to swap as well
270 and already adds the overhead (plus a lot more).
271
Steven Rostedt2ed84ee2008-11-12 15:24:24 -0500272config TRACE_BRANCH_PROFILING
Steven Rostedt9ae5b872009-04-20 10:27:58 -0400273 bool
Steven Rostedt5e0a0932009-05-28 15:50:13 -0400274 select GENERIC_TRACER
Steven Rostedt9ae5b872009-04-20 10:27:58 -0400275
276choice
277 prompt "Branch Profiling"
278 default BRANCH_PROFILE_NONE
279 help
280 The branch profiling is a software profiler. It will add hooks
281 into the C conditionals to test which path a branch takes.
282
283 The likely/unlikely profiler only looks at the conditions that
284 are annotated with a likely or unlikely macro.
285
Randy Dunlap40892362009-12-21 12:01:17 -0800286 The "all branch" profiler will profile every if-statement in the
Steven Rostedt9ae5b872009-04-20 10:27:58 -0400287 kernel. This profiler will also enable the likely/unlikely
Randy Dunlap40892362009-12-21 12:01:17 -0800288 profiler.
Steven Rostedt9ae5b872009-04-20 10:27:58 -0400289
Randy Dunlap40892362009-12-21 12:01:17 -0800290 Either of the above profilers adds a bit of overhead to the system.
291 If unsure, choose "No branch profiling".
Steven Rostedt9ae5b872009-04-20 10:27:58 -0400292
293config BRANCH_PROFILE_NONE
294 bool "No branch profiling"
295 help
Randy Dunlap40892362009-12-21 12:01:17 -0800296 No branch profiling. Branch profiling adds a bit of overhead.
297 Only enable it if you want to analyse the branching behavior.
298 Otherwise keep it disabled.
Steven Rostedt9ae5b872009-04-20 10:27:58 -0400299
300config PROFILE_ANNOTATED_BRANCHES
301 bool "Trace likely/unlikely profiler"
302 select TRACE_BRANCH_PROFILING
Steven Rostedt1f0d69a2008-11-12 00:14:39 -0500303 help
Masanari Iida59bf8962012-04-18 00:01:21 +0900304 This tracer profiles all likely and unlikely macros
Steven Rostedt1f0d69a2008-11-12 00:14:39 -0500305 in the kernel. It will display the results in:
306
David Rientjes13e5bef2011-03-16 17:17:08 -0700307 /sys/kernel/debug/tracing/trace_stat/branch_annotated
Steven Rostedt1f0d69a2008-11-12 00:14:39 -0500308
Randy Dunlap40892362009-12-21 12:01:17 -0800309 Note: this will add a significant overhead; only turn this
Steven Rostedt1f0d69a2008-11-12 00:14:39 -0500310 on if you need to profile the system's use of these macros.
311
Steven Rostedt2bcd5212008-11-21 01:30:54 -0500312config PROFILE_ALL_BRANCHES
313 bool "Profile all if conditionals"
Steven Rostedt9ae5b872009-04-20 10:27:58 -0400314 select TRACE_BRANCH_PROFILING
Steven Rostedt2bcd5212008-11-21 01:30:54 -0500315 help
316 This tracer profiles all branch conditions. Every if ()
317 taken in the kernel is recorded whether it hit or miss.
318 The results will be displayed in:
319
David Rientjes13e5bef2011-03-16 17:17:08 -0700320 /sys/kernel/debug/tracing/trace_stat/branch_all
Steven Rostedt2bcd5212008-11-21 01:30:54 -0500321
Steven Rostedt9ae5b872009-04-20 10:27:58 -0400322 This option also enables the likely/unlikely profiler.
323
Steven Rostedt2bcd5212008-11-21 01:30:54 -0500324 This configuration, when enabled, will impose a great overhead
325 on the system. This should only be enabled when the system
Randy Dunlap40892362009-12-21 12:01:17 -0800326 is to be analyzed in much detail.
Steven Rostedt9ae5b872009-04-20 10:27:58 -0400327endchoice
Steven Rostedt2bcd5212008-11-21 01:30:54 -0500328
Steven Rostedt2ed84ee2008-11-12 15:24:24 -0500329config TRACING_BRANCHES
Steven Rostedt52f232c2008-11-12 00:14:40 -0500330 bool
331 help
332 Selected by tracers that will trace the likely and unlikely
333 conditions. This prevents the tracers themselves from being
334 profiled. Profiling the tracing infrastructure can only happen
335 when the likelys and unlikelys are not being traced.
336
Steven Rostedt2ed84ee2008-11-12 15:24:24 -0500337config BRANCH_TRACER
Steven Rostedt52f232c2008-11-12 00:14:40 -0500338 bool "Trace likely/unlikely instances"
Steven Rostedt2ed84ee2008-11-12 15:24:24 -0500339 depends on TRACE_BRANCH_PROFILING
340 select TRACING_BRANCHES
Steven Rostedt52f232c2008-11-12 00:14:40 -0500341 help
342 This traces the events of likely and unlikely condition
343 calls in the kernel. The difference between this and the
344 "Trace likely/unlikely profiler" is that this is not a
345 histogram of the callers, but actually places the calling
346 events into a running trace buffer to see when and where the
347 events happened, as well as their results.
348
349 Say N if unsure.
350
Steven Rostedte5a81b62008-08-27 23:31:01 -0400351config STACK_TRACER
352 bool "Trace max stack"
Steven Rostedt606576c2008-10-06 19:06:12 -0400353 depends on HAVE_FUNCTION_TRACER
Steven Rostedt606576c2008-10-06 19:06:12 -0400354 select FUNCTION_TRACER
Steven Rostedte5a81b62008-08-27 23:31:01 -0400355 select STACKTRACE
Steven Rostedt4d7a0772009-02-18 22:06:18 -0500356 select KALLSYMS
Steven Rostedte5a81b62008-08-27 23:31:01 -0400357 help
Ingo Molnar4519d9e2008-10-14 14:15:43 +0200358 This special tracer records the maximum stack footprint of the
GeunSik Lim156f5a72009-06-02 15:01:37 +0900359 kernel and displays it in /sys/kernel/debug/tracing/stack_trace.
Ingo Molnar4519d9e2008-10-14 14:15:43 +0200360
361 This tracer works by hooking into every function call that the
362 kernel executes, and keeping a maximum stack depth value and
Steven Rostedtf38f1d22008-12-16 23:06:40 -0500363 stack-trace saved. If this is configured with DYNAMIC_FTRACE
364 then it will not have any overhead while the stack tracer
365 is disabled.
366
367 To enable the stack tracer on bootup, pass in 'stacktrace'
368 on the kernel command line.
369
370 The stack tracer can also be enabled or disabled via the
371 sysctl kernel.stack_tracer_enabled
Ingo Molnar4519d9e2008-10-14 14:15:43 +0200372
373 Say N if unsure.
Steven Rostedte5a81b62008-08-27 23:31:01 -0400374
Frederic Weisbecker2db270a2009-02-07 20:46:45 +0100375config BLK_DEV_IO_TRACE
Randy Dunlap40892362009-12-21 12:01:17 -0800376 bool "Support for tracing block IO actions"
Frederic Weisbecker2db270a2009-02-07 20:46:45 +0100377 depends on SYSFS
Ingo Molnar1dfba052009-02-09 12:06:54 +0100378 depends on BLOCK
Frederic Weisbecker2db270a2009-02-07 20:46:45 +0100379 select RELAY
380 select DEBUG_FS
381 select TRACEPOINTS
Steven Rostedt5e0a0932009-05-28 15:50:13 -0400382 select GENERIC_TRACER
Frederic Weisbecker2db270a2009-02-07 20:46:45 +0100383 select STACKTRACE
384 help
385 Say Y here if you want to be able to trace the block layer actions
386 on a given queue. Tracing allows you to see any traffic happening
387 on a block device queue. For more information (and the userspace
388 support tools needed), fetch the blktrace tools from:
389
390 git://git.kernel.dk/blktrace.git
391
392 Tracing also is possible using the ftrace interface, e.g.:
393
394 echo 1 > /sys/block/sda/sda1/trace/enable
395 echo blk > /sys/kernel/debug/tracing/current_tracer
396 cat /sys/kernel/debug/tracing/trace_pipe
397
398 If unsure, say N.
Frederic Weisbecker36994e52008-12-29 13:42:23 -0800399
Masami Hiramatsu77b44d12009-11-03 19:12:47 -0500400config KPROBE_EVENT
Masami Hiramatsu413d37d2009-08-13 16:35:11 -0400401 depends on KPROBES
Heiko Carstensf850c30c2010-02-10 17:25:17 +0100402 depends on HAVE_REGS_AND_STACK_ACCESS_API
Masami Hiramatsu77b44d12009-11-03 19:12:47 -0500403 bool "Enable kprobes-based dynamic events"
Masami Hiramatsu413d37d2009-08-13 16:35:11 -0400404 select TRACING
Srikar Dronamraju8ab83f52012-04-09 14:41:44 +0530405 select PROBE_EVENTS
Masami Hiramatsu77b44d12009-11-03 19:12:47 -0500406 default y
Masami Hiramatsu413d37d2009-08-13 16:35:11 -0400407 help
Randy Dunlap40892362009-12-21 12:01:17 -0800408 This allows the user to add tracing events (similar to tracepoints)
409 on the fly via the ftrace interface. See
410 Documentation/trace/kprobetrace.txt for more details.
Masami Hiramatsu77b44d12009-11-03 19:12:47 -0500411
412 Those events can be inserted wherever kprobes can probe, and record
413 various register and memory values.
414
Randy Dunlap40892362009-12-21 12:01:17 -0800415 This option is also required by perf-probe subcommand of perf tools.
416 If you want to use perf tools, this option is strongly recommended.
Masami Hiramatsu413d37d2009-08-13 16:35:11 -0400417
Srikar Dronamrajuf3f096c2012-04-11 16:00:43 +0530418config UPROBE_EVENT
419 bool "Enable uprobes-based dynamic events"
420 depends on ARCH_SUPPORTS_UPROBES
421 depends on MMU
David A. Long09294e32014-03-07 10:32:22 -0500422 depends on PERF_EVENTS
Srikar Dronamrajuf3f096c2012-04-11 16:00:43 +0530423 select UPROBES
424 select PROBE_EVENTS
425 select TRACING
426 default n
427 help
428 This allows the user to add tracing events on top of userspace
429 dynamic events (similar to tracepoints) on the fly via the trace
430 events interface. Those events can be inserted wherever uprobes
431 can probe, and record various registers.
432 This option is required if you plan to use perf-probe subcommand
433 of perf tools on user space applications.
434
Ingo Molnare1abf2c2015-04-02 15:51:39 +0200435config BPF_EVENTS
436 depends on BPF_SYSCALL
Wang Nan04a22fa2015-07-01 02:13:50 +0000437 depends on KPROBE_EVENT || UPROBE_EVENT
Ingo Molnare1abf2c2015-04-02 15:51:39 +0200438 bool
439 default y
440 help
441 This allows the user to attach BPF programs to kprobe events.
442
Srikar Dronamraju8ab83f52012-04-09 14:41:44 +0530443config PROBE_EVENTS
444 def_bool n
445
Steven Rostedt3d083392008-05-12 21:20:42 +0200446config DYNAMIC_FTRACE
Steven Rostedtdb050212013-02-27 21:48:09 -0500447 bool "enable/disable function tracing dynamically"
Steven Rostedt606576c2008-10-06 19:06:12 -0400448 depends on FUNCTION_TRACER
Steven Rostedt677aa9f2008-05-17 00:01:36 -0400449 depends on HAVE_DYNAMIC_FTRACE
Steven Rostedt3d083392008-05-12 21:20:42 +0200450 default y
451 help
Steven Rostedtdb050212013-02-27 21:48:09 -0500452 This option will modify all the calls to function tracing
453 dynamically (will patch them out of the binary image and
454 replace them with a No-Op instruction) on boot up. During
455 compile time, a table is made of all the locations that ftrace
456 can function trace, and this table is linked into the kernel
457 image. When this is enabled, functions can be individually
458 enabled, and the functions not enabled will not affect
459 performance of the system.
460
461 See the files in /sys/kernel/debug/tracing:
462 available_filter_functions
463 set_ftrace_filter
464 set_ftrace_notrace
Steven Rostedt3d083392008-05-12 21:20:42 +0200465
Randy Dunlap40892362009-12-21 12:01:17 -0800466 This way a CONFIG_FUNCTION_TRACER kernel is slightly larger, but
467 otherwise has native performance as long as no tracing is active.
Steven Rostedt3d083392008-05-12 21:20:42 +0200468
Masami Hiramatsu06aeaae2012-09-28 17:15:17 +0900469config DYNAMIC_FTRACE_WITH_REGS
470 def_bool y
471 depends on DYNAMIC_FTRACE
472 depends on HAVE_DYNAMIC_FTRACE_WITH_REGS
473
Steven Rostedtbac429f2009-03-20 12:50:56 -0400474config FUNCTION_PROFILER
475 bool "Kernel function profiler"
Steven Rostedt493762f2009-03-23 17:12:36 -0400476 depends on FUNCTION_TRACER
Steven Rostedtbac429f2009-03-20 12:50:56 -0400477 default n
478 help
Randy Dunlap40892362009-12-21 12:01:17 -0800479 This option enables the kernel function profiler. A file is created
480 in debugfs called function_profile_enabled which defaults to zero.
481 When a 1 is echoed into this file profiling begins, and when a
482 zero is entered, profiling stops. A "functions" file is created in
483 the trace_stats directory; this file shows the list of functions that
484 have been hit and their counters.
Steven Rostedtbac429f2009-03-20 12:50:56 -0400485
Randy Dunlap40892362009-12-21 12:01:17 -0800486 If in doubt, say N.
Steven Rostedtbac429f2009-03-20 12:50:56 -0400487
Steven Rostedt8da38212008-08-14 15:45:07 -0400488config FTRACE_MCOUNT_RECORD
489 def_bool y
490 depends on DYNAMIC_FTRACE
491 depends on HAVE_FTRACE_MCOUNT_RECORD
492
Steven Rostedt60a11772008-05-12 21:20:44 +0200493config FTRACE_SELFTEST
494 bool
495
496config FTRACE_STARTUP_TEST
497 bool "Perform a startup test on ftrace"
Steven Rostedt5e0a0932009-05-28 15:50:13 -0400498 depends on GENERIC_TRACER
Steven Rostedt60a11772008-05-12 21:20:44 +0200499 select FTRACE_SELFTEST
500 help
501 This option performs a series of startup tests on ftrace. On bootup
502 a series of tests are made to verify that the tracer is
503 functioning properly. It will do tests on all the configured
504 tracers of ftrace.
Peter Zijlstra17d80fd2008-10-21 16:31:18 +0200505
Steven Rostedt1f5a6b42009-09-14 11:58:24 -0400506config EVENT_TRACE_TEST_SYSCALLS
507 bool "Run selftest on syscall events"
508 depends on FTRACE_STARTUP_TEST
509 help
510 This option will also enable testing every syscall event.
511 It only enables the event and disables it and runs various loads
512 with the event enabled. This adds a bit more time for kernel boot
513 up since it runs this on every system call defined.
514
515 TBD - enable a way to actually call the syscalls as we test their
516 events
517
Pekka Paalanenfe6f90e2009-01-03 21:23:51 +0200518config MMIOTRACE
519 bool "Memory mapped IO tracing"
Ingo Molnar40ada302009-03-05 21:19:55 +0100520 depends on HAVE_MMIOTRACE_SUPPORT && PCI
Steven Rostedt5e0a0932009-05-28 15:50:13 -0400521 select GENERIC_TRACER
Pekka Paalanenfe6f90e2009-01-03 21:23:51 +0200522 help
523 Mmiotrace traces Memory Mapped I/O access and is meant for
524 debugging and reverse engineering. It is called from the ioremap
525 implementation and works via page faults. Tracing is disabled by
526 default and can be enabled at run-time.
527
Li Zefan4d1f4372009-04-10 08:48:36 +0800528 See Documentation/trace/mmiotrace.txt.
Pekka Paalanenfe6f90e2009-01-03 21:23:51 +0200529 If you are not helping to develop drivers, say N.
530
531config MMIOTRACE_TEST
532 tristate "Test module for mmiotrace"
533 depends on MMIOTRACE && m
534 help
535 This is a dumb module for testing mmiotrace. It is very dangerous
536 as it will write garbage to IO memory starting at a given address.
537 However, it should be safe to use on e.g. unused portion of VRAM.
538
539 Say N, unless you absolutely know what you are doing.
540
Steven Rostedt (Red Hat)81dc9f02014-05-29 22:49:07 -0400541config TRACEPOINT_BENCHMARK
542 bool "Add tracepoint that benchmarks tracepoints"
543 help
544 This option creates the tracepoint "benchmark:benchmark_event".
545 When the tracepoint is enabled, it kicks off a kernel thread that
546 goes into an infinite loop (calling cond_sched() to let other tasks
547 run), and calls the tracepoint. Each iteration will record the time
548 it took to write to the tracepoint and the next iteration that
549 data will be passed to the tracepoint itself. That is, the tracepoint
550 will report the time it took to do the previous tracepoint.
551 The string written to the tracepoint is a static string of 128 bytes
552 to keep the time the same. The initial string is simply a write of
553 "START". The second string records the cold cache time of the first
554 write which is not added to the rest of the calculations.
555
556 As it is a tight loop, it benchmarks as hot cache. That's fine because
557 we care most about hot paths that are probably in cache already.
558
559 An example of the output:
560
561 START
562 first=3672 [COLD CACHED]
563 last=632 first=3672 max=632 min=632 avg=316 std=446 std^2=199712
564 last=278 first=3672 max=632 min=278 avg=303 std=316 std^2=100337
565 last=277 first=3672 max=632 min=277 avg=296 std=258 std^2=67064
566 last=273 first=3672 max=632 min=273 avg=292 std=224 std^2=50411
567 last=273 first=3672 max=632 min=273 avg=288 std=200 std^2=40389
568 last=281 first=3672 max=632 min=273 avg=287 std=183 std^2=33666
569
570
Steven Rostedt5092dbc2009-05-05 22:47:18 -0400571config RING_BUFFER_BENCHMARK
572 tristate "Ring buffer benchmark stress tester"
573 depends on RING_BUFFER
574 help
Randy Dunlap40892362009-12-21 12:01:17 -0800575 This option creates a test to stress the ring buffer and benchmark it.
576 It creates its own ring buffer such that it will not interfere with
Steven Rostedt5092dbc2009-05-05 22:47:18 -0400577 any other users of the ring buffer (such as ftrace). It then creates
578 a producer and consumer that will run for 10 seconds and sleep for
579 10 seconds. Each interval it will print out the number of events
580 it recorded and give a rough estimate of how long each iteration took.
581
582 It does not disable interrupts or raise its priority, so it may be
583 affected by processes that are running.
584
Randy Dunlap40892362009-12-21 12:01:17 -0800585 If unsure, say N.
Steven Rostedt5092dbc2009-05-05 22:47:18 -0400586
Steven Rostedt (Red Hat)6c43e552013-03-15 11:32:53 -0400587config RING_BUFFER_STARTUP_TEST
588 bool "Ring buffer startup self test"
589 depends on RING_BUFFER
590 help
591 Run a simple self test on the ring buffer on boot up. Late in the
592 kernel boot sequence, the test will start that kicks off
593 a thread per cpu. Each thread will write various size events
594 into the ring buffer. Another thread is created to send IPIs
595 to each of the threads, where the IPI handler will also write
596 to the ring buffer, to test/stress the nesting ability.
597 If any anomalies are discovered, a warning will be displayed
598 and all ring buffers will be disabled.
599
600 The test runs for 10 seconds. This will slow your boot time
601 by at least 10 more seconds.
602
603 At the end of the test, statics and more checks are done.
604 It will output the stats of each per cpu buffer. What
605 was written, the sizes, what was read, what was lost, and
606 other similar details.
607
608 If unsure, say N
609
Steven Rostedt (Red Hat)98284132015-03-31 17:23:45 -0400610config TRACE_ENUM_MAP_FILE
611 bool "Show enum mappings for trace events"
612 depends on TRACING
613 help
614 The "print fmt" of the trace events will show the enum names instead
615 of their values. This can cause problems for user space tools that
616 use this string to parse the raw data as user space does not know
617 how to convert the string to its value.
618
619 To fix this, there's a special macro in the kernel that can be used
620 to convert the enum into its value. If this macro is used, then the
621 print fmt strings will have the enums converted to their values.
622
623 If something does not get converted properly, this option can be
624 used to show what enums the kernel tried to convert.
625
626 This option is for debugging the enum conversions. A file is created
627 in the tracing directory called "enum_map" that will show the enum
628 names matched with their values and what trace event system they
629 belong too.
630
631 Normally, the mapping of the strings to values will be freed after
632 boot up or module load. With this option, they will not be freed, as
633 they are needed for the "enum_map" file. Enabling this option will
634 increase the memory footprint of the running kernel.
635
636 If unsure, say N
637
Tal Shorerddd70282015-08-01 15:27:58 +0300638config TRACING_EVENTS_GPIO
639 bool "Trace gpio events"
640 depends on GPIOLIB
641 default y
642 help
643 Enable tracing events for gpio subsystem
644
Steven Rostedt4ed9f072009-04-20 10:47:36 -0400645endif # FTRACE
Ingo Molnar40ada302009-03-05 21:19:55 +0100646
647endif # TRACING_SUPPORT
648