aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/builtin-stat.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/builtin-stat.c')
-rw-r--r--tools/perf/builtin-stat.c46
1 files changed, 29 insertions, 17 deletions
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index 9eb42b1ae784..e5b3c0ff03a9 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -324,9 +324,9 @@ static void print_counter(int counter)
324} 324}
325 325
326/* 326/*
327 * Normalize noise values down to stddev: 327 * normalize_noise noise values down to stddev:
328 */ 328 */
329static void normalize(__u64 *val) 329static void normalize_noise(__u64 *val)
330{ 330{
331 double res; 331 double res;
332 332
@@ -335,6 +335,13 @@ static void normalize(__u64 *val)
335 *val = (__u64)res; 335 *val = (__u64)res;
336} 336}
337 337
338static void update_avg(const char *name, int idx, __u64 *avg, __u64 *val)
339{
340 *avg += *val;
341
342 if (verbose > 1)
343 fprintf(stderr, "debug: %20s[%d]: %Ld\n", name, idx, *val);
344}
338/* 345/*
339 * Calculate the averages and noises: 346 * Calculate the averages and noises:
340 */ 347 */
@@ -342,16 +349,23 @@ static void calc_avg(void)
342{ 349{
343 int i, j; 350 int i, j;
344 351
352 if (verbose > 1)
353 fprintf(stderr, "\n");
354
345 for (i = 0; i < run_count; i++) { 355 for (i = 0; i < run_count; i++) {
346 runtime_nsecs_avg += runtime_nsecs[i]; 356 update_avg("runtime", 0, &runtime_nsecs_avg, runtime_nsecs + i);
347 walltime_nsecs_avg += walltime_nsecs[i]; 357 update_avg("walltime", 0, &walltime_nsecs_avg, walltime_nsecs + i);
348 runtime_cycles_avg += runtime_cycles[i]; 358 update_avg("runtime_cycles", 0, &runtime_cycles_avg, runtime_cycles + i);
349 359
350 for (j = 0; j < nr_counters; j++) { 360 for (j = 0; j < nr_counters; j++) {
351 event_res_avg[j][0] += event_res[i][j][0]; 361 update_avg("counter/0", j,
352 event_res_avg[j][1] += event_res[i][j][1]; 362 event_res_avg[j]+0, event_res[i][j]+0);
353 event_res_avg[j][2] += event_res[i][j][2]; 363 update_avg("counter/1", j,
354 event_scaled_avg[j] += event_scaled[i][j]; 364 event_res_avg[j]+1, event_res[i][j]+1);
365 update_avg("counter/2", j,
366 event_res_avg[j]+2, event_res[i][j]+2);
367 update_avg("scaled", j,
368 event_scaled_avg + j, event_scaled[i]+j);
355 } 369 }
356 } 370 }
357 runtime_nsecs_avg /= run_count; 371 runtime_nsecs_avg /= run_count;
@@ -382,14 +396,14 @@ static void calc_avg(void)
382 } 396 }
383 } 397 }
384 398
385 normalize(&runtime_nsecs_noise); 399 normalize_noise(&runtime_nsecs_noise);
386 normalize(&walltime_nsecs_noise); 400 normalize_noise(&walltime_nsecs_noise);
387 normalize(&runtime_cycles_noise); 401 normalize_noise(&runtime_cycles_noise);
388 402
389 for (j = 0; j < nr_counters; j++) { 403 for (j = 0; j < nr_counters; j++) {
390 normalize(&event_res_noise[j][0]); 404 normalize_noise(&event_res_noise[j][0]);
391 normalize(&event_res_noise[j][1]); 405 normalize_noise(&event_res_noise[j][1]);
392 normalize(&event_res_noise[j][2]); 406 normalize_noise(&event_res_noise[j][2]);
393 } 407 }
394} 408}
395 409
@@ -399,8 +413,6 @@ static void print_stat(int argc, const char **argv)
399 413
400 calc_avg(); 414 calc_avg();
401 415
402 run_idx = 0;
403
404 fflush(stdout); 416 fflush(stdout);
405 417
406 fprintf(stderr, "\n"); 418 fprintf(stderr, "\n");