perf stat: Measure 't0' and 'ref_time' after enable_counters()
authorSong Liu <songliubraving@fb.com>
Tue, 16 Mar 2021 21:18:36 +0000 (14:18 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 23 Mar 2021 21:05:36 +0000 (18:05 -0300)
Take measurements of 't0' and 'ref_time' after enable_counters(), so
that they only measure the time consumed when the counters are enabled.

Signed-off-by: Song Liu <songliubraving@fb.com>
Acked-by: Andi Kleen <andi@firstfloor.org>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: kernel-team@fb.com
Link: http://lore.kernel.org/lkml/20210316211837.910506-3-songliubraving@fb.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-stat.c

index d34e22dce2c820eef20e7b428ee0beaaa2bcb202..4bb48c6b669804234b1247effe679ab1c6f2e0e5 100644 (file)
@@ -931,15 +931,15 @@ try_again_reset:
        /*
         * Enable counters and exec the command:
         */
-       t0 = rdclock();
-       clock_gettime(CLOCK_MONOTONIC, &ref_time);
-
        if (forks) {
                evlist__start_workload(evsel_list);
                err = enable_counters();
                if (err)
                        return -1;
 
+               t0 = rdclock();
+               clock_gettime(CLOCK_MONOTONIC, &ref_time);
+
                if (interval || timeout || evlist__ctlfd_initialized(evsel_list))
                        status = dispatch_events(forks, timeout, interval, &times);
                if (child_pid != -1) {
@@ -960,6 +960,10 @@ try_again_reset:
                err = enable_counters();
                if (err)
                        return -1;
+
+               t0 = rdclock();
+               clock_gettime(CLOCK_MONOTONIC, &ref_time);
+
                status = dispatch_events(forks, timeout, interval, &times);
        }