Commit 587f05a8 authored by Luis Claudio R. Goncalves's avatar Luis Claudio R. Goncalves Committed by Daniel Bristot de Oliveira
Browse files

rtla/osnoise: Better report when histogram is empty

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

Link: https://lkml.kernel.org/r/Zml6JmH5cbS7-HfZ@uudg.org



Cc: Daniel Bristot de Oliveira <bristot@kernel.org>
Cc: John Kacur <jkacur@redhat.com>
Cc: Clark Williams <williams@redhat.com>
Reviewed-by: default avatarJohn Kacur <jkacur@redhat.com>
Signed-off-by: default avatarLuis Claudio R. Goncalves <lgoncalv@redhat.com>
Signed-off-by: default avatarDaniel Bristot de Oliveira <bristot@kernel.org>
parent 59237b0c
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -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 */
		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: ");