Re: [PATCH 6/9] perf sort: Add 'addr' sort key

2013-04-03 Thread Namhyung Kim
Hi Jiri,

On Tue, 2 Apr 2013 10:40:14 +0200, Jiri Olsa wrote:
> On Tue, Apr 02, 2013 at 11:15:23AM +0900, Namhyung Kim wrote:
>> On Mon, 1 Apr 2013 22:40:23 +0200, Jiri Olsa wrote:
>> > On Mon, Apr 01, 2013 at 08:35:22PM +0900, Namhyung Kim wrote:
>> >> From: Namhyung Kim 
>> >> 
>> >> New addr sort key provides a way to sort the entries by the symbol
>> >> addresses.  It can be helpful to figure out symbol resolution problem
>> >> when a dso cannot do it properly as well as finding hotpath in a dso
>> >> and/or a function.
>> >
>> > maybe it's just the recent mem profiling patches, but wouldn't
>> > it be better to use 'ip' instead of 'addr'?
>> >
>> > also it's following code getting the data:
>> > ...
>> > if (sample_type & PERF_SAMPLE_IP)
>> > data->ip = perf_instruction_pointer(regs);
>> > ...
>> >
>> > same for the "perf sort: Add 'addr_to/from' sort key" patch
>> 
>> I'm not sure I understand what you mean exactly.
>> 
>> I used hist_entry->ip but it was set by al->addr which was converted
>> from the original sample ip to a relative ip by map->map_ip().
>> 
>> I can change it to use ->unmap_ip() before printing.  Is that your
>> concern?
>
> what I meant was the 'addr' name itself for -s option, like use:
>   '-s ip' instead of '-s addr'

Well, I don't know what's better.  But the 'addr' looks more natural to
me and it's requested originally.  And the 'ip' can have multiple
meaning. :)

Thanks,
Namhyung

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 6/9] perf sort: Add 'addr' sort key

2013-04-03 Thread Namhyung Kim
Hi Jiri,

On Tue, 2 Apr 2013 10:40:14 +0200, Jiri Olsa wrote:
 On Tue, Apr 02, 2013 at 11:15:23AM +0900, Namhyung Kim wrote:
 On Mon, 1 Apr 2013 22:40:23 +0200, Jiri Olsa wrote:
  On Mon, Apr 01, 2013 at 08:35:22PM +0900, Namhyung Kim wrote:
  From: Namhyung Kim namhyung@lge.com
  
  New addr sort key provides a way to sort the entries by the symbol
  addresses.  It can be helpful to figure out symbol resolution problem
  when a dso cannot do it properly as well as finding hotpath in a dso
  and/or a function.
 
  maybe it's just the recent mem profiling patches, but wouldn't
  it be better to use 'ip' instead of 'addr'?
 
  also it's following code getting the data:
  ...
  if (sample_type  PERF_SAMPLE_IP)
  data-ip = perf_instruction_pointer(regs);
  ...
 
  same for the perf sort: Add 'addr_to/from' sort key patch
 
 I'm not sure I understand what you mean exactly.
 
 I used hist_entry-ip but it was set by al-addr which was converted
 from the original sample ip to a relative ip by map-map_ip().
 
 I can change it to use -unmap_ip() before printing.  Is that your
 concern?

 what I meant was the 'addr' name itself for -s option, like use:
   '-s ip' instead of '-s addr'

Well, I don't know what's better.  But the 'addr' looks more natural to
me and it's requested originally.  And the 'ip' can have multiple
meaning. :)

Thanks,
Namhyung

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 6/9] perf sort: Add 'addr' sort key

2013-04-02 Thread Jiri Olsa
On Tue, Apr 02, 2013 at 11:15:23AM +0900, Namhyung Kim wrote:
> On Mon, 1 Apr 2013 22:40:23 +0200, Jiri Olsa wrote:
> > On Mon, Apr 01, 2013 at 08:35:22PM +0900, Namhyung Kim wrote:
> >> From: Namhyung Kim 
> >> 
> >> New addr sort key provides a way to sort the entries by the symbol
> >> addresses.  It can be helpful to figure out symbol resolution problem
> >> when a dso cannot do it properly as well as finding hotpath in a dso
> >> and/or a function.
> >
> > maybe it's just the recent mem profiling patches, but wouldn't
> > it be better to use 'ip' instead of 'addr'?
> >
> > also it's following code getting the data:
> > ...
> > if (sample_type & PERF_SAMPLE_IP)
> > data->ip = perf_instruction_pointer(regs);
> > ...
> >
> > same for the "perf sort: Add 'addr_to/from' sort key" patch
> 
> I'm not sure I understand what you mean exactly.
> 
> I used hist_entry->ip but it was set by al->addr which was converted
> from the original sample ip to a relative ip by map->map_ip().
> 
> I can change it to use ->unmap_ip() before printing.  Is that your
> concern?

