perf stat: Move sw clock metrics printout to stat-shadow
authorAndi Kleen <ak@linux.intel.com>
Tue, 3 Nov 2015 01:50:20 +0000 (17:50 -0800)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 4 Nov 2015 18:11:41 +0000 (15:11 -0300)
The sw clock metrics printing was missed in the earlier move to
stat-shadow of all the other metric printouts. Move it too.

v2: Fix metrics printing in this version to make bisect safe.

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Link: http://lkml.kernel.org/r/1446515428-7450-2-git-send-email-andi@firstfloor.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-stat.c
tools/perf/util/stat-shadow.c

index 2f438f76cceb2cb1681c30d62324e6a03c4b2108..8a788956b6a3d43336295b5ff1f02c0e66bd2833 100644 (file)
@@ -493,6 +493,7 @@ static void nsec_printout(int id, int nr, struct perf_evsel *evsel, double avg)
        double msecs = avg / 1e6;
        const char *fmt_v, *fmt_n;
        char name[25];
+       int cpu = cpu_map__id_to_cpu(id);
 
        fmt_v = csv_output ? "%.6f%s" : "%18.6f%s";
        fmt_n = csv_output ? "%s" : "%-25s";
@@ -517,11 +518,8 @@ static void nsec_printout(int id, int nr, struct perf_evsel *evsel, double avg)
        if (csv_output || stat_config.interval)
                return;
 
-       if (perf_evsel__match(evsel, SOFTWARE, SW_TASK_CLOCK))
-               fprintf(output, " # %8.3f CPUs utilized          ",
-                       avg / avg_stats(&walltime_nsecs_stats));
-       else
-               fprintf(output, "                                   ");
+       perf_stat__print_shadow_stats(output, evsel, avg, cpu,
+                                     stat_config.aggr_mode);
 }
 
 static void abs_printout(int id, int nr, struct perf_evsel *evsel, double avg)
index 2a5d8d7698aedb8c82bdf8488f1fb62ded5b438a..6ac03146889d29be60707efd6e04c27c919f64de 100644 (file)
@@ -413,6 +413,11 @@ void perf_stat__print_shadow_stats(FILE *out, struct perf_evsel *evsel,
                        ratio = total / avg;
 
                fprintf(out, " # %8.0f cycles / elision       ", ratio);
+       } else if (perf_evsel__match(evsel, SOFTWARE, SW_TASK_CLOCK)) {
+               if ((ratio = avg_stats(&walltime_nsecs_stats)) != 0)
+                       fprintf(out, " # %8.3f CPUs utilized          ", avg / ratio);
+               else
+                       fprintf(out, "                                   ");
        } else if (runtime_nsecs_stats[cpu].n != 0) {
                char unit = 'M';