blob: 5771ce7f08b3b3c1f38a50d54770e0bbe78a73de [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 Rostedt677aa9f2008-05-17 00:01:36 -040027config HAVE_DYNAMIC_FTRACE
28 bool
Mike Frysinger555f3862009-09-14 20:10:15 -040029 help
Randy Dunlap40892362009-12-21 12:01:17 -080030 See Documentation/trace/ftrace-design.txt
Steven Rostedt677aa9f2008-05-17 00:01:36 -040031
Masami Hiramatsu06aeaae2012-09-28 17:15:17 +090032config HAVE_DYNAMIC_FTRACE_WITH_REGS
33 bool
34
Steven Rostedt8da38212008-08-14 15:45:07 -040035config HAVE_FTRACE_MCOUNT_RECORD
36 bool
Mike Frysinger555f3862009-09-14 20:10:15 -040037 help
Randy Dunlap40892362009-12-21 12:01:17 -080038 See Documentation/trace/ftrace-design.txt
Steven Rostedt8da38212008-08-14 15:45:07 -040039
Josh Stone66700002009-08-24 14:43:11 -070040config HAVE_SYSCALL_TRACEPOINTS
Frederic Weisbeckeree08c6e2009-03-07 05:52:59 +010041 bool
Mike Frysinger555f3862009-09-14 20:10:15 -040042 help
Randy Dunlap40892362009-12-21 12:01:17 -080043 See Documentation/trace/ftrace-design.txt
Frederic Weisbeckeree08c6e2009-03-07 05:52:59 +010044
Steven Rostedta2546fa2011-02-09 13:15:59 -050045config HAVE_FENTRY
46 bool
47 help
48 Arch supports the gcc options -pg with -mfentry
49
Steven Rostedtcf4db252010-10-14 23:32:44 -040050config HAVE_C_RECORDMCOUNT
Steven Rostedt72441cb2010-10-13 17:12:30 -040051 bool
52 help
53 C version of recordmcount available?
54
Steven Rostedt352ad252008-05-12 21:20:42 +020055config TRACER_MAX_TRACE
56 bool
57
Josh Triplettea632e92012-09-02 19:45:14 -070058config TRACE_CLOCK
59 bool
60
Steven Rostedt7a8e76a2008-09-29 23:02:38 -040061config RING_BUFFER
62 bool
Josh Triplettea632e92012-09-02 19:45:14 -070063 select TRACE_CLOCK
Steven Rostedt (Red Hat)22287682013-05-03 11:16:18 -040064 select IRQ_WORK
Steven Rostedt7a8e76a2008-09-29 23:02:38 -040065
Steven Rostedt78d904b2009-02-05 18:43:07 -050066config FTRACE_NMI_ENTER
67 bool
68 depends on HAVE_FTRACE_NMI_ENTER
69 default y
70
Tom Zanussi5f77a882009-04-08 03:14:01 -050071config EVENT_TRACING
Zhaoleib11c53e2009-05-25 18:11:59 +080072 select CONTEXT_SWITCH_TRACER
73 bool
74
Jamie Gennis88848da2013-02-21 17:55:28 -080075config GPU_TRACEPOINTS
76 bool
77
Zhaoleib11c53e2009-05-25 18:11:59 +080078config CONTEXT_SWITCH_TRACER
Tom Zanussi5f77a882009-04-08 03:14:01 -050079 bool
80
Steven Rostedt85bac322009-09-04 14:24:40 -040081config RING_BUFFER_ALLOW_SWAP
82 bool
83 help
84 Allow the use of ring_buffer_swap_cpu.
85 Adds a very slight overhead to tracing when enabled.
86
Steven Rostedt5e0a0932009-05-28 15:50:13 -040087# All tracer options should select GENERIC_TRACER. For those options that are
88# enabled by all tracers (context switch and event tracer) they select TRACING.
89# This allows those options to appear when no other tracer is selected. But the
90# options do not appear when something else selects it. We need the two options
91# GENERIC_TRACER and TRACING to avoid circular dependencies to accomplish the
Randy Dunlap40892362009-12-21 12:01:17 -080092# hiding of the automatic options.
Steven Rostedt5e0a0932009-05-28 15:50:13 -040093
Steven Rostedtbc0c38d2008-05-12 21:20:42 +020094config TRACING
95 bool
96 select DEBUG_FS
Steven Rostedt7a8e76a2008-09-29 23:02:38 -040097 select RING_BUFFER
Al Viroc2c80522008-10-31 19:50:41 +000098 select STACKTRACE if STACKTRACE_SUPPORT
Ingo Molnar5f87f112008-07-23 14:15:22 +020099 select TRACEPOINTS
Steven Rostedtf3384b22008-10-29 11:15:57 -0400100 select NOP_TRACER
Frederic Weisbecker769b0442009-03-06 17:21:49 +0100101 select BINARY_PRINTF
Tom Zanussi5f77a882009-04-08 03:14:01 -0500102 select EVENT_TRACING
Josh Triplettea632e92012-09-02 19:45:14 -0700103 select TRACE_CLOCK
Steven Rostedtbc0c38d2008-05-12 21:20:42 +0200104
Steven Rostedt5e0a0932009-05-28 15:50:13 -0400105config GENERIC_TRACER
106 bool
107 select TRACING
108
Ingo Molnar40ada302009-03-05 21:19:55 +0100109#
110# Minimum requirements an architecture has to meet for us to
111# be able to offer generic tracing facilities:
112#
113config TRACING_SUPPORT
114 bool
Anton Vorontsov45b95602009-03-24 01:07:24 +0300115 # PPC32 has no irqflags tracing support, but it can use most of the
116 # tracers anyway, they were tested to build and work. Note that new
117 # exceptions to this list aren't welcomed, better implement the
118 # irqflags tracing for your architecture.
119 depends on TRACE_IRQFLAGS_SUPPORT || PPC32
Ingo Molnar40ada302009-03-05 21:19:55 +0100120 depends on STACKTRACE_SUPPORT
KOSAKI Motohiro422d3c72009-03-06 10:40:53 +0900121 default y
Ingo Molnar40ada302009-03-05 21:19:55 +0100122
123if TRACING_SUPPORT
124
Steven Rostedt4ed9f072009-04-20 10:47:36 -0400125menuconfig FTRACE
126 bool "Tracers"
Steven Rostedt65b77242009-05-07 12:49:27 -0400127 default y if DEBUG_KERNEL
Steven Rostedt4ed9f072009-04-20 10:47:36 -0400128 help
Randy Dunlap40892362009-12-21 12:01:17 -0800129 Enable the kernel tracing infrastructure.
Steven Rostedt4ed9f072009-04-20 10:47:36 -0400130
131if FTRACE
Peter Zijlstra17d80fd2008-10-21 16:31:18 +0200132
Steven Rostedt606576c2008-10-06 19:06:12 -0400133config FUNCTION_TRACER
Steven Rostedt1b29b012008-05-12 21:20:42 +0200134 bool "Kernel Function Tracer"
Steven Rostedt606576c2008-10-06 19:06:12 -0400135 depends on HAVE_FUNCTION_TRACER
Steven Rostedt4d7a0772009-02-18 22:06:18 -0500136 select KALLSYMS
Steven Rostedt5e0a0932009-05-28 15:50:13 -0400137 select GENERIC_TRACER
Steven Rostedt35e8e302008-05-12 21:20:42 +0200138 select CONTEXT_SWITCH_TRACER
Steven Rostedt1b29b012008-05-12 21:20:42 +0200139 help
140 Enable the kernel to trace every kernel function. This is done
141 by using a compiler feature to insert a small, 5-byte No-Operation
Randy Dunlap40892362009-12-21 12:01:17 -0800142 instruction at the beginning of every kernel function, which NOP
Steven Rostedt1b29b012008-05-12 21:20:42 +0200143 sequence is then dynamically patched into a tracer call when
144 tracing is enabled by the administrator. If it's runtime disabled
145 (the bootup default), then the overhead of the instructions is very
146 small and not measurable even in micro-benchmarks.
Steven Rostedt35e8e302008-05-12 21:20:42 +0200147
Frederic Weisbeckerfb526072008-11-25 21:07:04 +0100148config FUNCTION_GRAPH_TRACER
149 bool "Kernel Function Graph Tracer"
150 depends on HAVE_FUNCTION_GRAPH_TRACER
Frederic Weisbecker15e6cb32008-11-11 07:14:25 +0100151 depends on FUNCTION_TRACER
Steven Rostedteb4a0372009-06-18 12:53:21 -0400152 depends on !X86_32 || !CC_OPTIMIZE_FOR_SIZE
Ingo Molnar764f3b92008-12-03 10:33:58 +0100153 default y
Frederic Weisbecker15e6cb32008-11-11 07:14:25 +0100154 help
Frederic Weisbeckerfb526072008-11-25 21:07:04 +0100155 Enable the kernel to trace a function at both its return
156 and its entry.
Matt LaPlante692105b2009-01-26 11:12:25 +0100157 Its first purpose is to trace the duration of functions and
158 draw a call graph for each thread with some information like
Randy Dunlap40892362009-12-21 12:01:17 -0800159 the return value. This is done by setting the current return
Matt LaPlante692105b2009-01-26 11:12:25 +0100160 address on the current task structure into a stack of calls.
Frederic Weisbecker15e6cb32008-11-11 07:14:25 +0100161
Steven Rostedtbac429f2009-03-20 12:50:56 -0400162
Joel Fernandes2b3a26c2017-10-05 17:54:32 -0700163config PREEMPTIRQ_EVENTS
164 bool "Enable trace events for preempt and irq disable/enable"
165 select TRACE_IRQFLAGS
166 depends on DEBUG_PREEMPT || !PROVE_LOCKING
167 default n
168 help
169 Enable tracing of disable and enable events for preemption and irqs.
170 For tracing preempt disable/enable events, DEBUG_PREEMPT must be
171 enabled. For tracing irq disable/enable events, PROVE_LOCKING must
172 be disabled.
173
Steven Rostedt81d68a92008-05-12 21:20:42 +0200174config IRQSOFF_TRACER
175 bool "Interrupts-off Latency Tracer"
176 default n
177 depends on TRACE_IRQFLAGS_SUPPORT
John Stultz592913e2010-07-13 17:56:20 -0700178 depends on !ARCH_USES_GETTIMEOFFSET
Steven Rostedt81d68a92008-05-12 21:20:42 +0200179 select TRACE_IRQFLAGS
Steven Rostedt5e0a0932009-05-28 15:50:13 -0400180 select GENERIC_TRACER
Steven Rostedt81d68a92008-05-12 21:20:42 +0200181 select TRACER_MAX_TRACE
Steven Rostedt85bac322009-09-04 14:24:40 -0400182 select RING_BUFFER_ALLOW_SWAP
Steven Rostedt (Red Hat)22cffc22013-03-05 07:30:24 -0500183 select TRACER_SNAPSHOT
Steven Rostedt (Red Hat)0b85ffc2013-03-05 14:50:23 -0500184 select TRACER_SNAPSHOT_PER_CPU_SWAP
Steven Rostedt81d68a92008-05-12 21:20:42 +0200185 help
186 This option measures the time spent in irqs-off critical
187 sections, with microsecond accuracy.
188
189 The default measurement method is a maximum search, which is
190 disabled by default and can be runtime (re-)started
191 via:
192
GeunSik Lim156f5a72009-06-02 15:01:37 +0900193 echo 0 > /sys/kernel/debug/tracing/tracing_max_latency
Steven Rostedt81d68a92008-05-12 21:20:42 +0200194
Randy Dunlap40892362009-12-21 12:01:17 -0800195 (Note that kernel size and overhead increase with this option
Steven Rostedt6cd8a4b2008-05-12 21:20:42 +0200196 enabled. This option and the preempt-off timing option can be
197 used together or separately.)
198
199config PREEMPT_TRACER
200 bool "Preemption-off Latency Tracer"
201 default n
John Stultz592913e2010-07-13 17:56:20 -0700202 depends on !ARCH_USES_GETTIMEOFFSET
Steven Rostedt6cd8a4b2008-05-12 21:20:42 +0200203 depends on PREEMPT
Steven Rostedt5e0a0932009-05-28 15:50:13 -0400204 select GENERIC_TRACER
Steven Rostedt6cd8a4b2008-05-12 21:20:42 +0200205 select TRACER_MAX_TRACE
Steven Rostedt85bac322009-09-04 14:24:40 -0400206 select RING_BUFFER_ALLOW_SWAP
Steven Rostedt (Red Hat)22cffc22013-03-05 07:30:24 -0500207 select TRACER_SNAPSHOT
Steven Rostedt (Red Hat)0b85ffc2013-03-05 14:50:23 -0500208 select TRACER_SNAPSHOT_PER_CPU_SWAP
Steven Rostedt6cd8a4b2008-05-12 21:20:42 +0200209 help
Randy Dunlap40892362009-12-21 12:01:17 -0800210 This option measures the time spent in preemption-off critical
Steven Rostedt6cd8a4b2008-05-12 21:20:42 +0200211 sections, with microsecond accuracy.
212
213 The default measurement method is a maximum search, which is
214 disabled by default and can be runtime (re-)started
215 via:
216
GeunSik Lim156f5a72009-06-02 15:01:37 +0900217 echo 0 > /sys/kernel/debug/tracing/tracing_max_latency
Steven Rostedt6cd8a4b2008-05-12 21:20:42 +0200218
Randy Dunlap40892362009-12-21 12:01:17 -0800219 (Note that kernel size and overhead increase with this option
Steven Rostedt6cd8a4b2008-05-12 21:20:42 +0200220 enabled. This option and the irqs-off timing option can be
221 used together or separately.)
222
Steven Rostedt352ad252008-05-12 21:20:42 +0200223config SCHED_TRACER
224 bool "Scheduling Latency Tracer"
Steven Rostedt5e0a0932009-05-28 15:50:13 -0400225 select GENERIC_TRACER
Steven Rostedt352ad252008-05-12 21:20:42 +0200226 select CONTEXT_SWITCH_TRACER
227 select TRACER_MAX_TRACE
Steven Rostedt (Red Hat)22cffc22013-03-05 07:30:24 -0500228 select TRACER_SNAPSHOT
Steven Rostedt352ad252008-05-12 21:20:42 +0200229 help
230 This tracer tracks the latency of the highest priority task
231 to be scheduled in, starting from the point it has woken up.
232
Steven Rostedt (Red Hat)e7c15cd2016-06-23 12:45:36 -0400233config HWLAT_TRACER
234 bool "Tracer to detect hardware latencies (like SMIs)"
235 select GENERIC_TRACER
236 help
237 This tracer, when enabled will create one or more kernel threads,
238 depening on what the cpumask file is set to, which each thread
239 spinning in a loop looking for interruptions caused by
240 something other than the kernel. For example, if a
241 System Management Interrupt (SMI) takes a noticeable amount of
242 time, this tracer will detect it. This is useful for testing
243 if a system is reliable for Real Time tasks.
244
245 Some files are created in the tracing directory when this
246 is enabled:
247
248 hwlat_detector/width - time in usecs for how long to spin for
249 hwlat_detector/window - time in usecs between the start of each
250 iteration
251
252 A kernel thread is created that will spin with interrupts disabled
253 for "width" microseconds in every "widow" cycle. It will not spin
254 for "window - width" microseconds, where the system can
255 continue to operate.
256
257 The output will appear in the trace and trace_pipe files.
258
259 When the tracer is not running, it has no affect on the system,
260 but when it is running, it can cause the system to be
261 periodically non responsive. Do not run this tracer on a
262 production system.
263
264 To enable this tracer, echo in "hwlat" into the current_tracer
265 file. Every time a latency is greater than tracing_thresh, it will
266 be recorded into the ring buffer.
267
Steven Rostedt897f17a2009-05-28 16:31:21 -0400268config ENABLE_DEFAULT_TRACERS
269 bool "Trace process context switches and events"
Steven Rostedt5e0a0932009-05-28 15:50:13 -0400270 depends on !GENERIC_TRACER
Steven Rostedtb77e38a2009-02-24 10:21:36 -0500271 select TRACING
272 help
Randy Dunlap40892362009-12-21 12:01:17 -0800273 This tracer hooks to various trace points in the kernel,
Steven Rostedtb77e38a2009-02-24 10:21:36 -0500274 allowing the user to pick and choose which trace point they
Steven Rostedt897f17a2009-05-28 16:31:21 -0400275 want to trace. It also includes the sched_switch tracer plugin.
Steven Rostedta7abe972009-04-20 10:59:34 -0400276
Frederic Weisbeckeree08c6e2009-03-07 05:52:59 +0100277config FTRACE_SYSCALLS
278 bool "Trace syscalls"
Josh Stone66700002009-08-24 14:43:11 -0700279 depends on HAVE_SYSCALL_TRACEPOINTS
Steven Rostedt5e0a0932009-05-28 15:50:13 -0400280 select GENERIC_TRACER
Frederic Weisbecker0ea1c412009-03-15 22:10:38 +0100281 select KALLSYMS
Frederic Weisbeckeree08c6e2009-03-07 05:52:59 +0100282 help
283 Basic tracer to catch the syscall entry and exit events.
284
Hiraku Toyookadebdd572012-12-26 11:53:00 +0900285config TRACER_SNAPSHOT
286 bool "Create a snapshot trace buffer"
287 select TRACER_MAX_TRACE
288 help
289 Allow tracing users to take snapshot of the current buffer using the
290 ftrace interface, e.g.:
291
292 echo 1 > /sys/kernel/debug/tracing/snapshot
293 cat snapshot
294
Steven Rostedt (Red Hat)0b85ffc2013-03-05 14:50:23 -0500295config TRACER_SNAPSHOT_PER_CPU_SWAP
296 bool "Allow snapshot to swap per CPU"
297 depends on TRACER_SNAPSHOT
298 select RING_BUFFER_ALLOW_SWAP
299 help
300 Allow doing a snapshot of a single CPU buffer instead of a
301 full swap (all buffers). If this is set, then the following is
302 allowed:
303
304 echo 1 > /sys/kernel/debug/tracing/per_cpu/cpu2/snapshot
305
306 After which, only the tracing buffer for CPU 2 was swapped with
307 the main tracing buffer, and the other CPU buffers remain the same.
308
309 When this is enabled, this adds a little more overhead to the
310 trace recording, as it needs to add some checks to synchronize
311 recording with swaps. But this does not affect the performance
312 of the overall system. This is enabled by default when the preempt
313 or irq latency tracers are enabled, as those need to swap as well
314 and already adds the overhead (plus a lot more).
315
Steven Rostedt2ed84ee2008-11-12 15:24:24 -0500316config TRACE_BRANCH_PROFILING
Steven Rostedt9ae5b872009-04-20 10:27:58 -0400317 bool
Steven Rostedt5e0a0932009-05-28 15:50:13 -0400318 select GENERIC_TRACER
Steven Rostedt9ae5b872009-04-20 10:27:58 -0400319
320choice
321 prompt "Branch Profiling"
322 default BRANCH_PROFILE_NONE
323 help
324 The branch profiling is a software profiler. It will add hooks
325 into the C conditionals to test which path a branch takes.
326
327 The likely/unlikely profiler only looks at the conditions that
328 are annotated with a likely or unlikely macro.
329
Randy Dunlap40892362009-12-21 12:01:17 -0800330 The "all branch" profiler will profile every if-statement in the
Steven Rostedt9ae5b872009-04-20 10:27:58 -0400331 kernel. This profiler will also enable the likely/unlikely
Randy Dunlap40892362009-12-21 12:01:17 -0800332 profiler.
Steven Rostedt9ae5b872009-04-20 10:27:58 -0400333
Randy Dunlap40892362009-12-21 12:01:17 -0800334 Either of the above profilers adds a bit of overhead to the system.
335 If unsure, choose "No branch profiling".
Steven Rostedt9ae5b872009-04-20 10:27:58 -0400336
337config BRANCH_PROFILE_NONE
338 bool "No branch profiling"
339 help
Randy Dunlap40892362009-12-21 12:01:17 -0800340 No branch profiling. Branch profiling adds a bit of overhead.
341 Only enable it if you want to analyse the branching behavior.
342 Otherwise keep it disabled.
Steven Rostedt9ae5b872009-04-20 10:27:58 -0400343
344config PROFILE_ANNOTATED_BRANCHES
345 bool "Trace likely/unlikely profiler"
346 select TRACE_BRANCH_PROFILING
Steven Rostedt1f0d69a2008-11-12 00:14:39 -0500347 help
Masanari Iida59bf8962012-04-18 00:01:21 +0900348 This tracer profiles all likely and unlikely macros
Steven Rostedt1f0d69a2008-11-12 00:14:39 -0500349 in the kernel. It will display the results in:
350
David Rientjes13e5bef2011-03-16 17:17:08 -0700351 /sys/kernel/debug/tracing/trace_stat/branch_annotated
Steven Rostedt1f0d69a2008-11-12 00:14:39 -0500352
Randy Dunlap40892362009-12-21 12:01:17 -0800353 Note: this will add a significant overhead; only turn this
Steven Rostedt1f0d69a2008-11-12 00:14:39 -0500354 on if you need to profile the system's use of these macros.
355
Steven Rostedt2bcd5212008-11-21 01:30:54 -0500356config PROFILE_ALL_BRANCHES
357 bool "Profile all if conditionals"
Steven Rostedt9ae5b872009-04-20 10:27:58 -0400358 select TRACE_BRANCH_PROFILING
Steven Rostedt2bcd5212008-11-21 01:30:54 -0500359 help
360 This tracer profiles all branch conditions. Every if ()
361 taken in the kernel is recorded whether it hit or miss.
362 The results will be displayed in:
363
David Rientjes13e5bef2011-03-16 17:17:08 -0700364 /sys/kernel/debug/tracing/trace_stat/branch_all
Steven Rostedt2bcd5212008-11-21 01:30:54 -0500365
Steven Rostedt9ae5b872009-04-20 10:27:58 -0400366 This option also enables the likely/unlikely profiler.
367
Steven Rostedt2bcd5212008-11-21 01:30:54 -0500368 This configuration, when enabled, will impose a great overhead
369 on the system. This should only be enabled when the system
Randy Dunlap40892362009-12-21 12:01:17 -0800370 is to be analyzed in much detail.
Steven Rostedt9ae5b872009-04-20 10:27:58 -0400371endchoice
Steven Rostedt2bcd5212008-11-21 01:30:54 -0500372
Steven Rostedt2ed84ee2008-11-12 15:24:24 -0500373config TRACING_BRANCHES
Steven Rostedt52f232c2008-11-12 00:14:40 -0500374 bool
375 help
376 Selected by tracers that will trace the likely and unlikely
377 conditions. This prevents the tracers themselves from being
378 profiled. Profiling the tracing infrastructure can only happen
379 when the likelys and unlikelys are not being traced.
380
Steven Rostedt2ed84ee2008-11-12 15:24:24 -0500381config BRANCH_TRACER
Steven Rostedt52f232c2008-11-12 00:14:40 -0500382 bool "Trace likely/unlikely instances"
Steven Rostedt2ed84ee2008-11-12 15:24:24 -0500383 depends on TRACE_BRANCH_PROFILING
384 select TRACING_BRANCHES
Steven Rostedt52f232c2008-11-12 00:14:40 -0500385 help
386 This traces the events of likely and unlikely condition
387 calls in the kernel. The difference between this and the
388 "Trace likely/unlikely profiler" is that this is not a
389 histogram of the callers, but actually places the calling
390 events into a running trace buffer to see when and where the
391 events happened, as well as their results.
392
393 Say N if unsure.
394
Steven Rostedte5a81b62008-08-27 23:31:01 -0400395config STACK_TRACER
396 bool "Trace max stack"
Steven Rostedt606576c2008-10-06 19:06:12 -0400397 depends on HAVE_FUNCTION_TRACER
Steven Rostedt606576c2008-10-06 19:06:12 -0400398 select FUNCTION_TRACER
Steven Rostedte5a81b62008-08-27 23:31:01 -0400399 select STACKTRACE
Steven Rostedt4d7a0772009-02-18 22:06:18 -0500400 select KALLSYMS
Steven Rostedte5a81b62008-08-27 23:31:01 -0400401 help
Ingo Molnar4519d9e2008-10-14 14:15:43 +0200402 This special tracer records the maximum stack footprint of the
GeunSik Lim156f5a72009-06-02 15:01:37 +0900403 kernel and displays it in /sys/kernel/debug/tracing/stack_trace.
Ingo Molnar4519d9e2008-10-14 14:15:43 +0200404
405 This tracer works by hooking into every function call that the
406 kernel executes, and keeping a maximum stack depth value and
Steven Rostedtf38f1d22008-12-16 23:06:40 -0500407 stack-trace saved. If this is configured with DYNAMIC_FTRACE
408 then it will not have any overhead while the stack tracer
409 is disabled.
410
411 To enable the stack tracer on bootup, pass in 'stacktrace'
412 on the kernel command line.
413
414 The stack tracer can also be enabled or disabled via the
415 sysctl kernel.stack_tracer_enabled
Ingo Molnar4519d9e2008-10-14 14:15:43 +0200416
417 Say N if unsure.
Steven Rostedte5a81b62008-08-27 23:31:01 -0400418
Frederic Weisbecker2db270a2009-02-07 20:46:45 +0100419config BLK_DEV_IO_TRACE
Randy Dunlap40892362009-12-21 12:01:17 -0800420 bool "Support for tracing block IO actions"
Frederic Weisbecker2db270a2009-02-07 20:46:45 +0100421 depends on SYSFS
Ingo Molnar1dfba052009-02-09 12:06:54 +0100422 depends on BLOCK
Frederic Weisbecker2db270a2009-02-07 20:46:45 +0100423 select RELAY
424 select DEBUG_FS
425 select TRACEPOINTS
Steven Rostedt5e0a0932009-05-28 15:50:13 -0400426 select GENERIC_TRACER
Frederic Weisbecker2db270a2009-02-07 20:46:45 +0100427 select STACKTRACE
428 help
429 Say Y here if you want to be able to trace the block layer actions
430 on a given queue. Tracing allows you to see any traffic happening
431 on a block device queue. For more information (and the userspace
432 support tools needed), fetch the blktrace tools from:
433
434 git://git.kernel.dk/blktrace.git
435
436 Tracing also is possible using the ftrace interface, e.g.:
437
438 echo 1 > /sys/block/sda/sda1/trace/enable
439 echo blk > /sys/kernel/debug/tracing/current_tracer
440 cat /sys/kernel/debug/tracing/trace_pipe
441
442 If unsure, say N.
Frederic Weisbecker36994e52008-12-29 13:42:23 -0800443
Masami Hiramatsu77b44d12009-11-03 19:12:47 -0500444config KPROBE_EVENT
Masami Hiramatsu413d37d2009-08-13 16:35:11 -0400445 depends on KPROBES
Heiko Carstensf850c30c2010-02-10 17:25:17 +0100446 depends on HAVE_REGS_AND_STACK_ACCESS_API
Masami Hiramatsu77b44d12009-11-03 19:12:47 -0500447 bool "Enable kprobes-based dynamic events"
Masami Hiramatsu413d37d2009-08-13 16:35:11 -0400448 select TRACING
Srikar Dronamraju8ab83f52012-04-09 14:41:44 +0530449 select PROBE_EVENTS
Masami Hiramatsu77b44d12009-11-03 19:12:47 -0500450 default y
Masami Hiramatsu413d37d2009-08-13 16:35:11 -0400451 help
Randy Dunlap40892362009-12-21 12:01:17 -0800452 This allows the user to add tracing events (similar to tracepoints)
453 on the fly via the ftrace interface. See
454 Documentation/trace/kprobetrace.txt for more details.
Masami Hiramatsu77b44d12009-11-03 19:12:47 -0500455
456 Those events can be inserted wherever kprobes can probe, and record
457 various register and memory values.
458
Randy Dunlap40892362009-12-21 12:01:17 -0800459 This option is also required by perf-probe subcommand of perf tools.
460 If you want to use perf tools, this option is strongly recommended.
Masami Hiramatsu413d37d2009-08-13 16:35:11 -0400461
Srikar Dronamrajuf3f096c2012-04-11 16:00:43 +0530462config UPROBE_EVENT
463 bool "Enable uprobes-based dynamic events"
464 depends on ARCH_SUPPORTS_UPROBES
465 depends on MMU
David A. Long09294e32014-03-07 10:32:22 -0500466 depends on PERF_EVENTS
Srikar Dronamrajuf3f096c2012-04-11 16:00:43 +0530467 select UPROBES
468 select PROBE_EVENTS
469 select TRACING
470 default n
471 help
472 This allows the user to add tracing events on top of userspace
473 dynamic events (similar to tracepoints) on the fly via the trace
474 events interface. Those events can be inserted wherever uprobes
475 can probe, and record various registers.
476 This option is required if you plan to use perf-probe subcommand
477 of perf tools on user space applications.
478
Ingo Molnare1abf2c2015-04-02 15:51:39 +0200479config BPF_EVENTS
480 depends on BPF_SYSCALL
Steven Rostedta31d82d2015-11-10 15:28:17 -0500481 depends on (KPROBE_EVENT || UPROBE_EVENT) && PERF_EVENTS
Ingo Molnare1abf2c2015-04-02 15:51:39 +0200482 bool
483 default y
484 help
485 This allows the user to attach BPF programs to kprobe events.
486
Srikar Dronamraju8ab83f52012-04-09 14:41:44 +0530487config PROBE_EVENTS
488 def_bool n
489
Steven Rostedt3d083392008-05-12 21:20:42 +0200490config DYNAMIC_FTRACE
Steven Rostedtdb050212013-02-27 21:48:09 -0500491 bool "enable/disable function tracing dynamically"
Steven Rostedt606576c2008-10-06 19:06:12 -0400492 depends on FUNCTION_TRACER
Steven Rostedt677aa9f2008-05-17 00:01:36 -0400493 depends on HAVE_DYNAMIC_FTRACE
Steven Rostedt3d083392008-05-12 21:20:42 +0200494 default y
495 help
Steven Rostedtdb050212013-02-27 21:48:09 -0500496 This option will modify all the calls to function tracing
497 dynamically (will patch them out of the binary image and
498 replace them with a No-Op instruction) on boot up. During
499 compile time, a table is made of all the locations that ftrace
500 can function trace, and this table is linked into the kernel
501 image. When this is enabled, functions can be individually
502 enabled, and the functions not enabled will not affect
503 performance of the system.
504
505 See the files in /sys/kernel/debug/tracing:
506 available_filter_functions
507 set_ftrace_filter
508 set_ftrace_notrace
Steven Rostedt3d083392008-05-12 21:20:42 +0200509
Randy Dunlap40892362009-12-21 12:01:17 -0800510 This way a CONFIG_FUNCTION_TRACER kernel is slightly larger, but
511 otherwise has native performance as long as no tracing is active.
Steven Rostedt3d083392008-05-12 21:20:42 +0200512
Masami Hiramatsu06aeaae2012-09-28 17:15:17 +0900513config DYNAMIC_FTRACE_WITH_REGS
514 def_bool y
515 depends on DYNAMIC_FTRACE
516 depends on HAVE_DYNAMIC_FTRACE_WITH_REGS
517
Steven Rostedtbac429f2009-03-20 12:50:56 -0400518config FUNCTION_PROFILER
519 bool "Kernel function profiler"
Steven Rostedt493762f2009-03-23 17:12:36 -0400520 depends on FUNCTION_TRACER
Steven Rostedtbac429f2009-03-20 12:50:56 -0400521 default n
522 help
Randy Dunlap40892362009-12-21 12:01:17 -0800523 This option enables the kernel function profiler. A file is created
524 in debugfs called function_profile_enabled which defaults to zero.
525 When a 1 is echoed into this file profiling begins, and when a
526 zero is entered, profiling stops. A "functions" file is created in
527 the trace_stats directory; this file shows the list of functions that
528 have been hit and their counters.
Steven Rostedtbac429f2009-03-20 12:50:56 -0400529
Randy Dunlap40892362009-12-21 12:01:17 -0800530 If in doubt, say N.
Steven Rostedtbac429f2009-03-20 12:50:56 -0400531
Steven Rostedt8da38212008-08-14 15:45:07 -0400532config FTRACE_MCOUNT_RECORD
533 def_bool y
534 depends on DYNAMIC_FTRACE
535 depends on HAVE_FTRACE_MCOUNT_RECORD
536
Steven Rostedt60a11772008-05-12 21:20:44 +0200537config FTRACE_SELFTEST
538 bool
539
540config FTRACE_STARTUP_TEST
541 bool "Perform a startup test on ftrace"
Steven Rostedt5e0a0932009-05-28 15:50:13 -0400542 depends on GENERIC_TRACER
Steven Rostedt60a11772008-05-12 21:20:44 +0200543 select FTRACE_SELFTEST
544 help
545 This option performs a series of startup tests on ftrace. On bootup
546 a series of tests are made to verify that the tracer is
547 functioning properly. It will do tests on all the configured
548 tracers of ftrace.
Peter Zijlstra17d80fd2008-10-21 16:31:18 +0200549
Steven Rostedt1f5a6b42009-09-14 11:58:24 -0400550config EVENT_TRACE_TEST_SYSCALLS
551 bool "Run selftest on syscall events"
552 depends on FTRACE_STARTUP_TEST
553 help
554 This option will also enable testing every syscall event.
555 It only enables the event and disables it and runs various loads
556 with the event enabled. This adds a bit more time for kernel boot
557 up since it runs this on every system call defined.
558
559 TBD - enable a way to actually call the syscalls as we test their
560 events
561
Pekka Paalanenfe6f90e2009-01-03 21:23:51 +0200562config MMIOTRACE
563 bool "Memory mapped IO tracing"
Ingo Molnar40ada302009-03-05 21:19:55 +0100564 depends on HAVE_MMIOTRACE_SUPPORT && PCI
Steven Rostedt5e0a0932009-05-28 15:50:13 -0400565 select GENERIC_TRACER
Pekka Paalanenfe6f90e2009-01-03 21:23:51 +0200566 help
567 Mmiotrace traces Memory Mapped I/O access and is meant for
568 debugging and reverse engineering. It is called from the ioremap
569 implementation and works via page faults. Tracing is disabled by
570 default and can be enabled at run-time.
571
Li Zefan4d1f4372009-04-10 08:48:36 +0800572 See Documentation/trace/mmiotrace.txt.
Pekka Paalanenfe6f90e2009-01-03 21:23:51 +0200573 If you are not helping to develop drivers, say N.
574
Tom Zanussi08d43a52015-12-10 12:50:50 -0600575config TRACING_MAP
576 bool
577 depends on ARCH_HAVE_NMI_SAFE_CMPXCHG
Tom Zanussi08d43a52015-12-10 12:50:50 -0600578 help
579 tracing_map is a special-purpose lock-free map for tracing,
580 separated out as a stand-alone facility in order to allow it
581 to be shared between multiple tracers. It isn't meant to be
582 generally used outside of that context, and is normally
583 selected by tracers that use it.
584
Tom Zanussi7ef224d2016-03-03 12:54:42 -0600585config HIST_TRIGGERS
586 bool "Histogram triggers"
587 depends on ARCH_HAVE_NMI_SAFE_CMPXCHG
588 select TRACING_MAP
Tom Zanussi7ad8fb62016-07-03 08:51:34 -0500589 select TRACING
Tom Zanussi7ef224d2016-03-03 12:54:42 -0600590 default n
591 help
592 Hist triggers allow one or more arbitrary trace event fields
593 to be aggregated into hash tables and dumped to stdout by
594 reading a debugfs/tracefs file. They're useful for
595 gathering quick and dirty (though precise) summaries of
596 event activity as an initial guide for further investigation
597 using more advanced tools.
598
599 See Documentation/trace/events.txt.
600 If in doubt, say N.
601
Pekka Paalanenfe6f90e2009-01-03 21:23:51 +0200602config MMIOTRACE_TEST
603 tristate "Test module for mmiotrace"
604 depends on MMIOTRACE && m
605 help
606 This is a dumb module for testing mmiotrace. It is very dangerous
607 as it will write garbage to IO memory starting at a given address.
608 However, it should be safe to use on e.g. unused portion of VRAM.
609
610 Say N, unless you absolutely know what you are doing.
611
Steven Rostedt (Red Hat)81dc9f02014-05-29 22:49:07 -0400612config TRACEPOINT_BENCHMARK
613 bool "Add tracepoint that benchmarks tracepoints"
614 help
615 This option creates the tracepoint "benchmark:benchmark_event".
616 When the tracepoint is enabled, it kicks off a kernel thread that
617 goes into an infinite loop (calling cond_sched() to let other tasks
618 run), and calls the tracepoint. Each iteration will record the time
619 it took to write to the tracepoint and the next iteration that
620 data will be passed to the tracepoint itself. That is, the tracepoint
621 will report the time it took to do the previous tracepoint.
622 The string written to the tracepoint is a static string of 128 bytes
623 to keep the time the same. The initial string is simply a write of
624 "START". The second string records the cold cache time of the first
625 write which is not added to the rest of the calculations.
626
627 As it is a tight loop, it benchmarks as hot cache. That's fine because
628 we care most about hot paths that are probably in cache already.
629
630 An example of the output:
631
632 START
633 first=3672 [COLD CACHED]
634 last=632 first=3672 max=632 min=632 avg=316 std=446 std^2=199712
635 last=278 first=3672 max=632 min=278 avg=303 std=316 std^2=100337
636 last=277 first=3672 max=632 min=277 avg=296 std=258 std^2=67064
637 last=273 first=3672 max=632 min=273 avg=292 std=224 std^2=50411
638 last=273 first=3672 max=632 min=273 avg=288 std=200 std^2=40389
639 last=281 first=3672 max=632 min=273 avg=287 std=183 std^2=33666
640
641
Steven Rostedt5092dbc2009-05-05 22:47:18 -0400642config RING_BUFFER_BENCHMARK
643 tristate "Ring buffer benchmark stress tester"
644 depends on RING_BUFFER
645 help
Randy Dunlap40892362009-12-21 12:01:17 -0800646 This option creates a test to stress the ring buffer and benchmark it.
647 It creates its own ring buffer such that it will not interfere with
Steven Rostedt5092dbc2009-05-05 22:47:18 -0400648 any other users of the ring buffer (such as ftrace). It then creates
649 a producer and consumer that will run for 10 seconds and sleep for
650 10 seconds. Each interval it will print out the number of events
651 it recorded and give a rough estimate of how long each iteration took.
652
653 It does not disable interrupts or raise its priority, so it may be
654 affected by processes that are running.
655
Randy Dunlap40892362009-12-21 12:01:17 -0800656 If unsure, say N.
Steven Rostedt5092dbc2009-05-05 22:47:18 -0400657
Steven Rostedt (Red Hat)6c43e552013-03-15 11:32:53 -0400658config RING_BUFFER_STARTUP_TEST
659 bool "Ring buffer startup self test"
660 depends on RING_BUFFER
661 help
662 Run a simple self test on the ring buffer on boot up. Late in the
663 kernel boot sequence, the test will start that kicks off
664 a thread per cpu. Each thread will write various size events
665 into the ring buffer. Another thread is created to send IPIs
666 to each of the threads, where the IPI handler will also write
667 to the ring buffer, to test/stress the nesting ability.
668 If any anomalies are discovered, a warning will be displayed
669 and all ring buffers will be disabled.
670
671 The test runs for 10 seconds. This will slow your boot time
672 by at least 10 more seconds.
673
674 At the end of the test, statics and more checks are done.
675 It will output the stats of each per cpu buffer. What
676 was written, the sizes, what was read, what was lost, and
677 other similar details.
678
679 If unsure, say N
680
Steven Rostedt (Red Hat)98284132015-03-31 17:23:45 -0400681config TRACE_ENUM_MAP_FILE
682 bool "Show enum mappings for trace events"
683 depends on TRACING
684 help
685 The "print fmt" of the trace events will show the enum names instead
686 of their values. This can cause problems for user space tools that
687 use this string to parse the raw data as user space does not know
688 how to convert the string to its value.
689
690 To fix this, there's a special macro in the kernel that can be used
691 to convert the enum into its value. If this macro is used, then the
692 print fmt strings will have the enums converted to their values.
693
694 If something does not get converted properly, this option can be
695 used to show what enums the kernel tried to convert.
696
697 This option is for debugging the enum conversions. A file is created
698 in the tracing directory called "enum_map" that will show the enum
699 names matched with their values and what trace event system they
700 belong too.
701
702 Normally, the mapping of the strings to values will be freed after
703 boot up or module load. With this option, they will not be freed, as
704 they are needed for the "enum_map" file. Enabling this option will
705 increase the memory footprint of the running kernel.
706
707 If unsure, say N
708
Tal Shorerddd70282015-08-01 15:27:58 +0300709config TRACING_EVENTS_GPIO
710 bool "Trace gpio events"
711 depends on GPIOLIB
712 default y
713 help
714 Enable tracing events for gpio subsystem
715
Steven Rostedt4ed9f072009-04-20 10:47:36 -0400716endif # FTRACE
Ingo Molnar40ada302009-03-05 21:19:55 +0100717
718endif # TRACING_SUPPORT
719