The quantile calculation sorts the data samples, so move the calculation
after saving the samples to a file.
Signed-off-by: Sebastien Dugue <[EMAIL PROTECTED]>
Acked-by: Darren Hart <[EMAIL PROTECTED]>
Cc: Tim Chavez <[EMAIL PROTECTED]>
---
.../realtime/func/gtod_latency/gtod_latency.c | 12 ++++++------
.../realtime/func/hrtimer-prio/hrtimer-prio.c | 2 +-
.../func/periodic_cpu_load/periodic_cpu_load.c | 2 +-
.../periodic_cpu_load/periodic_cpu_load_single.c | 8 +++++---
testcases/realtime/func/pi_perf/pi_perf.c | 11 ++++++-----
.../pthread_kill_latency/pthread_kill_latency.c | 10 +++++-----
.../realtime/func/sched_latency/sched_latency.c | 14 ++++++++------
7 files changed, 32 insertions(+), 27 deletions(-)
diff --git a/testcases/realtime/func/gtod_latency/gtod_latency.c
b/testcases/realtime/func/gtod_latency/gtod_latency.c
index 638f1bc..777f66d 100644
--- a/testcases/realtime/func/gtod_latency/gtod_latency.c
+++ b/testcases/realtime/func/gtod_latency/gtod_latency.c
@@ -283,8 +283,12 @@ int main(int argc, char *argv[])
}
}
+ stats_hist(&hist, &dat);
+ stats_container_save(filenames[SCATTER_FILENAME], titles[SCATTER_TITLE],
+ labels[SCATTER_LABELX], labels[SCATTER_LABELY],
&dat, "points");
+ stats_container_save(filenames[HIST_FILENAME], titles[HIST_TITLE],
+ labels[HIST_LABELX], labels[HIST_LABELY], &hist,
"steps");
avg /= i + 1;
- stats_quantiles_calc(&dat, &quantiles);
/* report on deltas */
printf("Min: %llu us\n", min);
@@ -292,13 +296,9 @@ int main(int argc, char *argv[])
printf("Avg: %.4f us\n", stats_avg(&dat));
printf("StdDev: %.4f us\n", stats_stddev(&dat));
printf("Quantiles:\n");
+ stats_quantiles_calc(&dat, &quantiles);
stats_quantiles_print(&quantiles);
- stats_hist(&hist, &dat);
- stats_container_save(filenames[SCATTER_FILENAME], titles[SCATTER_TITLE],
- labels[SCATTER_LABELX], labels[SCATTER_LABELY],
&dat, "points");
- stats_container_save(filenames[HIST_FILENAME], titles[HIST_TITLE],
- labels[HIST_LABELX], labels[HIST_LABELY], &hist,
"steps");
return 0;
}
diff --git a/testcases/realtime/func/hrtimer-prio/hrtimer-prio.c
b/testcases/realtime/func/hrtimer-prio/hrtimer-prio.c
index df9709e..e58139a 100644
--- a/testcases/realtime/func/hrtimer-prio/hrtimer-prio.c
+++ b/testcases/realtime/func/hrtimer-prio/hrtimer-prio.c
@@ -205,7 +205,6 @@ int main(int argc, char *argv[])
join_thread(t_id);
avg_delta = stats_avg(&dat);
- stats_quantiles_calc(&dat, &quantiles);
stats_hist(&hist, &dat);
stats_container_save("samples", "High Resolution Timer Latency Scatter
Plot",\
"Iteration", "Latency (us)", &dat, "points");
@@ -220,6 +219,7 @@ int main(int argc, char *argv[])
printf("Average: %f us\n", avg_delta);
printf("Standard Deviation: %f\n", stats_stddev(&dat));
printf("Quantiles:\n");
+ stats_quantiles_calc(&dat, &quantiles);
stats_quantiles_print(&quantiles);
printf("\nCriteria: Maximum wakeup latency < %lu us\n", criteria);
printf("Result: %s\n", ret ? "FAIL" : "PASS");
diff --git a/testcases/realtime/func/periodic_cpu_load/periodic_cpu_load.c
b/testcases/realtime/func/periodic_cpu_load/periodic_cpu_load.c
index fc466f2..843dc3f 100644
--- a/testcases/realtime/func/periodic_cpu_load/periodic_cpu_load.c
+++ b/testcases/realtime/func/periodic_cpu_load/periodic_cpu_load.c
@@ -153,7 +153,6 @@ void *periodic_thread(void *thread)
i++;
rt_nanosleep(next - rt_gettime());
}
- stats_quantiles_calc(&dat, &quantiles);
printf("\nTID %d (prio %d) complete\n", t->id, t->priority);
printf(" Execution Time Statistics:\n");
@@ -162,6 +161,7 @@ void *periodic_thread(void *thread)
printf(" Avg: %f us\n", stats_avg(&dat));
printf(" StdDev: %f us\n\n", stats_stddev(&dat));
printf(" Quantiles:\n");
+ stats_quantiles_calc(&dat, &quantiles);
stats_quantiles_print(&quantiles);
printf("Criteria:TID %d missed a period\n",t->id);
printf("Result: %s\n", fail ? "FAIL":"PASS");
diff --git
a/testcases/realtime/func/periodic_cpu_load/periodic_cpu_load_single.c
b/testcases/realtime/func/periodic_cpu_load/periodic_cpu_load_single.c
index 3ba53b1..9015c91 100644
--- a/testcases/realtime/func/periodic_cpu_load/periodic_cpu_load_single.c
+++ b/testcases/realtime/func/periodic_cpu_load/periodic_cpu_load_single.c
@@ -132,13 +132,11 @@ int periodic_thread(nsec_t period, int iterations, int
loops)
}
rt_nanosleep(next - now);
}
- stats_quantiles_calc(&dat, &quantiles);
+
stats_container_save(samples_filename, "Periodic CPU Load Scatter
Plot",\
"Iteration", "Runtime (us)", &dat, "points");
stats_container_save(hist_filename, "Periodic CPU Load Histogram",\
"Iteration", "Runtime (us)", &hist, "steps");
- free(samples_filename);
- free(hist_filename);
printf(" Execution Time Statistics:\n");
printf("Min: %ld us\n", stats_min(&dat));
@@ -146,10 +144,14 @@ int periodic_thread(nsec_t period, int iterations, int
loops)
printf("Avg: %.4f us\n", stats_avg(&dat));
printf("StdDev: %.4f us\n", stats_stddev(&dat));
printf("Quantiles:\n");
+ stats_quantiles_calc(&dat, &quantiles);
stats_quantiles_print(&quantiles);
printf("Criteria: no missed periods\n");
printf("Result: %s\n", fail ? "FAIL":"PASS");
+ free(samples_filename);
+ free(hist_filename);
+
return fail;
}
diff --git a/testcases/realtime/func/pi_perf/pi_perf.c
b/testcases/realtime/func/pi_perf/pi_perf.c
index 82a6a64..4eb1d98 100644
--- a/testcases/realtime/func/pi_perf/pi_perf.c
+++ b/testcases/realtime/func/pi_perf/pi_perf.c
@@ -199,19 +199,20 @@ void * high_prio_thread(void *arg)
/* Wait for all threads to finish this iteration */
pthread_barrier_wait(&bar2);
}
- stats_quantiles_calc(&wait_dat, &wait_quantiles);
+
stats_hist(&wait_hist, &wait_dat);
+ stats_container_save("samples", "pi_perf Latency Scatter Plot",
+ "Iteration", "Latency (us)", &wait_dat, "points");
+ stats_container_save("hist", "pi_perf Latency Histogram",
+ "Iteration", "Latency (us)", &wait_hist, "steps");
printf("Min wait time = %ld us\n", stats_min(&wait_dat));
printf("Max wait time = %ld us\n", stats_max(&wait_dat));
printf("Average wait time = %4.2f us\n", stats_avg(&wait_dat));
printf("Standard Deviation = %4.2f us\n", stats_stddev(&wait_dat));
printf("Quantiles:\n");
+ stats_quantiles_calc(&wait_dat, &wait_quantiles);
stats_quantiles_print(&wait_quantiles);
- stats_container_save("samples", "pi_perf Latency Scatter Plot",
- "Iteration", "Latency (us)", &wait_dat, "points");
- stats_container_save("hist", "pi_perf Latency Histogram",
- "Iteration", "Latency (us)", &wait_hist, "steps");
return NULL;
}
diff --git
a/testcases/realtime/func/pthread_kill_latency/pthread_kill_latency.c
b/testcases/realtime/func/pthread_kill_latency/pthread_kill_latency.c
index 279caf5..6a66ae1 100644
--- a/testcases/realtime/func/pthread_kill_latency/pthread_kill_latency.c
+++ b/testcases/realtime/func/pthread_kill_latency/pthread_kill_latency.c
@@ -171,7 +171,10 @@ void *signal_receiving_thread(void *arg)
atomic_set(1, &flag);
}
- stats_quantiles_calc(&dat, &quantiles);
+ stats_container_save("samples", "pthread_kill Latency Scatter Plot",
+ "Iteration", "Latency (us)", &dat, "points");
+ stats_container_save("hist", "pthread_kill Latency Histogram",
+ "Iteration", "Latency (us)", &hist, "steps");
stats_hist(&hist, &dat);
printf("\n");
@@ -180,16 +183,13 @@ void *signal_receiving_thread(void *arg)
printf("Avg: %.4f us\n", stats_avg(&dat));
printf("StdDev: %.4f us\n", stats_stddev(&dat));
printf("Quantiles:\n");
+ stats_quantiles_calc(&dat, &quantiles);
stats_quantiles_print(&quantiles);
printf("Failures: %d\n", fail);
printf("Criteria: Time < %d us\n", THRESHOLD);
printf("Result: %s", fail ? "FAIL" : "PASS");
printf("\n\n");
- stats_container_save("samples", "pthread_kill Latency Scatter Plot",
- "Iteration", "Latency (us)", &dat, "points");
- stats_container_save("hist", "pthread_kill Latency Histogram",
- "Iteration", "Latency (us)", &hist, "steps");
return NULL;
}
diff --git a/testcases/realtime/func/sched_latency/sched_latency.c
b/testcases/realtime/func/sched_latency/sched_latency.c
index dda44bf..3370b13 100644
--- a/testcases/realtime/func/sched_latency/sched_latency.c
+++ b/testcases/realtime/func/sched_latency/sched_latency.c
@@ -202,8 +202,14 @@ void *periodic_thread(void *arg)
}
}
+ /* save samples before the quantile calculation messes things up! */
+ stats_hist(&hist, &dat);
+ stats_container_save("samples", "Periodic Scheduling Latency Scatter
Plot",\
+ "Iteration", "Latency (us)", &dat, "points");
+ stats_container_save("hist", "Periodic Scheduling Latency Histogram",\
+ "Iteration", "Latency (us)", &hist, "steps");
+
avg_delay /= (i - 1);
- stats_quantiles_calc(&dat, &quantiles);
printf("\n\n");
printf("Start: %4llu us: %s\n", start_delay,
start_delay < PASS_US ? "PASS" : "FAIL");
@@ -215,13 +221,9 @@ void *periodic_thread(void *arg)
avg_delay < PASS_US ? "PASS" : "FAIL");
printf("StdDev: %.4f us\n", stats_stddev(&dat));
printf("Quantiles:\n");
+ stats_quantiles_calc(&dat, &quantiles);
stats_quantiles_print(&quantiles);
printf("Failed Iterations: %d\n", failures);
- stats_hist(&hist, &dat);
- stats_container_save("samples", "Periodic Scheduling Latency Scatter
Plot",\
- "Iteration", "Latency (us)", &dat, "points");
- stats_container_save("hist", "Periodic Scheduling Latency Histogram",\
- "Iteration", "Latency (us)", &hist, "steps");
return NULL;
}
--
1.5.4.rc2.84.gf85fd-dirty
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list