All of lore.kernel.org
 help / color / mirror / Atom feed
* duplicate cache misses counter labels with perf-stat
@ 2012-09-05 15:21 Joel Uckelman
  2012-09-05 17:51 ` [PATCH] perf tools: Fix cache event name generation Jiri Olsa
  0 siblings, 1 reply; 2+ messages in thread
From: Joel Uckelman @ 2012-09-05 15:21 UTC (permalink / raw)
  To: linux-perf-users

When I do this with perf 3.5.2,

  perf stat -x, -e
L1-dcache-loads,L1-dcache-load-misses,L1-dcache-stores,L1-dcache-store-misses
ls

I'm seeing this output from perf:

  697171,L1-dcache-loads

  28012,L1-dcache-misses

  455691,L1-dcache-stores

  11791,L1-dcache-misses

So, I'm getting two results labeled "L1-dcache-misses" (with different
values!) and none labeled "L1-dcache-store-misses". It looks to me
like one of the "L1-dcache-misses" is mislabeled.

There appears to be a general problem with all of the *-misses
counters, as a similar thing happens with, e.g., LLC-load-misses and
LLC-store-missses, and all of the others I've checked.

Is this a bug, or am I misunderstanding how perf-stat is supposed to work?

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

* [PATCH] perf tools: Fix cache event name generation
  2012-09-05 15:21 duplicate cache misses counter labels with perf-stat Joel Uckelman
@ 2012-09-05 17:51 ` Jiri Olsa
  0 siblings, 0 replies; 2+ messages in thread
From: Jiri Olsa @ 2012-09-05 17:51 UTC (permalink / raw)
  To: Joel Uckelman
  Cc: linux-perf-users, Arnaldo Carvalho de Melo, Peter Zijlstra,
	Ingo Molnar, Paul Mackerras, Corey Ashford, Frederic Weisbecker

On Wed, Sep 05, 2012 at 05:21:10PM +0200, Joel Uckelman wrote:
> When I do this with perf 3.5.2,
> 
>   perf stat -x, -e
> L1-dcache-loads,L1-dcache-load-misses,L1-dcache-stores,L1-dcache-store-misses
> ls
> 
> I'm seeing this output from perf:
> 
>   697171,L1-dcache-loads
> 
>   28012,L1-dcache-misses
> 
>   455691,L1-dcache-stores
> 
>   11791,L1-dcache-misses
> 
> So, I'm getting two results labeled "L1-dcache-misses" (with different
> values!) and none labeled "L1-dcache-store-misses". It looks to me
> like one of the "L1-dcache-misses" is mislabeled.
> 
> There appears to be a general problem with all of the *-misses
> counters, as a similar thing happens with, e.g., LLC-load-misses and
> LLC-store-missses, and all of the others I've checked.
> 
> Is this a bug, or am I misunderstanding how perf-stat is supposed to work?

bug ;) please try attached patch

thanks,
jirka


---
If the event name is specified with all 3 components, the last one
overwrites the previous one during the name composing within the
parse_events_add_cache function.

Fixing this by properly adjusting the string index.

Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Jiri Olsa <jolsa@redhat.com>
---
 tools/perf/util/parse-events.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index b246303..a031ee1 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -308,7 +308,7 @@ int parse_events_add_cache(struct list_head **list, int *idx,
 	for (i = 0; (i < 2) && (op_result[i]); i++) {
 		char *str = op_result[i];
 
-		snprintf(name + n, MAX_NAME_LEN - n, "-%s\n", str);
+		n += snprintf(name + n, MAX_NAME_LEN - n, "-%s", str);
 
 		if (cache_op == -1) {
 			cache_op = parse_aliases(str, perf_evsel__hw_cache_op,
-- 
1.7.11.4

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

end of thread, other threads:[~2012-09-05 17:52 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-09-05 15:21 duplicate cache misses counter labels with perf-stat Joel Uckelman
2012-09-05 17:51 ` [PATCH] perf tools: Fix cache event name generation 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.