If the histogram output is enabled, cyclictest dumps lines of all latencies, even if the specific latency was never hit. For analysing a histogram, it is sufficient to only dump latencies that actually occured. This patch skips latencies that were never hit with respect to all threads. If cyclictest is used in combination with --nsecs, this removes a lot of output noise. It shrinks output to: $ cyclictest --threads 2 --affinity 2-3 --priority 99 --histofall 100 --loops 100000 # /dev/cpu_dma_latency set to 0us policy: fifo: loadavg: 0.03 0.13 0.07 1/560 1248 T: 0 ( 1228) P:99 I:1000 C: 100000 Min: 2 Act: 2 Avg: 2 Max: 4 T: 1 ( 1229) P:99 I:1000 C: 100000 Min: 2 Act: 2 Avg: 2 Max: 4 # Histogram 000002 069425 067138 136563 000003 030536 032850 063386 000004 000039 000012 000051 # Total: 000100000 000100000 000200000 # Min Latencies: 00002 00002 # Avg Latencies: 00002 00002 # Max Latencies: 00004 00004 00004 # Histogram Overflows: 00000 00000 00000 # Histogram Overflow at cycle number: # Thread 0: # Thread 1: Signed-off-by: Ralf Ramsauer <ralf.ramsauer@xxxxxxxxxxxxxxxxx> --- src/cyclictest/cyclictest.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c index 8d9ec80..0e8459c 100644 --- a/src/cyclictest/cyclictest.c +++ b/src/cyclictest/cyclictest.c @@ -1988,16 +1988,23 @@ static void print_hist(struct thread_param *par[], int nthreads) fprintf(fd, "# Histogram\n"); for (i = 0; i < histogram; i++) { unsigned long long int allthreads = 0; + unsigned long curr_latency = 0; + + for (j = 0; j < nthreads ; j++) { + curr_latency = par[j]->stats->hist_array[i]; + allthreads += curr_latency; + log_entries[j] += curr_latency; + } + if (!allthreads) + continue; fprintf(fd, "%06d ", i); for (j = 0; j < nthreads; j++) { - unsigned long curr_latency=par[j]->stats->hist_array[i]; + curr_latency = par[j]->stats->hist_array[i]; fprintf(fd, "%06lu", curr_latency); if (j < nthreads - 1) fprintf(fd, "\t"); - log_entries[j] += curr_latency; - allthreads += curr_latency; } if (histofall && nthreads > 1) { fprintf(fd, "\t%06llu", allthreads); -- 2.19.0