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