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