what I meant was the 'addr' name itself for -s option, like use:
  '-s ip' instead of '-s addr'

I'm fine with the implementation

jirka

> 
> And it seems that addr in branch info is original ip, Stephane?
> 
> Thanks,
> Namhyung
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 6/9] perf sort: Add 'addr' sort key

2013-04-02 Thread Jiri Olsa
On Tue, Apr 02, 2013 at 11:15:23AM +0900, Namhyung Kim wrote:
 On Mon, 1 Apr 2013 22:40:23 +0200, Jiri Olsa wrote:
  On Mon, Apr 01, 2013 at 08:35:22PM +0900, Namhyung Kim wrote:
  From: Namhyung Kim namhyung@lge.com
  
  New addr sort key provides a way to sort the entries by the symbol
  addresses.  It can be helpful to figure out symbol resolution problem
  when a dso cannot do it properly as well as finding hotpath in a dso
  and/or a function.
 
  maybe it's just the recent mem profiling patches, but wouldn't
  it be better to use 'ip' instead of 'addr'?
 
  also it's following code getting the data:
  ...
  if (sample_type  PERF_SAMPLE_IP)
  data-ip = perf_instruction_pointer(regs);
  ...
 
  same for the perf sort: Add 'addr_to/from' sort key patch
 
 I'm not sure I understand what you mean exactly.
 
 I used hist_entry-ip but it was set by al-addr which was converted
 from the original sample ip to a relative ip by map-map_ip().
 
 I can change it to use -unmap_ip() before printing.  Is that your
 concern?

what I meant was the 'addr' name itself for -s option, like use:
  '-s ip' instead of '-s addr'

I'm fine with the implementation

jirka

 
 And it seems that addr in branch info is original ip, Stephane?
 
 Thanks,
 Namhyung
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 6/9] perf sort: Add 'addr' sort key

2013-04-01 Thread Namhyung Kim
On Mon, 1 Apr 2013 22:40:23 +0200, Jiri Olsa wrote:
> On Mon, Apr 01, 2013 at 08:35:22PM +0900, Namhyung Kim wrote:
>> From: Namhyung Kim 
>> 
>> New addr sort key provides a way to sort the entries by the symbol
>> addresses.  It can be helpful to figure out symbol resolution problem
>> when a dso cannot do it properly as well as finding hotpath in a dso
>> and/or a function.
>
> maybe it's just the recent mem profiling patches, but wouldn't
> it be better to use 'ip' instead of 'addr'?
>
> also it's following code getting the data:
> ...
> if (sample_type & PERF_SAMPLE_IP)
> data->ip = perf_instruction_pointer(regs);
> ...
>
> same for the "perf sort: Add 'addr_to/from' sort key" patch

I'm not sure I understand what you mean exactly.

I used hist_entry->ip but it was set by al->addr which was converted
from the original sample ip to a relative ip by map->map_ip().

I can change it to use ->unmap_ip() before printing.  Is that your
concern?

And it seems that addr in branch info is original ip, Stephane?

Thanks,
Namhyung
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 6/9] perf sort: Add 'addr' sort key

2013-04-01 Thread Jiri Olsa
On Mon, Apr 01, 2013 at 08:35:22PM +0900, Namhyung Kim wrote:
> From: Namhyung Kim 
> 
> New addr sort key provides a way to sort the entries by the symbol
> addresses.  It can be helpful to figure out symbol resolution problem
> when a dso cannot do it properly as well as finding hotpath in a dso
> and/or a function.

maybe it's just the recent mem profiling patches, but wouldn't
it be better to use 'ip' instead of 'addr'?

also it's following code getting the data:
...
if (sample_type & PERF_SAMPLE_IP)
data->ip = perf_instruction_pointer(regs);
...

same for the "perf sort: Add 'addr_to/from' sort key" patch

jirka
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 6/9] perf sort: Add 'addr' sort key

2013-04-01 Thread Namhyung Kim
From: Namhyung Kim 

New addr sort key provides a way to sort the entries by the symbol
addresses.  It can be helpful to figure out symbol resolution problem
when a dso cannot do it properly as well as finding hotpath in a dso
and/or a function.

