]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blob - kernel/trace/Kconfig
bc535cb91de9e42138b9f11438812a3ff811414b
[linux-2.6-omap-h63xx.git] / 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         select NOP_TRACER
12
13 config HAVE_DYNAMIC_FTRACE
14         bool
15
16 config HAVE_FTRACE_MCOUNT_RECORD
17         bool
18
19 config TRACER_MAX_TRACE
20         bool
21
22 config RING_BUFFER
23         bool
24
25 config TRACING
26         bool
27         select DEBUG_FS
28         select RING_BUFFER
29         select STACKTRACE
30         select TRACEPOINTS
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         help
127           This tracer helps developers to optimize boot times: it records
128           the timings of the initcalls and traces key events and the identity
129           of tasks that can cause boot delays, such as context-switches.
130
131           Its aim is to be parsed by the /scripts/bootgraph.pl tool to
132           produce pretty graphics about boot inefficiencies, giving a visual
133           representation of the delays during initcalls - but the raw
134           /debug/tracing/trace text output is readable too.
135
136           ( Note that tracing self tests can't be enabled if this tracer is
137             selected, because the self-tests are an initcall as well and that
138             would invalidate the boot trace. )
139
140 config STACK_TRACER
141         bool "Trace max stack"
142         depends on HAVE_FUNCTION_TRACER
143         depends on DEBUG_KERNEL
144         select FUNCTION_TRACER
145         select STACKTRACE
146         help
147           This special tracer records the maximum stack footprint of the
148           kernel and displays it in debugfs/tracing/stack_trace.
149
150           This tracer works by hooking into every function call that the
151           kernel executes, and keeping a maximum stack depth value and
152           stack-trace saved. Because this logic has to execute in every
153           kernel function, all the time, this option can slow down the
154           kernel measurably and is generally intended for kernel
155           developers only.
156
157           Say N if unsure.
158
159 config DYNAMIC_FTRACE
160         bool "enable/disable ftrace tracepoints dynamically"
161         depends on FUNCTION_TRACER
162         depends on HAVE_DYNAMIC_FTRACE
163         depends on DEBUG_KERNEL
164         default y
165         help
166          This option will modify all the calls to ftrace dynamically
167          (will patch them out of the binary image and replaces them
168          with a No-Op instruction) as they are called. A table is
169          created to dynamically enable them again.
170
171          This way a CONFIG_FUNCTION_TRACER kernel is slightly larger, but otherwise
172          has native performance as long as no tracing is active.
173
174          The changes to the code are done by a kernel thread that
175          wakes up once a second and checks to see if any ftrace calls
176          were made. If so, it runs stop_machine (stops all CPUS)
177          and modifies the code to jump over the call to ftrace.
178
179 config FTRACE_MCOUNT_RECORD
180         def_bool y
181         depends on DYNAMIC_FTRACE
182         depends on HAVE_FTRACE_MCOUNT_RECORD
183
184 config FTRACE_SELFTEST
185         bool
186
187 config FTRACE_STARTUP_TEST
188         bool "Perform a startup test on ftrace"
189         depends on TRACING && DEBUG_KERNEL && !BOOT_TRACER
190         select FTRACE_SELFTEST
191         help
192           This option performs a series of startup tests on ftrace. On bootup
193           a series of tests are made to verify that the tracer is
194           functioning properly. It will do tests on all the configured
195           tracers of ftrace.
196
197 endmenu