path: root/Documentation/trace/ftrace.txt
AgeCommit message (Collapse)Author
2015-02-09Documentation: Fix the wrong command `echo -1 > set_ftrace_pid` for cleaning ↵Wang Long
the filter. The command `echo > set_ftrace_pid` should be used to clean the filter quietly. because the command `echo -1 > set_ftrace_pid` will output the following: "bash: echo: write error: Invalid argument". so update the file Documentation/trace/ftrace.txt. Signed-off-by: Wang Long <> Acked-by: Steven Rostedt <> Signed-off-by: Jonathan Corbet <>
2014-12-03tracing: Add additional marks to signal very large time deltasByungchul Park
Currently, function graph tracer prints "!" or "+" just before function execution time to signal a function overhead, depending on the time. And some tracers tracing latency also print "!" or "+" just after time to signal overhead, depending on the interval between events. Even it is usually enough to do that, we sometimes need to signal for bigger execution time than 100 micro seconds. For example, I used function graph tracer to detect if there is any case that exit_mm() takes too much time. I did following steps in /sys/kernel/debug/tracing. It was easier to detect very large excution time with patched kernel than with original kernel. $ echo exit_mm > set_graph_function $ echo function_graph > current_tracer $ echo > trace $ cat trace_pipe > $LOGFILE ... (do something and terminate logging) $ grep "\\$" $LOGFILE 3) $ 22082032 us | } /* kernel_map_pages */ 3) $ 22082040 us | } /* free_pages_prepare */ 3) $ 22082113 us | } /* free_hot_cold_page */ 3) $ 22083455 us | } /* free_hot_cold_page_list */ 3) $ 22083895 us | } /* release_pages */ 3) $ 22177873 us | } /* free_pages_and_swap_cache */ 3) $ 22178929 us | } /* unmap_single_vma */ 3) $ 22198885 us | } /* unmap_vmas */ 3) $ 22206949 us | } /* exit_mmap */ 3) $ 22207659 us | } /* mmput */ 3) $ 22207793 us | } /* exit_mm */ And then, it was easy to find out that a schedule-out occured by sub_preempt_count() within kernel_map_pages(). To detect very large function exection time caused by either problematic function implementation or scheduling issues, this patch can be useful. Link: Signed-off-by: Byungchul Park <> Signed-off-by: Steven Rostedt <>
2014-11-21ftrace, kprobes: Support IPMODIFY flag to find IP modify conflictMasami Hiramatsu
Introduce FTRACE_OPS_FL_IPMODIFY to avoid conflict among ftrace users who may modify regs->ip to change the execution path. If two or more users modify the regs->ip on the same function entry, one of them will be broken. So they must add IPMODIFY flag and make sure that ftrace_set_filter_ip() succeeds. Note that ftrace doesn't allow ftrace_ops which has IPMODIFY flag to have notrace hash, and the ftrace_ops must have a filter hash (so that the ftrace_ops can hook only specific entries), because it strongly depends on the address and must be allowed for only few selected functions. Link: Cc: Jiri Kosina <> Cc: Seth Jennings <> Cc: Petr Mladek <> Cc: Vojtech Pavlik <> Cc: Miroslav Benes <> Cc: Ingo Molnar <> Cc: Ananth N Mavinakayanahalli <> Cc: Josh Poimboeuf <> Cc: Namhyung Kim <> Signed-off-by: Masami Hiramatsu <> [ fixed up some of the comments ] Signed-off-by: Steven Rostedt <>
2014-07-16sched: Transform resched_task() into resched_curr()Kirill Tkhai
We always use resched_task() with rq->curr argument. It's not possible to reschedule any task but rq's current. The patch introduces resched_curr(struct rq *) to replace all of the repeating patterns. The main aim is cleanup, but there is a little size profit too: (before) $ size kernel/sched/built-in.o text data bss dec hex filename 155274 16445 7042 178761 2ba49 kernel/sched/built-in.o $ size vmlinux text data bss dec hex filename 7411490 1178376 991232 9581098 92322a vmlinux (after) $ size kernel/sched/built-in.o text data bss dec hex filename 155130 16445 7042 178617 2b9b9 kernel/sched/built-in.o $ size vmlinux text data bss dec hex filename 7411362 1178376 991232 9580970 9231aa vmlinux I was choosing between resched_curr() and resched_rq(), and the first name looks better for me. A little lie in Documentation/trace/ftrace.txt. I have not actually collected the tracing again. With a hope the patch won't make execution times much worse :) Signed-off-by: Kirill Tkhai <> Signed-off-by: Peter Zijlstra <> Cc: Linus Torvalds <> Cc: Randy Dunlap <> Cc: Steven Rostedt <> Link: Signed-off-by: Ingo Molnar <>
2014-05-20tracing: Add funcgraph_tail option to print function name after closing bracesRobert Elliott
In the function-graph tracer, add a funcgraph_tail option to print the function name on all } lines, not just functions whose first line is no longer in the trace buffer. If a function calls other traced functions, its total time appears on its } line. This change allows grep to be used to determine the function for which the line corresponds. Update Documentation/trace/ftrace.txt to describe this new option. Link: Signed-off-by: Robert Elliott <> Signed-off-by: Steven Rostedt <>
2013-11-11ftrace, sched: Add TRACE_FLAG_PREEMPT_RESCHEDPeter Zijlstra
Since the introduction of PREEMPT_NEED_RESCHED in: f27dde8deef3 ("sched: Add NEED_RESCHED to the preempt_count") we need to be able to look at both TIF_NEED_RESCHED and PREEMPT_NEED_RESCHED to understand the full preemption behaviour. Add it to the trace output. Signed-off-by: Peter Zijlstra <> Acked-by: Steven Rostedt <> Cc: Fengguang Wu <> Cc: Huang Ying <> Cc: Yuanhan Liu <> Link: Signed-off-by: Ingo Molnar <>
2013-08-20Documentation: replace strict_strtoul() with kstrtoul()Jingoo Han
The usage of strict_strtoul() is not preferred, because strict_strtoul() is obsolete. Thus, kstrtoul() should be used. Signed-off-by: Jingoo Han <> Signed-off-by: Jiri Kosina <>
2013-06-11tracing: Add function probe to trigger a ftrace dump of current CPU traceSteven Rostedt (Red Hat)
Add the "cpudump" command to have the current CPU ftrace buffer dumped to console if a function is hit. This is useful when debugging a tripple fault, where you have an idea of a function that is called just before the tripple fault occurs, and can tell ftrace to dump its content out to the console before it continues. This differs from the "dump" command as it only dumps the content of the ring buffer for the currently executing CPU, and does not show the contents of the other CPUs. Format is: <function>:cpudump echo 'bad_address:cpudump' > /debug/tracing/set_ftrace_filter To remove this: echo '!bad_address:cpudump' > /debug/tracing/set_ftrace_filter Signed-off-by: Steven Rostedt <>
2013-06-11tracing: Add function probe to trigger a ftrace dump to consoleSteven Rostedt (Red Hat)
Add the "dump" command to have the ftrace buffer dumped to console if a function is hit. This is useful when debugging a tripple fault, where you have an idea of a function that is called just before the tripple fault occurs, and can tell ftrace to dump its content out to the console before it continues. Format is: <function>:dump echo 'bad_address:dump' > /debug/tracing/set_ftrace_filter To remove this: echo '!bad_address:dump' > /debug/tracing/set_ftrace_filter Requested-by: Luis Claudio R. Goncalves <> Signed-off-by: Steven Rostedt <>
2013-03-15tracing: Bring Documentation/trace/ftrace.txt up to dateSteven Rostedt (Red Hat)
The ftrace.txt document has been suffering from some serious bit rot. Updated the current content to how things are as of v3.10. Remove things that no longer exist. Add documentation about new features: per_cpu stats instances stack trace etc. Signed-off-by: Steven Rostedt <>
2013-03-08tracing: update documentation of snapshot utilityHiraku Toyooka
Now, "snapshot" file returns success on a reset of snapshot buffer even if the buffer wasn't allocated, instead of returning EINVAL. This patch updates snapshot desctiption according to the change. Link: Signed-off-by: Hiraku Toyooka <> Signed-off-by: Steven Rostedt <>
2013-01-30tracing: Add documentation of snapshot utilityHiraku Toyooka
This patch adds snapshot description in ftrace documentation. This description includes what the snapshot is and how to use it. Link: Cc: Rob Landley <> Signed-off-by: Hiraku Toyooka <> Signed-off-by: Steven Rostedt <>
2012-02-13ftrace: Append wakeup_rt description of ftrace docGeunsik Lim
Append and update the description about wakeup/wakeup_rt usage. Link: Cc: Randy Dunlap <> Signed-off-by: Geunsik Lim <> Signed-off-by: Steven Rostedt <>
2011-03-09tracing: Add an 'overwrite' trace_option.David Sharp
Add an "overwrite" trace_option for ftrace to control whether the buffer should be overwritten on overflow or not. The default remains to overwrite old events when the buffer is full. This patch adds the option to instead discard newest events when the buffer is full. This is useful to get a snapshot of traces just after enabling traces. Dropping the current event is also a simpler code path. Signed-off-by: David Sharp <> LKML-Reference: <> Signed-off-by: Steven Rostedt <>
2011-02-08tracing: Deprecate tracing_enabled for tracing_onSteven Rostedt
tracing_enabled should not be used, it is heavy weight and does not do much in helping lower the overhead. tracing_on should be used instead. Warn users to use tracing_on when tracing_enabled is used as it will soon be removed from the tracing directory. Signed-off-by: Steven Rostedt <>
2011-02-08tracing: Remove obsolete sched_switch tracerSteven Rostedt
The trace events sched_switch and sched_wakeup do the same thing as the stand alone sched_switch tracer does. It is no longer needed. Signed-off-by: Steven Rostedt <>
2010-04-27tracing: Add documentation for trace commands mod, traceon/traceoffChase Douglas
The mod command went in as commit 64e7c440618998fd69eee6ab490b042d12248021 The traceon/traceoff commands went in as commit 23b4ff3aa479c9e3bb23cb6b2d0a97878399784a Signed-off-by: Chase Douglas <> LKML-Reference: <> Signed-off-by: Steven Rostedt <>
2010-04-21tracing: Dump either the oops's cpu source or all cpus buffersFrederic Weisbecker
The ftrace_dump_on_oops kernel parameter, sysctl and sysrq let one dump every cpu buffers when an oops or panic happens. It's nice when you have few cpus but it may take ages if have many, plus you miss the real origin of the problem in all the cpu traces. Sometimes, all you need is to dump the cpu buffer that triggered the opps, most of the time it is our main interest. This patch modifies ftrace_dump_on_oops to handle this choice. The ftrace_dump_on_oops kernel parameter, when it comes alone, has the same behaviour than before. But ftrace_dump_on_oops=orig_cpu will only dump the buffer of the cpu that oops'ed. Similarly, sysctl kernel.ftrace_dump_on_oops=1 and echo 1 > /proc/sys/kernel/ftrace_dump_on_oops keep their previous behaviour. But setting 2 jumps into cpu origin dump mode. v2: Fix double setup v3: Fix spelling issues reported by Randy Dunlap v4: Also update __ftrace_dump in the selftests Signed-off-by: Frederic Weisbecker <> Acked-by: David S. Miller <> Acked-by: Steven Rostedt <> Cc: Ingo Molnar <> Cc: Thomas Gleixner <> Cc: Li Zefan <> Cc: Lai Jiangshan <>
2010-02-09tree-wide: Assorted spelling fixesDaniel Mack
In particular, several occurances of funny versions of 'success', 'unknown', 'therefore', 'acknowledge', 'argument', 'achieve', 'address', 'beginning', 'desirable', 'separate' and 'necessary' are fixed. Signed-off-by: Daniel Mack <> Cc: Joe Perches <> Cc: Junio C Hamano <> Signed-off-by: Jiri Kosina <>
2010-01-26tracing/documentation: Fix a typo in ftrace.txtYang Hongyang
'ftrace' is no longer the name of the function tracer, to activate the function trace 'echo function > current_tracer' is to be used instead of 'echo ftrace > current_tracer'. Update the documentation to reflect the current implementation. Signed-off-by: Yang Hongyang <> LKML-Reference: <> Signed-off-by: Steven Rostedt <>
2009-10-24tracing: Fix comment typo and documentation exampleJiri Olsa
Trivial patch to fix a documentation example and to fix a comment. Signed-off-by: Jiri Olsa <> Signed-off-by: Steven Rostedt <> Cc: Frederic Weisbecker <> LKML-Reference: <> Signed-off-by: Ingo Molnar <>
2009-09-21trivial: fix typos "man[ae]g?ment" -> "management"Uwe Kleine-Koenig
Signed-off-by: Uwe Kleine-Koenig <> Signed-off-by: Jiri Kosina <>
2009-09-14ftrace: document function and function graph implementationMike Frysinger
While implementing function tracer and function tracer graph support, I found the exact arch implementation details to be a bit lacking (and my x86 foo ain't great). So after pounding out support for the Blackfin arch, start documenting the requirements/details. Signed-off-by: Mike Frysinger <> LKML-Reference: <> Acked-by: Frederic Weisbecker <> Signed-off-by: Steven Rostedt <>
2009-09-04tracing: Remove mentioning of legacy latency_trace file from documentationAlbin Tonnerre
The latency_trace file got removed a while back by commit 886b5b73d71e4027d7dc6c14f5f7ab102201ea6b and has been replaced by the latency-format option. This patch fixes the documentation by reflecting this change. Changes since v1: - mention that the trace format is configurable through the latency-format option - Fix a couple mistakes related to the timestamps Signed-off-by: Albin Tonnerre <> Cc: Steven Rostedt <> LKML-Reference: <20090831204007.GE4237@pc-ras4041.res.insa> Signed-off-by: Frederic Weisbecker <>
2009-06-15debugfs: Fix terminology inconsistency of dir name to mount debugfs filesystem.GeunSik Lim
Many developers use "/debug/" or "/debugfs/" or "/sys/kernel/debug/" directory name to mount debugfs filesystem for ftrace according to ./Documentation/tracers/ftrace.txt file. And, three directory names(ex:/debug/, /debugfs/, /sys/kernel/debug/) is existed in kernel source like ftrace, DRM, Wireless, Documentation, Network[sky2]files to mount debugfs filesystem. debugfs means debug filesystem for debugging easy to use by greg kroah hartman. "/sys/kernel/debug/" name is suitable as directory name of debugfs filesystem. - debugfs related reference: Fix inconsistency of directory name to mount debugfs filesystem. * From Steven Rostedt - find_debugfs() and tracing_files() in this patch. Signed-off-by: GeunSik Lim <> Acked-by : Inaky Perez-Gonzalez <> Reviewed-by : Steven Rostedt <> Reviewed-by : James Smart <> CC: Jiri Kosina <> CC: David Airlie <> CC: Peter Osterlund <> CC: Ananth N Mavinakayanahalli <> CC: Anil S Keshavamurthy <> CC: Masami Hiramatsu <> Signed-off-by: Greg Kroah-Hartman <>
2009-06-12trivial: ftrace:fix description of trace directoryGeunSik Lim
Fix trace source directory from kernel/tracing/ to kernel/trace/. Signed-off-by: GeunSik Lim <> Signed-off-by: Jiri Kosina <>
2009-06-10Merge branch 'tracing-for-linus' of ↵Linus Torvalds
git:// * 'tracing-for-linus' of git:// (244 commits) Revert "x86, bts: reenable ptrace branch trace support" tracing: do not translate event helper macros in print format ftrace/documentation: fix typo in function grapher name tracing/events: convert block trace points to TRACE_EVENT(), fix !CONFIG_BLOCK tracing: add protection around module events unload tracing: add trace_seq_vprint interface tracing: fix the block trace points print size tracing/events: convert block trace points to TRACE_EVENT() ring-buffer: fix ret in rb_add_time_stamp ring-buffer: pass in lockdep class key for reader_lock tracing: add annotation to what type of stack trace is recorded tracing: fix multiple use of __print_flags and __print_symbolic tracing/events: fix output format of user stack tracing/events: fix output format of kernel stack tracing/trace_stack: fix the number of entries in the header ring-buffer: discard timestamps that are at the start of the buffer ring-buffer: try to discard unneeded timestamps ring-buffer: fix bug in ring_buffer_discard_commit ftrace: do not profile functions when disabled tracing: make trace pipe recognize latency format flag ...
2009-06-10ftrace/documentation: fix typo in function grapher nameMike Frysinger
The function graph tracer is called just "function_graph" (no trailing "_tracer" needed). Signed-off-by: Mike Frysinger <> LKML-Reference: <> Signed-off-by: Steven Rostedt <>
2009-05-29ftrace: fix typo about map of kernel priority in ftrace.txt file.GeunSik Lim
Fix typo about chart to map the kernel priority to user land priorities. * About sched_setscheduler(2) Processes scheduled under SCHED_FIFO or SCHED_RR can have a (user-space) static priority in the range 1 to 99. (reference: man2/sched_setscheduler.2.html) * From: Steven Rostedt 0 to 98 - maps to RT tasks 99 to 1 (SCHED_RR or SCHED_FIFO) 99 - maps to internal kernel threads that want to be lower than RT tasks but higher than SCHED_OTHER tasks. Although I'm not sure if any kernel thread actually uses this. I'm not even sure how this can be set, because the internal sched_setscheduler function does not allow for it. 100 to 139 - maps nice levels -20 to 19. These are not set via sched_setscheduler, but are set via the nice system call. 140 - reserved for idle tasks. Signed-off-by: GeunSik Lim <> Acked-by: Steven Rostedt <> Signed-off-by: Peter Zijlstra <> LKML-Reference: <new-submission> Signed-off-by: Ingo Molnar <>
2009-04-09tracing: consolidate documentsLi Zefan
Move kmemtrace.txt, tracepoints.txt, ftrace.txt and mmiotrace.txt to the new trace/ directory. I didnt find any references to those documents in both source files and documents, so no extra work needs to be done. Signed-off-by: Li Zefan <> Acked-by: Pekka Paalanen <> Cc: Steven Rostedt <> Cc: Frederic Weisbecker <> Cc: Mathieu Desnoyers <> LKML-Reference: <> Signed-off-by: Ingo Molnar <>