All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH][perf/urgent] perf stat: Fix interval output values
@ 2016-02-03  7:43 Jiri Olsa
  2016-02-04  8:00 ` [tip:perf/urgent] " tip-bot for Jiri Olsa
  0 siblings, 1 reply; 2+ messages in thread
From: Jiri Olsa @ 2016-02-03  7:43 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: lkml, David Ahern, Ingo Molnar, Namhyung Kim, Peter Zijlstra,
	Stephane Eranian, Andi Kleen

We broke interval data displays with commit:
  3f416f22d1e2 perf stat: Do not clean event's private stats

This commit removed stats cleaning, which is important
for '-r' option to carry counters data over the whole
run. But it's necessary to clean it for interval mode,
otherwise the displayed value is avg of all previous
values.

Before:
  $ perf stat -e cycles -a -I 1000 record
  #           time             counts unit events
       1.000240796         75,216,287      cycles
       2.000512791        107,823,524      cycles

  $ perf stat report
  #           time             counts unit events
       1.000240796         75,216,287      cycles
       2.000512791         91,519,906      cycles

Now:
  $ perf stat report
  #           time             counts unit events
       1.000240796         75,216,287      cycles
       2.000512791        107,823,524      cycles

Notice the second value being bigger (91,.. < 107,..).

This could be easily verified by using perf script which
displays raw stat data:

  $ perf script
  CPU   THREAD             VAL             ENA             RUN            TIME EVENT
    0       -1        23855779      1000209530      1000209530      1000240796 cycles
    1       -1        33340397      1000224964      1000224964      1000240796 cycles
    2       -1        15835415      1000226695      1000226695      1000240796 cycles
    3       -1         2184696      1000228245      1000228245      1000240796 cycles
    0       -1        97014312      2000514533      2000514533      2000512791 cycles
    1       -1        46121497      2000543795      2000543795      2000512791 cycles
    2       -1        32269530      2000543566      2000543566      2000512791 cycles
    3       -1         7634472      2000544108      2000544108      2000512791 cycles

The sum of the first 4 values is the first interval
aggregated value:
  23855779 + 33340397 + 15835415 + 2184696 = 75,216,287

The sum of the second 4 values minus first value is
the second interval aggregated value:
  97014312 + 46121497 + 32269530 + 7634472 - 75216287 = 107,823,524

Link: http://lkml.kernel.org/n/tip-4xawgmi82euqnq9t87l2l1in@git.kernel.org
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
 tools/perf/util/stat.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/tools/perf/util/stat.c b/tools/perf/util/stat.c
index beeed0bd3bee..4d9b481cf3b6 100644
--- a/tools/perf/util/stat.c
+++ b/tools/perf/util/stat.c
@@ -311,6 +311,16 @@ int perf_stat_process_counter(struct perf_stat_config *config,
 
 	aggr->val = aggr->ena = aggr->run = 0;
 
+	/*
+	 * We calculate counter's data every interval,
+	 * and the display code shows ps->res_stats
+	 * avg value. We need to zero the stats for
+	 * interval mode, otherwise overall avg running
+	 * averages will be shown for each interval.
+	 */
+	if (config->interval)
+		init_stats(ps->res_stats);
+
 	if (counter->per_pkg)
 		zero_per_pkg(counter);
 
-- 
2.4.3

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [tip:perf/urgent] perf stat: Fix interval output values
  2016-02-03  7:43 [PATCH][perf/urgent] perf stat: Fix interval output values Jiri Olsa
@ 2016-02-04  8:00 ` tip-bot for Jiri Olsa
  0 siblings, 0 replies; 2+ messages in thread
From: tip-bot for Jiri Olsa @ 2016-02-04  8:00 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: mingo, namhyung, dsahern, ak, acme, hpa, eranian, linux-kernel,
	tglx, jolsa, a.p.zijlstra

Commit-ID:  51fd2df1e882a3c2a3f4b6c9ff243a93c9046dba
Gitweb:     http://git.kernel.org/tip/51fd2df1e882a3c2a3f4b6c9ff243a93c9046dba
Author:     Jiri Olsa <jolsa@kernel.org>
AuthorDate: Wed, 3 Feb 2016 08:43:56 +0100
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Wed, 3 Feb 2016 19:39:52 -0300

perf stat: Fix interval output values

We broke interval data displays with commit:

  3f416f22d1e2 ("perf stat: Do not clean event's private stats")

This commit removed stats cleaning, which is important for '-r' option
to carry counters data over the whole run. But it's necessary to clean
it for interval mode, otherwise the displayed value is avg of all
previous values.

Before:
  $ perf stat -e cycles -a -I 1000 record
  #           time             counts unit events
       1.000240796         75,216,287      cycles
       2.000512791        107,823,524      cycles

  $ perf stat report
  #           time             counts unit events
       1.000240796         75,216,287      cycles
       2.000512791         91,519,906      cycles

Now:
  $ perf stat report
  #           time             counts unit events
       1.000240796         75,216,287      cycles
       2.000512791        107,823,524      cycles

Notice the second value being bigger (91,.. < 107,..).

This could be easily verified by using perf script which displays raw
stat data:

  $ perf script
  CPU  THREAD       VAL         ENA         RUN        TIME EVENT
    0      -1  23855779  1000209530  1000209530  1000240796 cycles
    1      -1  33340397  1000224964  1000224964  1000240796 cycles
    2      -1  15835415  1000226695  1000226695  1000240796 cycles
    3      -1   2184696  1000228245  1000228245  1000240796 cycles
    0      -1  97014312  2000514533  2000514533  2000512791 cycles
    1      -1  46121497  2000543795  2000543795  2000512791 cycles
    2      -1  32269530  2000543566  2000543566  2000512791 cycles
    3      -1   7634472  2000544108  2000544108  2000512791 cycles

The sum of the first 4 values is the first interval aggregated value:

  23855779 + 33340397 + 15835415 + 2184696 = 75,216,287

The sum of the second 4 values minus first value is the second interval
aggregated value:

  97014312 + 46121497 + 32269530 + 7634472 - 75216287 = 107,823,524

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1454485436-20639-1-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/stat.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/tools/perf/util/stat.c b/tools/perf/util/stat.c
index 2b58edc..afb0c45 100644
--- a/tools/perf/util/stat.c
+++ b/tools/perf/util/stat.c
@@ -311,6 +311,16 @@ int perf_stat_process_counter(struct perf_stat_config *config,
 
 	aggr->val = aggr->ena = aggr->run = 0;
 
+	/*
+	 * We calculate counter's data every interval,
+	 * and the display code shows ps->res_stats
+	 * avg value. We need to zero the stats for
+	 * interval mode, otherwise overall avg running
+	 * averages will be shown for each interval.
+	 */
+	if (config->interval)
+		init_stats(ps->res_stats);
+
 	if (counter->per_pkg)
 		zero_per_pkg(counter);
 

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2016-02-04  8:00 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-02-03  7:43 [PATCH][perf/urgent] perf stat: Fix interval output values Jiri Olsa
2016-02-04  8:00 ` [tip:perf/urgent] " tip-bot for Jiri Olsa

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.