[PATCH 00/19] perf: ftrace enhancement

From: Changbin Du
Date: Sun May 10 2020 - 11:06:52 EST


The perf has basic kernel ftrace support but lack support of most tracing
options. This serias is target to enhance the perf ftrace functionality so
that we can make full use of kernel ftrace with only perf.

In general, this serias be cataloged into two main changes:
1) Improve usability of existing functions. For example, we don't need to type
extra option to select the tracer.
2) Add new options to support all other ftrace functions.

Here is a glance of all ftrace functions with this serias:
* - improved existing options.
+ - new added options.

$ sudo perf ftrace -h

Usage: perf ftrace [<options>] [<command>]
or: perf ftrace [<options>] -- <command> [<options>]

* -a, --all-cpus system-wide collection from all CPUs
+ -b, --buffer-size <n>
size of per cpu buffer in kb
-C, --cpu <cpu> list of cpus to monitor
+ -d, --delay <n> Wait <n> ms before tracing
-D, --graph-depth <n>
Max depth for function graph tracer
* -G, --graph-funcs <func>
Set graph filter on given functions (imply to use function_graph tracer)
-g, --nograph-funcs <func>
Set nograph filter on given functions (imply to use function_graph tracer)
+ -L, --list-functions List available functions to filter
+ -l, --long-info Show process names, PIDs, timestamps, irq-info if available
-N, --notrace-funcs <func>
do not trace given functions
+ -P, --no-pager Do not use pager
-p, --pid <pid> trace on existing process id
+ -s, --func-stack-trace
Show kernel stack trace for function tracer
+ -t, --tid <tid> trace on existing thread id (exclusive to --pid)
-T, --trace-funcs <func>
trace given functions only
+ -u, --userstacktrace Show stacktrace of the current user space thread
-v, --verbose be more verbose
+ --funcgraph-tail Show function tails comment (function_graph only)
+ --latency-format displays additional information about the latency (function_graph only)
+ --nofuncgraph-irqs
Ignore functions that happen inside interrupt (function_graph only)
+ --nosleep-time Measure on-CPU time only (function_graph only)
+ --trace-children Trace children processes
+ --tracing-thresh <n>
Only show functions of which the duration is greater than <n>Âs


Changbin Du (19):
perf ftrace: trace system wide if no target is given
perf ftrace: detect workload failure
perf ftrace: select function/function_graph tracer automatically
perf ftrace: add support for tracing option 'func_stack_trace'
perf ftrace: add option '-l/--list-functions' to list available
functions
perf ftrace: add support for trace option sleep-time
perf ftrace: add support for trace option funcgraph-irqs
perf ftrace: add option -l/--long-info to show more info
perf ftrace: add support for trace option tracing_thresh
perf ftrace: add support for trace option funcgraph-tail
perf ftrace: add option '-u/--userstacktrace' to show userspace
stacktrace
perf ftrace: add support for tracing children processes
perf ftrace: add option '-b/--buffer-size' to set per-cpu buffer size
perf ftrace: add option -P/--no-pager to disable pager
perf ftrace: show trace column header
perf ftrace: add option -t/--tid to filter by thread id
perf ftrace: add option -d/--delay to delay tracing
perf ftrace: add option --latency-format to display more info about
delay
perf ftrace: add change log

tools/perf/Documentation/perf-config.txt | 5 -
tools/perf/builtin-ftrace.c | 388 ++++++++++++++++++++---
2 files changed, 345 insertions(+), 48 deletions(-)

--
2.25.1