lkml.org 
[lkml]   [2020]   [Aug]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v8 10/18] perf ftrace: add support for trace option funcgraph-irqs
    Em Sat, Aug 08, 2020 at 10:31:33AM +0800, Changbin Du escreveu:
    > This adds an option '--graph-opts noirqs' to filter out functions executed
    > in irq context.

    ditto, no example provided, please consider adding an example +
    explanation to perf-ftrace.txt.

    > Signed-off-by: Changbin Du <changbin.du@gmail.com>
    >
    > ---
    > v2: option name '--nofuncgraph-irqs' -> '--graph-noirqs'.
    > ---
    > tools/perf/Documentation/perf-ftrace.txt | 1 +
    > tools/perf/builtin-ftrace.c | 21 ++++++++++++++++++++-
    > 2 files changed, 21 insertions(+), 1 deletion(-)
    >
    > diff --git a/tools/perf/Documentation/perf-ftrace.txt b/tools/perf/Documentation/perf-ftrace.txt
    > index 3380a2e2c9ad..fca55ac55ff3 100644
    > --- a/tools/perf/Documentation/perf-ftrace.txt
    > +++ b/tools/perf/Documentation/perf-ftrace.txt
    > @@ -104,6 +104,7 @@ OPTIONS
    > --graph-opts::
    > List of options allowed to set:
    > nosleep-time - Measure on-CPU time only for function_graph tracer.
    > + noirqs - Ignore functions that happen inside interrupt.
    >
    > SEE ALSO
    > --------
    > diff --git a/tools/perf/builtin-ftrace.c b/tools/perf/builtin-ftrace.c
    > index 47d63bba6a48..b4c821be4fb5 100644
    > --- a/tools/perf/builtin-ftrace.c
    > +++ b/tools/perf/builtin-ftrace.c
    > @@ -45,6 +45,7 @@ struct perf_ftrace {
    > bool inherit;
    > int func_stack_trace;
    > int graph_nosleep_time;
    > + int graph_noirqs;
    > };
    >
    > struct filter_entry {
    > @@ -207,6 +208,7 @@ static void reset_tracing_options(struct perf_ftrace *ftrace __maybe_unused)
    > write_tracing_option_file("function-fork", "0");
    > write_tracing_option_file("func_stack_trace", "0");
    > write_tracing_option_file("sleep-time", "1");
    > + write_tracing_option_file("funcgraph-irqs", "1");
    > }
    >
    > static int reset_tracing_files(struct perf_ftrace *ftrace __maybe_unused)
    > @@ -399,6 +401,17 @@ static int set_tracing_sleep_time(struct perf_ftrace *ftrace)
    > return 0;
    > }
    >
    > +static int set_tracing_funcgraph_irqs(struct perf_ftrace *ftrace)
    > +{
    > + if (!ftrace->graph_noirqs)
    > + return 0;
    > +
    > + if (write_tracing_option_file("funcgraph-irqs", "0") < 0)
    > + return -1;
    > +
    > + return 0;
    > +}
    > +
    > static int __cmd_ftrace(struct perf_ftrace *ftrace, int argc, const char **argv)
    > {
    > char *trace_file;
    > @@ -483,6 +496,11 @@ static int __cmd_ftrace(struct perf_ftrace *ftrace, int argc, const char **argv)
    > goto out_reset;
    > }
    >
    > + if (set_tracing_funcgraph_irqs(ftrace) < 0) {
    > + pr_err("failed to set tracing option funcgraph-irqs\n");
    > + goto out_reset;
    > + }
    > +
    > if (write_tracing_file("current_tracer", ftrace->tracer) < 0) {
    > pr_err("failed to set current_tracer to %s\n", ftrace->tracer);
    > goto out_reset;
    > @@ -662,6 +680,7 @@ static int parse_graph_tracer_opts(const struct option *opt,
    > struct perf_ftrace *ftrace = (struct perf_ftrace *) opt->value;
    > struct sublevel_option graph_tracer_opts[] = {
    > { .name = "nosleep-time", .value_ptr = &ftrace->graph_nosleep_time },
    > + { .name = "noirqs", .value_ptr = &ftrace->graph_noirqs },
    > { .name = NULL, }
    > };
    >
    > @@ -733,7 +752,7 @@ int cmd_ftrace(int argc, const char **argv)
    > OPT_INTEGER('D', "graph-depth", &ftrace.graph_depth,
    > "Max depth for function graph tracer"),
    > OPT_CALLBACK(0, "graph-opts", &ftrace, "options",
    > - "graph tracer options, available options: nosleep-time",
    > + "graph tracer options, available options: nosleep-time,noirqs",
    > parse_graph_tracer_opts),
    > OPT_CALLBACK('m', "buffer-size", &ftrace.percpu_buffer_size, "size",
    > "size of per cpu buffer", parse_buffer_size),
    > --
    > 2.25.1
    >

    --

    - Arnaldo

    \
     
     \ /
      Last update: 2020-08-14 14:27    [W:3.288 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site