Suggested-by: Arnaldo Carvalho de Melo 
Buglink: https://bugzilla.kernel.org/show_bug.cgi?id=55561
Signed-off-by: Namhyung Kim 
---
 tools/perf/util/hist.c |  2 ++
 tools/perf/util/hist.h |  3 ++-
 tools/perf/util/sort.c | 23 +++
 tools/perf/util/sort.h |  1 +
 4 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
index 72b4eec820c3..c098d6ebab1f 100644
--- a/tools/perf/util/hist.c
+++ b/tools/perf/util/hist.c
@@ -52,6 +52,8 @@ void hists__reset_col_len(struct hists *hists)
 
for (col = 0; col < HISTC_NR_COLS; ++col)
hists__set_col_len(hists, col, 0);
+
+   hists__set_col_len(hists, HISTC_ADDR, BITS_PER_LONG / 4 + 2);
 }
 
 static void hists__set_unres_dso_col_len(struct hists *hists, int dso)
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index 14c2fe20aa62..9599f805828f 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -43,12 +43,13 @@ enum hist_column {
HISTC_COMM,
HISTC_PARENT,
HISTC_CPU,
+   HISTC_SRCLINE,
+   HISTC_ADDR,
HISTC_MISPREDICT,
HISTC_SYMBOL_FROM,
HISTC_SYMBOL_TO,
HISTC_DSO_FROM,
HISTC_DSO_TO,
-   HISTC_SRCLINE,
HISTC_LOCAL_WEIGHT,
HISTC_GLOBAL_WEIGHT,
HISTC_MEM_DADDR_SYMBOL,
diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index c19bf213cc86..fecde9347cbd 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -342,6 +342,28 @@ struct sort_entry sort_cpu = {
.se_width_idx   = HISTC_CPU,
 };
 
+/* --sort addr */
+
+static int64_t
+sort__addr_cmp(struct hist_entry *left, struct hist_entry *right)
+{
+   return right->ip - left->ip;
+}
+
+static int hist_entry__addr_snprintf(struct hist_entry *self, char *bf,
+size_t size, unsigned int width)
+{
+   return repsep_snprintf(bf, size, "%#*"PRIx64, width, 
(uint64_t)self->ip);
+}
+
+struct sort_entry sort_addr = {
+   .se_header  = "Address",
+   .se_cmp = sort__addr_cmp,
+   .se_snprintf= hist_entry__addr_snprintf,
+   .se_width_idx   = HISTC_ADDR,
+};
+
+
 /* sort keys for branch stacks */
 
 static int64_t
@@ -871,6 +893,7 @@ static struct sort_dimension common_sort_dimensions[] = {
DIM(SORT_PARENT, "parent", sort_parent),
DIM(SORT_CPU, "cpu", sort_cpu),
DIM(SORT_SRCLINE, "srcline", sort_srcline),
+   DIM(SORT_ADDR, "addr", sort_addr),
 };
 
 #undef DIM
diff --git a/tools/perf/util/sort.h b/tools/perf/util/sort.h
index 0232d476da87..0815e344f38c 100644
--- a/tools/perf/util/sort.h
+++ b/tools/perf/util/sort.h
@@ -138,6 +138,7 @@ enum sort_type {
SORT_PARENT,
SORT_CPU,
SORT_SRCLINE,
+   SORT_ADDR,
 
/* branch stack specific sort keys */
__SORT_BRANCH_STACK,
-- 
1.7.11.7

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 6/9] perf sort: Add 'addr' sort key

2013-04-01 Thread Namhyung Kim
From: Namhyung Kim namhyung@lge.com

New addr sort key provides a way to sort the entries by the symbol
addresses.  It can be helpful to figure out symbol resolution problem
when a dso cannot do it properly as well as finding hotpath in a dso
and/or a function.

Suggested-by: Arnaldo Carvalho de Melo a...@ghostprotocols.net
Buglink: https://bugzilla.kernel.org/show_bug.cgi?id=55561
Signed-off-by: Namhyung Kim namhy...@kernel.org
---
 tools/perf/util/hist.c |  2 ++
 tools/perf/util/hist.h |  3 ++-
 tools/perf/util/sort.c | 23 +++
 tools/perf/util/sort.h |  1 +
 4 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
index 72b4eec820c3..c098d6ebab1f 100644
--- a/tools/perf/util/hist.c
+++ b/tools/perf/util/hist.c
@@ -52,6 +52,8 @@ void hists__reset_col_len(struct hists *hists)
 
for (col = 0; col  HISTC_NR_COLS; ++col)
hists__set_col_len(hists, col, 0);
+
+   hists__set_col_len(hists, HISTC_ADDR, BITS_PER_LONG / 4 + 2);
 }
 
 static void hists__set_unres_dso_col_len(struct hists *hists, int dso)
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index 14c2fe20aa62..9599f805828f 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -43,12 +43,13 @@ enum hist_column {
HISTC_COMM,
HISTC_PARENT,
HISTC_CPU,
+   HISTC_SRCLINE,
+   HISTC_ADDR,
HISTC_MISPREDICT,
HISTC_SYMBOL_FROM,
HISTC_SYMBOL_TO,
HISTC_DSO_FROM,
HISTC_DSO_TO,
-   HISTC_SRCLINE,
HISTC_LOCAL_WEIGHT,
HISTC_GLOBAL_WEIGHT,
HISTC_MEM_DADDR_SYMBOL,
diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index c19bf213cc86..fecde9347cbd 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -342,6 +342,28 @@ struct sort_entry sort_cpu = {
.se_width_idx   = HISTC_CPU,
 };
 
+/* --sort addr */
+
+static int64_t
+sort__addr_cmp(struct hist_entry *left, struct hist_entry *right)
+{
+   return right-ip - left-ip;
+}
+
+static int hist_entry__addr_snprintf(struct hist_entry *self, char *bf,
+size_t size, unsigned int width)
+{
+   return repsep_snprintf(bf, size, %#*PRIx64, width, 
(uint64_t)self-ip);
+}
+
+struct sort_entry sort_addr = {
+   .se_header  = Address,
+   .se_cmp = sort__addr_cmp,
+   .se_snprintf= hist_entry__addr_snprintf,
+   .se_width_idx   = HISTC_ADDR,
+};
+
+
 /* sort keys for branch stacks */
 
 static int64_t
@@ -871,6 +893,7 @@ static struct sort_dimension common_sort_dimensions[] = {
DIM(SORT_PARENT, parent, sort_parent),
DIM(SORT_CPU, cpu, sort_cpu),
DIM(SORT_SRCLINE, srcline, sort_srcline),
+   DIM(SORT_ADDR, addr, sort_addr),
 };
 
 #undef DIM
diff --git a/tools/perf/util/sort.h b/tools/perf/util/sort.h
index 0232d476da87..0815e344f38c 100644
--- a/tools/perf/util/sort.h
+++ b/tools/perf/util/sort.h
@@ -138,6 +138,7 @@ enum sort_type {
SORT_PARENT,
SORT_CPU,
SORT_SRCLINE,
+   SORT_ADDR,
 
/* branch stack specific sort keys */
__SORT_BRANCH_STACK,
-- 
1.7.11.7

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 6/9] perf sort: Add 'addr' sort key

2013-04-01 Thread Jiri Olsa
On Mon, Apr 01, 2013 at 08:35:22PM +0900, Namhyung Kim wrote:
 From: Namhyung Kim namhyung@lge.com
 
 New addr sort key provides a way to sort the entries by the symbol
 addresses.  It can be helpful to figure out symbol resolution problem
 when a dso cannot do it properly as well as finding hotpath in a dso
 and/or a function.

maybe it's just the recent mem profiling patches, but wouldn't
it be better to use 'ip' instead of 'addr'?

also it's following code getting the data:
...
if (sample_type  PERF_SAMPLE_IP)
data-ip = perf_instruction_pointer(regs);
...

same for the perf sort: Add 'addr_to/from' sort key patch

jirka
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 6/9] perf sort: Add 'addr' sort key

2013-04-01 Thread Namhyung Kim
On Mon, 1 Apr 2013 22:40:23 +0200, Jiri Olsa wrote:
 On Mon, Apr 01, 2013 at 08:35:22PM +0900, Namhyung Kim wrote:
 From: Namhyung Kim namhyung@lge.com
 
 New addr sort key provides a way to sort the entries by the symbol
 addresses.  It can be helpful to figure out symbol resolution problem
 when a dso cannot do it properly as well as finding hotpath in a dso
 and/or a function.

 maybe it's just the recent mem profiling patches, but wouldn't
 it be better to use 'ip' instead of 'addr'?

 also it's following code getting the data:
 ...
 if (sample_type  PERF_SAMPLE_IP)
 data-ip = perf_instruction_pointer(regs);
 ...

 same for the perf sort: Add 'addr_to/from' sort key patch

I'm not sure I understand what you mean exactly.

I used hist_entry-ip but it was set by al-addr which was converted
from the original sample ip to a relative ip by map-map_ip().

I can change it to use -unmap_ip() before printing.  Is that your
concern?

And it seems that addr in branch info is original ip, Stephane?

Thanks,
Namhyung
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/