Re: [PATCH 6/9] perf sort: Add 'addr' sort key
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
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
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
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
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
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
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
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
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
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/