Re: [PATCH 00/19] perf: ftrace enhancement

From: Arnaldo Carvalho de Melo
Date: Wed May 20 2020 - 16:31:34 EST


Em Sun, May 10, 2020 at 11:06:09PM +0800, Changbin Du escreveu:
> 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.

Quite a lot! Going thru it now.

- Arnaldo

> 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
>

--

- Arnaldo