diff options
Diffstat (limited to 'kernel/trace/Kconfig')
| -rw-r--r-- | kernel/trace/Kconfig | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig new file mode 100644 index 000000000000..5c2295b29f2c --- /dev/null +++ b/kernel/trace/Kconfig | |||
| @@ -0,0 +1,127 @@ | |||
| 1 | # | ||
| 2 | # Architectures that offer an FTRACE implementation should select HAVE_FTRACE: | ||
| 3 | # | ||
| 4 | config HAVE_FTRACE | ||
| 5 | bool | ||
| 6 | |||
| 7 | config HAVE_DYNAMIC_FTRACE | ||
| 8 | bool | ||
| 9 | |||
| 10 | config TRACER_MAX_TRACE | ||
| 11 | bool | ||
| 12 | |||
| 13 | config TRACING | ||
| 14 | bool | ||
| 15 | select DEBUG_FS | ||
| 16 | select STACKTRACE | ||
| 17 | |||
| 18 | config FTRACE | ||
| 19 | bool "Kernel Function Tracer" | ||
| 20 | depends on HAVE_FTRACE | ||
| 21 | select FRAME_POINTER | ||
| 22 | select TRACING | ||
| 23 | select CONTEXT_SWITCH_TRACER | ||
| 24 | help | ||
| 25 | Enable the kernel to trace every kernel function. This is done | ||
| 26 | by using a compiler feature to insert a small, 5-byte No-Operation | ||
| 27 | instruction to the beginning of every kernel function, which NOP | ||
| 28 | sequence is then dynamically patched into a tracer call when | ||
| 29 | tracing is enabled by the administrator. If it's runtime disabled | ||
| 30 | (the bootup default), then the overhead of the instructions is very | ||
| 31 | small and not measurable even in micro-benchmarks. | ||
| 32 | |||
| 33 | config IRQSOFF_TRACER | ||
| 34 | bool "Interrupts-off Latency Tracer" | ||
| 35 | default n | ||
| 36 | depends on TRACE_IRQFLAGS_SUPPORT | ||
| 37 | depends on GENERIC_TIME | ||
| 38 | depends on HAVE_FTRACE | ||
| 39 | select TRACE_IRQFLAGS | ||
| 40 | select TRACING | ||
| 41 | select TRACER_MAX_TRACE | ||
| 42 | help | ||
| 43 | This option measures the time spent in irqs-off critical | ||
| 44 | sections, with microsecond accuracy. | ||
| 45 | |||
| 46 | The default measurement method is a maximum search, which is | ||
| 47 | disabled by default and can be runtime (re-)started | ||
| 48 | via: | ||
| 49 | |||
| 50 | echo 0 > /debugfs/tracing/tracing_max_latency | ||
| 51 | |||
| 52 | (Note that kernel size and overhead increases with this option | ||
| 53 | enabled. This option and the preempt-off timing option can be | ||
| 54 | used together or separately.) | ||
| 55 | |||
| 56 | config PREEMPT_TRACER | ||
| 57 | bool "Preemption-off Latency Tracer" | ||
| 58 | default n | ||
| 59 | depends on GENERIC_TIME | ||
| 60 | depends on PREEMPT | ||
| 61 | depends on HAVE_FTRACE | ||
| 62 | select TRACING | ||
| 63 | select TRACER_MAX_TRACE | ||
| 64 | help | ||
| 65 | This option measures the time spent in preemption off critical | ||
| 66 | sections, with microsecond accuracy. | ||
| 67 | |||
| 68 | The default measurement method is a maximum search, which is | ||
| 69 | disabled by default and can be runtime (re-)started | ||
| 70 | via: | ||
| 71 | |||
| 72 | echo 0 > /debugfs/tracing/tracing_max_latency | ||
| 73 | |||
| 74 | (Note that kernel size and overhead increases with this option | ||
| 75 | enabled. This option and the irqs-off timing option can be | ||
| 76 | used together or separately.) | ||
| 77 | |||
| 78 | config SCHED_TRACER | ||
| 79 | bool "Scheduling Latency Tracer" | ||
| 80 | depends on HAVE_FTRACE | ||
| 81 | select TRACING | ||
| 82 | select CONTEXT_SWITCH_TRACER | ||
| 83 | select TRACER_MAX_TRACE | ||
| 84 | help | ||
| 85 | This tracer tracks the latency of the highest priority task | ||
| 86 | to be scheduled in, starting from the point it has woken up. | ||
| 87 | |||
| 88 | config CONTEXT_SWITCH_TRACER | ||
| 89 | bool "Trace process context switches" | ||
| 90 | depends on HAVE_FTRACE | ||
| 91 | select TRACING | ||
| 92 | select MARKERS | ||
| 93 | help | ||
| 94 | This tracer gets called from the context switch and records | ||
| 95 | all switching of tasks. | ||
| 96 | |||
| 97 | config DYNAMIC_FTRACE | ||
| 98 | bool "enable/disable ftrace tracepoints dynamically" | ||
| 99 | depends on FTRACE | ||
| 100 | depends on HAVE_DYNAMIC_FTRACE | ||
| 101 | default y | ||
| 102 | help | ||
| 103 | This option will modify all the calls to ftrace dynamically | ||
| 104 | (will patch them out of the binary image and replaces them | ||
| 105 | with a No-Op instruction) as they are called. A table is | ||
| 106 | created to dynamically enable them again. | ||
| 107 | |||
| 108 | This way a CONFIG_FTRACE kernel is slightly larger, but otherwise | ||
| 109 | has native performance as long as no tracing is active. | ||
| 110 | |||
| 111 | The changes to the code are done by a kernel thread that | ||
| 112 | wakes up once a second and checks to see if any ftrace calls | ||
| 113 | were made. If so, it runs stop_machine (stops all CPUS) | ||
| 114 | and modifies the code to jump over the call to ftrace. | ||
| 115 | |||
| 116 | config FTRACE_SELFTEST | ||
| 117 | bool | ||
| 118 | |||
| 119 | config FTRACE_STARTUP_TEST | ||
| 120 | bool "Perform a startup test on ftrace" | ||
| 121 | depends on TRACING | ||
| 122 | select FTRACE_SELFTEST | ||
| 123 | help | ||
| 124 | This option performs a series of startup tests on ftrace. On bootup | ||
| 125 | a series of tests are made to verify that the tracer is | ||
| 126 | functioning properly. It will do tests on all the configured | ||
| 127 | tracers of ftrace. | ||
