2019-07-30 16:35:33

by Changbin Du

[permalink] [raw]
Subject: [PATCH] fgraph: Remove redundant ftrace_graph_notrace_addr() test

We already have tested it before. The second one should be removed.
With this change, the performance should have little improvement.

Fixes: 9cd2992f2d6c ("fgraph: Have set_graph_notrace only affect function_graph tracer")
Signed-off-by: Changbin Du <[email protected]>
---
kernel/trace/trace_functions_graph.c | 17 +++++++----------
1 file changed, 7 insertions(+), 10 deletions(-)

diff --git a/kernel/trace/trace_functions_graph.c b/kernel/trace/trace_functions_graph.c
index 69ebf3c2f1b5..78af97163147 100644
--- a/kernel/trace/trace_functions_graph.c
+++ b/kernel/trace/trace_functions_graph.c
@@ -137,6 +137,13 @@ int trace_graph_entry(struct ftrace_graph_ent *trace)
if (trace_recursion_test(TRACE_GRAPH_NOTRACE_BIT))
return 0;

+ /*
+ * Do not trace a function if it's filtered by set_graph_notrace.
+ * Make the index of ret stack negative to indicate that it should
+ * ignore further functions. But it needs its own ret stack entry
+ * to recover the original index in order to continue tracing after
+ * returning from the function.
+ */
if (ftrace_graph_notrace_addr(trace->func)) {
trace_recursion_set(TRACE_GRAPH_NOTRACE_BIT);
/*
@@ -155,16 +162,6 @@ int trace_graph_entry(struct ftrace_graph_ent *trace)
if (ftrace_graph_ignore_irqs())
return 0;

- /*
- * Do not trace a function if it's filtered by set_graph_notrace.
- * Make the index of ret stack negative to indicate that it should
- * ignore further functions. But it needs its own ret stack entry
- * to recover the original index in order to continue tracing after
- * returning from the function.
- */
- if (ftrace_graph_notrace_addr(trace->func))
- return 1;
-
/*
* Stop here if tracing_threshold is set. We only write function return
* events to the ring buffer.
--
2.20.1


2019-07-30 16:47:38

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH] fgraph: Remove redundant ftrace_graph_notrace_addr() test

On Tue, 30 Jul 2019 22:08:50 +0800
Changbin Du <[email protected]> wrote:

> We already have tested it before. The second one should be removed.
> With this change, the performance should have little improvement.
>
> Fixes: 9cd2992f2d6c ("fgraph: Have set_graph_notrace only affect function_graph tracer")

Thanks! I think this should even be marked for stable. Not really a bad
bug, but a bug none the less.

-- Steve


> Signed-off-by: Changbin Du <[email protected]>
> ---
> kernel/trace/trace_functions_graph.c | 17 +++++++----------
> 1 file changed, 7 insertions(+), 10 deletions(-)
>
> diff --git a/kernel/trace/trace_functions_graph.c b/kernel/trace/trace_functions_graph.c
> index 69ebf3c2f1b5..78af97163147 100644
> --- a/kernel/trace/trace_functions_graph.c
> +++ b/kernel/trace/trace_functions_graph.c
> @@ -137,6 +137,13 @@ int trace_graph_entry(struct ftrace_graph_ent *trace)
> if (trace_recursion_test(TRACE_GRAPH_NOTRACE_BIT))
> return 0;
>
> + /*
> + * Do not trace a function if it's filtered by set_graph_notrace.
> + * Make the index of ret stack negative to indicate that it should
> + * ignore further functions. But it needs its own ret stack entry
> + * to recover the original index in order to continue tracing after
> + * returning from the function.
> + */
> if (ftrace_graph_notrace_addr(trace->func)) {
> trace_recursion_set(TRACE_GRAPH_NOTRACE_BIT);
> /*
> @@ -155,16 +162,6 @@ int trace_graph_entry(struct ftrace_graph_ent *trace)
> if (ftrace_graph_ignore_irqs())
> return 0;
>
> - /*
> - * Do not trace a function if it's filtered by set_graph_notrace.
> - * Make the index of ret stack negative to indicate that it should
> - * ignore further functions. But it needs its own ret stack entry
> - * to recover the original index in order to continue tracing after
> - * returning from the function.
> - */
> - if (ftrace_graph_notrace_addr(trace->func))
> - return 1;
> -
> /*
> * Stop here if tracing_threshold is set. We only write function return
> * events to the ring buffer.

2019-07-31 12:18:13

by Changbin Du

[permalink] [raw]
Subject: Re: [PATCH] fgraph: Remove redundant ftrace_graph_notrace_addr() test

On Tue, Jul 30, 2019 at 12:15:27PM -0400, Steven Rostedt wrote:
> On Tue, 30 Jul 2019 22:08:50 +0800
> Changbin Du <[email protected]> wrote:
>
> > We already have tested it before. The second one should be removed.
> > With this change, the performance should have little improvement.
> >
> > Fixes: 9cd2992f2d6c ("fgraph: Have set_graph_notrace only affect function_graph tracer")
>
> Thanks! I think this should even be marked for stable. Not really a bad
> bug, but a bug none the less.
>
Steven, need I resend this patch and cc stable mailist?

> -- Steve
>
>
-
Cheers,
Changbin Du

2019-07-31 14:13:18

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH] fgraph: Remove redundant ftrace_graph_notrace_addr() test

On Wed, 31 Jul 2019 18:31:45 +0800
Changbin Du <[email protected]> wrote:

> On Tue, Jul 30, 2019 at 12:15:27PM -0400, Steven Rostedt wrote:
> > On Tue, 30 Jul 2019 22:08:50 +0800
> > Changbin Du <[email protected]> wrote:
> >
> > > We already have tested it before. The second one should be removed.
> > > With this change, the performance should have little improvement.
> > >
> > > Fixes: 9cd2992f2d6c ("fgraph: Have set_graph_notrace only affect function_graph tracer")
> >
> > Thanks! I think this should even be marked for stable. Not really a bad
> > bug, but a bug none the less.
> >
> Steven, need I resend this patch and cc stable mailist?
>

No.

I actually already pulled it in and ran it through my tests. I'm
waiting on some more tests before pushing it off to Linus.

-- Steve