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 <lgonc...@redhat.com>
> ---
>  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 <jka...@redhat.com>


Reply via email to