Re: [PATCH] rtla/osnoise: Better report when histogram is empty
From: John Kacur
Date: Wed Jun 12 2024 - 10:12:48 EST
On Wed, 12 Jun 2024, Luis Claudio R. Goncalves wrote:
> When osnoise hist does not observe any samples above the threshold,
> no entries are recorded and the final report shows empty entries
> for the usual statistics (count, min, max, avg):
>
> [~]# osnoise hist -d 5s -T 500
> # RTLA osnoise histogram
> # Time unit is microseconds (us)
> # Duration: 0 00:00:05
> Index
> over:
> count:
> min:
> avg:
> max:
>
> That could lead users to confusing interpretations of the results.
>
> A simple solution is to report 0 for count and the statistics, making it
> clear that no noise (above the defined threshold) was observed:
>
> [~]# osnoise hist -d 5s -T 500
> # RTLA osnoise histogram
> # Time unit is microseconds (us)
> # Duration: 0 00:00:05
> Index
> over: 0
> count: 0
> min: 0
> avg: 0
> max: 0
>
>
> Signed-off-by: Luis Claudio R. Goncalves <lgoncalv@xxxxxxxxxx>
> ---
> tools/tracing/rtla/src/osnoise_hist.c | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> diff --git a/tools/tracing/rtla/src/osnoise_hist.c b/tools/tracing/rtla/src/osnoise_hist.c
> index 7be17d09f7e85..214e2c93fde01 100644
> --- a/tools/tracing/rtla/src/osnoise_hist.c
> +++ b/tools/tracing/rtla/src/osnoise_hist.c
> @@ -374,6 +374,7 @@ osnoise_print_stats(struct osnoise_hist_params *params, struct osnoise_tool *too
> {
> struct osnoise_hist_data *data = tool->data;
> struct trace_instance *trace = &tool->trace;
> + int has_samples = 0;
> int bucket, cpu;
> int total;
>
> @@ -402,11 +403,25 @@ osnoise_print_stats(struct osnoise_hist_params *params, struct osnoise_tool *too
> continue;
> }
>
> + /* There are samples above the threshold */
IMHO The comment isn't needed because the variable had_samples is
descriptive, but it's not a big deal either
> + has_samples = 1;
> trace_seq_printf(trace->seq, "\n");
> trace_seq_do_printf(trace->seq);
> trace_seq_reset(trace->seq);
> }
>
> + /*
> + * If no samples were recorded, skip calculations, print zeroed statistics
> + * and return.
> + */
> + if (!has_samples) {
> + trace_seq_reset(trace->seq);
> + trace_seq_printf(trace->seq, "over: 0\ncount: 0\nmin: 0\navg: 0\nmax: 0\n");
> + trace_seq_do_printf(trace->seq);
> + trace_seq_reset(trace->seq);
> + return;
> + }
> +
> if (!params->no_index)
> trace_seq_printf(trace->seq, "over: ");
>
>
>
>
Reviewed-by: John Kacur <jkacur@xxxxxxxxxx>