blob: 14d9505178caacf014a497793969676fff809fa7 [file] [log] [blame]
Arnaldo Carvalho de Melo16444a82008-05-12 21:20:42 +02001#
2# Architectures that offer an FTRACE implementation should select HAVE_FTRACE:
3#
4config HAVE_FTRACE
5 bool
Steven Rostedtbc0c38d2008-05-12 21:20:42 +02006
Steven Rostedt677aa9f2008-05-17 00:01:36 -04007config HAVE_DYNAMIC_FTRACE
8 bool
9
Steven Rostedt8da38212008-08-14 15:45:07 -040010config HAVE_FTRACE_MCOUNT_RECORD
11 bool
12
Steven Rostedt352ad252008-05-12 21:20:42 +020013config TRACER_MAX_TRACE
14 bool
15
Steven Rostedtbc0c38d2008-05-12 21:20:42 +020016config TRACING
17 bool
18 select DEBUG_FS
Ingo Molnar86387f72008-05-12 21:20:51 +020019 select STACKTRACE
Ingo Molnar5f87f112008-07-23 14:15:22 +020020 select TRACEPOINTS
Steven Rostedtbc0c38d2008-05-12 21:20:42 +020021
Steven Rostedt1b29b012008-05-12 21:20:42 +020022config FTRACE
23 bool "Kernel Function Tracer"
Ingo Molnar694379e2008-05-12 21:20:54 +020024 depends on HAVE_FTRACE
Steven Rostedt1b29b012008-05-12 21:20:42 +020025 select FRAME_POINTER
26 select TRACING
Steven Rostedt35e8e302008-05-12 21:20:42 +020027 select CONTEXT_SWITCH_TRACER
Steven Rostedt1b29b012008-05-12 21:20:42 +020028 help
29 Enable the kernel to trace every kernel function. This is done
30 by using a compiler feature to insert a small, 5-byte No-Operation
31 instruction to the beginning of every kernel function, which NOP
32 sequence is then dynamically patched into a tracer call when
33 tracing is enabled by the administrator. If it's runtime disabled
34 (the bootup default), then the overhead of the instructions is very
35 small and not measurable even in micro-benchmarks.
Steven Rostedt35e8e302008-05-12 21:20:42 +020036
Steven Rostedt81d68a92008-05-12 21:20:42 +020037config IRQSOFF_TRACER
38 bool "Interrupts-off Latency Tracer"
39 default n
40 depends on TRACE_IRQFLAGS_SUPPORT
41 depends on GENERIC_TIME
Ingo Molnarc1d23272008-05-12 21:20:55 +020042 depends on HAVE_FTRACE
Steven Rostedt81d68a92008-05-12 21:20:42 +020043 select TRACE_IRQFLAGS
44 select TRACING
45 select TRACER_MAX_TRACE
46 help
47 This option measures the time spent in irqs-off critical
48 sections, with microsecond accuracy.
49
50 The default measurement method is a maximum search, which is
51 disabled by default and can be runtime (re-)started
52 via:
53
54 echo 0 > /debugfs/tracing/tracing_max_latency
55
Steven Rostedt6cd8a4b2008-05-12 21:20:42 +020056 (Note that kernel size and overhead increases with this option
57 enabled. This option and the preempt-off timing option can be
58 used together or separately.)
59
60config PREEMPT_TRACER
61 bool "Preemption-off Latency Tracer"
62 default n
63 depends on GENERIC_TIME
64 depends on PREEMPT
Ingo Molnarc1d23272008-05-12 21:20:55 +020065 depends on HAVE_FTRACE
Steven Rostedt6cd8a4b2008-05-12 21:20:42 +020066 select TRACING
67 select TRACER_MAX_TRACE
68 help
69 This option measures the time spent in preemption off critical
70 sections, with microsecond accuracy.
71
72 The default measurement method is a maximum search, which is
73 disabled by default and can be runtime (re-)started
74 via:
75
76 echo 0 > /debugfs/tracing/tracing_max_latency
77
78 (Note that kernel size and overhead increases with this option
79 enabled. This option and the irqs-off timing option can be
80 used together or separately.)
81
Ingo Molnarf06c3812008-05-12 21:20:47 +020082config SYSPROF_TRACER
83 bool "Sysprof Tracer"
Thomas Gleixner4d2df792008-05-24 15:00:46 +020084 depends on X86
Ingo Molnarf06c3812008-05-12 21:20:47 +020085 select TRACING
86 help
87 This tracer provides the trace needed by the 'Sysprof' userspace
88 tool.
89
Steven Rostedt352ad252008-05-12 21:20:42 +020090config SCHED_TRACER
91 bool "Scheduling Latency Tracer"
Ingo Molnarc1d23272008-05-12 21:20:55 +020092 depends on HAVE_FTRACE
Steven Rostedt352ad252008-05-12 21:20:42 +020093 select TRACING
94 select CONTEXT_SWITCH_TRACER
95 select TRACER_MAX_TRACE
96 help
97 This tracer tracks the latency of the highest priority task
98 to be scheduled in, starting from the point it has woken up.
99
Steven Rostedt35e8e302008-05-12 21:20:42 +0200100config CONTEXT_SWITCH_TRACER
101 bool "Trace process context switches"
Ingo Molnarc1d23272008-05-12 21:20:55 +0200102 depends on HAVE_FTRACE
Steven Rostedt35e8e302008-05-12 21:20:42 +0200103 select TRACING
104 select MARKERS
105 help
106 This tracer gets called from the context switch and records
107 all switching of tasks.
108
Steven Rostedt3d083392008-05-12 21:20:42 +0200109config DYNAMIC_FTRACE
110 bool "enable/disable ftrace tracepoints dynamically"
111 depends on FTRACE
Steven Rostedt677aa9f2008-05-17 00:01:36 -0400112 depends on HAVE_DYNAMIC_FTRACE
Steven Rostedt3d083392008-05-12 21:20:42 +0200113 default y
114 help
115 This option will modify all the calls to ftrace dynamically
116 (will patch them out of the binary image and replaces them
117 with a No-Op instruction) as they are called. A table is
118 created to dynamically enable them again.
119
120 This way a CONFIG_FTRACE kernel is slightly larger, but otherwise
121 has native performance as long as no tracing is active.
122
123 The changes to the code are done by a kernel thread that
124 wakes up once a second and checks to see if any ftrace calls
125 were made. If so, it runs stop_machine (stops all CPUS)
126 and modifies the code to jump over the call to ftrace.
Steven Rostedt60a11772008-05-12 21:20:44 +0200127
Steven Rostedt8da38212008-08-14 15:45:07 -0400128config FTRACE_MCOUNT_RECORD
129 def_bool y
130 depends on DYNAMIC_FTRACE
131 depends on HAVE_FTRACE_MCOUNT_RECORD
132
Steven Rostedt60a11772008-05-12 21:20:44 +0200133config FTRACE_SELFTEST
134 bool
135
136config FTRACE_STARTUP_TEST
137 bool "Perform a startup test on ftrace"
138 depends on TRACING
139 select FTRACE_SELFTEST
140 help
141 This option performs a series of startup tests on ftrace. On bootup
142 a series of tests are made to verify that the tracer is
143 functioning properly. It will do tests on all the configured
144 tracers of ftrace.