On 9/26/18 12:53 PM, John Kacur wrote: > > > On Thu, 13 Sep 2018, Ralf Ramsauer wrote: > >> 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 >> >> > > Note, although I initially accepted this patch I may have to revert it. > The output of the histogram is not consumed just by humans but by > software, namely rteval Narf, didn't know. > > I am leaving the patch in for now and considering whether rteval could be > modified, but this is a heads-up. > > The other option, is for this patch to be an option Give me a couple of days and let me have a look at rteval, zero-lines are really useless. Maybe there's a way for rteval to support any output format of cyclictest. Ralf > > Thanks > > John >