Subject: [PATCH V2 1/2] tracing/timerlat: Notify new max thread latency

timerlat is not reporting a new tracing_max_latency for the thread
latency. The reason is that it is not calling notify_new_max_latency()
function after the new thread latency is sampled.

Call notify_new_max_latency after computing the thread latency.

Changes from V1:
Split the patch into two patches (Steve)

Fixes: dae181349f1e ("tracing/osnoise: Support a list of trace_array *tr")
Cc: Daniel Bristot de Oliveira <[email protected]>
Cc: Steven Rostedt <[email protected]>
Cc: Masami Hiramatsu <[email protected]>
Signed-off-by: Daniel Bristot de Oliveira <[email protected]>
---
kernel/trace/trace_osnoise.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/kernel/trace/trace_osnoise.c b/kernel/trace/trace_osnoise.c
index 9176bb7a9bb4..e8116094bed8 100644
--- a/kernel/trace/trace_osnoise.c
+++ b/kernel/trace/trace_osnoise.c
@@ -1738,6 +1738,8 @@ static int timerlat_main(void *data)

trace_timerlat_sample(&s);

+ notify_new_max_latency(diff);
+
timerlat_dump_stack(time_to_us(diff));

tlat->tracing_thread = false;
--
2.38.1


Subject: [PATCH V2 2/2] tracing/osnoise: Fix notify new tracing_max_latency

osnoise/timerlat tracers are reporting new max latency on instances
where the tracing is off, creating inconsistencies between the max
reported values in the trace and in the tracing_max_latency. Thus
only report new tracing_max_latency on active tracing instances.

Fixes: dae181349f1e ("tracing/osnoise: Support a list of trace_array *tr")
Cc: Daniel Bristot de Oliveira <[email protected]>
Cc: Steven Rostedt <[email protected]>
Cc: Masami Hiramatsu <[email protected]>
Signed-off-by: Daniel Bristot de Oliveira <[email protected]>
---
kernel/trace/trace_osnoise.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/trace/trace_osnoise.c b/kernel/trace/trace_osnoise.c
index e8116094bed8..4496975f2029 100644
--- a/kernel/trace/trace_osnoise.c
+++ b/kernel/trace/trace_osnoise.c
@@ -1296,7 +1296,7 @@ static void notify_new_max_latency(u64 latency)
rcu_read_lock();
list_for_each_entry_rcu(inst, &osnoise_instances, list) {
tr = inst->tr;
- if (tr->max_latency < latency) {
+ if (tracer_tracing_is_on(tr) && tr->max_latency < latency) {
tr->max_latency = latency;
latency_fsnotify(tr);
}
--
2.38.1

2023-03-29 16:31:38

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH V2 1/2] tracing/timerlat: Notify new max thread latency

On Wed, 29 Mar 2023 17:50:15 +0200
Daniel Bristot de Oliveira <[email protected]> wrote:

> timerlat is not reporting a new tracing_max_latency for the thread
> latency. The reason is that it is not calling notify_new_max_latency()
> function after the new thread latency is sampled.
>
> Call notify_new_max_latency after computing the thread latency.
>
> Changes from V1:
> Split the patch into two patches (Steve)

FYI, when doing this, please place the updates below the "---"

That way it doesn't automatically end up in the git log, and I have to go
back in and remove it.

>
> Fixes: dae181349f1e ("tracing/osnoise: Support a list of trace_array *tr")
> Cc: Daniel Bristot de Oliveira <[email protected]>
> Cc: Steven Rostedt <[email protected]>
> Cc: Masami Hiramatsu <[email protected]>
> Signed-off-by: Daniel Bristot de Oliveira <[email protected]>
> ---

Here, you can add:

Changes from V1: https://lore.kernel.org/linux-trace-kernel/c22302a7db3cee6bcabf87462ed22a35dd38690f.1679675521.git.bristot@kernel.org/
Split the patch into two patches (Steve)

Notice, that I also added the link to the previous version, so it's easy to
find if someone wanted to investigate this series.

-- Steve



> kernel/trace/trace_osnoise.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/kernel/trace/trace_osnoise.c b/kernel/trace/trace_osnoise.c
> index 9176bb7a9bb4..e8116094bed8 100644
> --- a/kernel/trace/trace_osnoise.c
> +++ b/kernel/trace/trace_osnoise.c
> @@ -1738,6 +1738,8 @@ static int timerlat_main(void *data)
>
> trace_timerlat_sample(&s);
>
> + notify_new_max_latency(diff);
> +
> timerlat_dump_stack(time_to_us(diff));
>
> tlat->tracing_thread = false;