mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@infradead.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org, Namhyung Kim <namhyung.kim@lge.com>,
	Namhyung Kim <namhyung@kernel.org>, Arun Sharma <asharma@fb.com>,
	Frederic Weisbecker <fweisbec@gmail.com>,
	Jiri Olsa <jolsa@redhat.com>, Paul Mackerras <paulus@samba.org>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Rodrigo Campos <rodrigo@sdfg.com.ar>,
	Stephane Eranian <eranian@google.com>,
	Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: [PATCH 01/35] perf sort: Compare addresses if no symbol info
Date: Fri, 20 Dec 2013 16:08:36 -0300	[thread overview]
Message-ID: <1387566550-3524-2-git-send-email-acme@infradead.org> (raw)
In-Reply-To: <1387566550-3524-1-git-send-email-acme@infradead.org>

From: Namhyung Kim <namhyung.kim@lge.com>

If a hist entry doesn't have symbol information, compare it with its
address.  Currently it only compares its level or whether it's NULL.

This can lead to an undesired result like an overhead exceeds 100%
especially when callchain accumulation is enabled by later patch.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Arun Sharma <asharma@fb.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Rodrigo Campos <rodrigo@sdfg.com.ar>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1387344086-12744-2-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/sort.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index 8b0bb1f4494a..68a4fd2f505e 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -161,6 +161,11 @@ struct sort_entry sort_dso = {
 
 /* --sort symbol */
 
+static int64_t _sort__addr_cmp(u64 left_ip, u64 right_ip)
+{
+	return (int64_t)(right_ip - left_ip);
+}
+
 static int64_t _sort__sym_cmp(struct symbol *sym_l, struct symbol *sym_r)
 {
 	u64 ip_l, ip_r;
@@ -183,7 +188,7 @@ sort__sym_cmp(struct hist_entry *left, struct hist_entry *right)
 	int64_t ret;
 
 	if (!left->ms.sym && !right->ms.sym)
-		return right->level - left->level;
+		return _sort__addr_cmp(left->ip, right->ip);
 
 	/*
 	 * comparing symbol address alone is not enough since it's a
@@ -372,7 +377,7 @@ sort__sym_from_cmp(struct hist_entry *left, struct hist_entry *right)
 	struct addr_map_symbol *from_r = &right->branch_info->from;
 
 	if (!from_l->sym && !from_r->sym)
-		return right->level - left->level;
+		return _sort__addr_cmp(from_l->addr, from_r->addr);
 
 	return _sort__sym_cmp(from_l->sym, from_r->sym);
 }
@@ -384,7 +389,7 @@ sort__sym_to_cmp(struct hist_entry *left, struct hist_entry *right)
 	struct addr_map_symbol *to_r = &right->branch_info->to;
 
 	if (!to_l->sym && !to_r->sym)
-		return right->level - left->level;
+		return _sort__addr_cmp(to_l->addr, to_r->addr);
 
 	return _sort__sym_cmp(to_l->sym, to_r->sym);
 }
-- 
1.8.1.4


  reply	other threads:[~2013-12-20 19:10 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-20 19:08 [GIT PULL 00/35] perf/core improvements and fixes Arnaldo Carvalho de Melo
2013-12-20 19:08 ` Arnaldo Carvalho de Melo [this message]
2013-12-20 19:08 ` [PATCH 02/35] perf sort: Do not compare dso again Arnaldo Carvalho de Melo
2013-12-20 19:08 ` [PATCH 03/35] perf hists: Do not pass period and weight to add_hist_entry() Arnaldo Carvalho de Melo
2013-12-20 19:08 ` [PATCH 04/35] tools lib traceevent: Introduce pevent_filter_strerror() Arnaldo Carvalho de Melo
2013-12-20 19:08 ` [PATCH 05/35] perf annotate: Auto allocate symbol per addr hist buckets Arnaldo Carvalho de Melo
2013-12-20 19:08 ` [PATCH 06/35] perf hists: Leave symbol addr hist bucket auto alloc to symbol layer Arnaldo Carvalho de Melo
2014-02-12  7:23   ` Anton Blanchard
2014-02-12 14:18     ` Arnaldo Carvalho de Melo
2014-02-12 14:50       ` Anton Blanchard
2014-02-12 17:09         ` Anton Blanchard
2014-02-13  8:19           ` Namhyung Kim
2013-12-20 19:08 ` [PATCH 07/35] perf annotate: Add inc_samples method to addr_map_symbol Arnaldo Carvalho de Melo
2013-12-20 19:08 ` [PATCH 08/35] perf top: Use hist_entry__inc_addr_sample Arnaldo Carvalho de Melo
2013-12-20 19:08 ` [PATCH 09/35] perf annotate: Adopt methods from hists Arnaldo Carvalho de Melo
2013-12-20 19:08 ` [PATCH 10/35] perf annotate: Make symbol__inc_addr_samples private Arnaldo Carvalho de Melo
2013-12-20 19:08 ` [PATCH 11/35] perf report: Introduce helpers for processing callchains Arnaldo Carvalho de Melo
2013-12-20 19:08 ` [PATCH 12/35] perf tools: Get rid of a duplicate va_end() in error reporting routine Arnaldo Carvalho de Melo
2013-12-20 19:08 ` [PATCH 13/35] perf inject: Handle output file via perf_data_file object Arnaldo Carvalho de Melo
2013-12-20 19:08 ` [PATCH 14/35] perf record: Use perf_data_file__write for output file Arnaldo Carvalho de Melo
2013-12-20 19:08 ` [PATCH 15/35] perf record: Simplify perf_record__write Arnaldo Carvalho de Melo
2013-12-20 19:08 ` [PATCH 16/35] perf record: Rename 'perf_record' to plain 'record' Arnaldo Carvalho de Melo
2013-12-20 19:08 ` [PATCH 17/35] perf tools: Rename 'perf_record_opts' to 'record_opts Arnaldo Carvalho de Melo
2013-12-20 19:08 ` [PATCH 18/35] perf tests: Factor make install tests Arnaldo Carvalho de Melo
2013-12-20 19:08 ` [PATCH 19/35] perf tools: Making QUIET_(CLEAN|INSTAL) variables global Arnaldo Carvalho de Melo
2013-12-20 19:08 ` [PATCH 20/35] tools lib traceevent: Remove print_app_build variable Arnaldo Carvalho de Melo
2013-12-20 19:08 ` [PATCH 21/35] tools lib traceevent: Use global QUIET_CC build output Arnaldo Carvalho de Melo
2013-12-20 19:08 ` [PATCH 22/35] tools lib traceevent: Add global QUIET_CC_FPIC " Arnaldo Carvalho de Melo
2013-12-20 19:08 ` [PATCH 23/35] tools lib traceevent: Use global QUIET_LINK " Arnaldo Carvalho de Melo
2013-12-20 19:08 ` [PATCH 24/35] tools lib traceevent: Use global QUIET_INSTALL " Arnaldo Carvalho de Melo
2013-12-20 19:09 ` [PATCH 25/35] tools lib traceevent: Use global QUIET_CLEAN " Arnaldo Carvalho de Melo
2013-12-20 19:09 ` [PATCH 26/35] tools lib traceevent: Use global 'O' processing code Arnaldo Carvalho de Melo
2013-12-20 19:09 ` [PATCH 27/35] perf report: Rename 'perf_report' to 'report' Arnaldo Carvalho de Melo
2013-12-20 19:09 ` [PATCH 28/35] perf ui browser: Remove misplaced __maybe_unused Arnaldo Carvalho de Melo
2013-12-20 19:09 ` [PATCH 29/35] perf scripting python: Shorten function signatures Arnaldo Carvalho de Melo
2013-12-20 19:09 ` [PATCH 30/35] perf scripting perl: " Arnaldo Carvalho de Melo
2013-12-20 19:09 ` [PATCH 31/35] perf mem: Remove unused parameter from dump_raw_samples() Arnaldo Carvalho de Melo
2013-12-20 19:09 ` [PATCH 32/35] perf symbols: Add 'machine' member to struct addr_location Arnaldo Carvalho de Melo
2013-12-20 19:09 ` [PATCH 33/35] perf report: Use pr_*() functions where applicable Arnaldo Carvalho de Melo
2013-12-20 19:09 ` [PATCH 34/35] perf report: Print session information only if --stdio is given Arnaldo Carvalho de Melo
2013-12-20 19:09 ` [PATCH 35/35] perf stat: Do not show stats if workload fails Arnaldo Carvalho de Melo
2013-12-27 20:05 ` [GIT PULL 00/35] perf/core improvements and fixes Arnaldo Carvalho de Melo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1387566550-3524-2-git-send-email-acme@infradead.org \
    --to=acme@infradead.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@redhat.com \
    --cc=asharma@fb.com \
    --cc=eranian@google.com \
    --cc=fweisbec@gmail.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung.kim@lge.com \
    --cc=namhyung@kernel.org \
    --cc=paulus@samba.org \
    --cc=rodrigo@sdfg.com.ar \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®