From: Milian Wolff <milian.wolff@kdab.com>
To: acme@kernel.org
Cc: jolsa@kernel.org, namhyung@kernel.org,
Linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
Arnaldo Carvalho de Melo <acme@redhat.com>,
Yao Jin <yao.jin@linux.intel.com>, Jiri Olsa <jolsa@redhat.com>
Subject: Re: [PATCH v6 6/6] perf util: use correct IP mapping to find srcline for hist entry
Date: Thu, 19 Oct 2017 12:54:18 +0200 [thread overview]
Message-ID: <3026429.kO1GvhRXjL@agathebauer> (raw)
In-Reply-To: <20171018185350.14893-7-milian.wolff@kdab.com>
On Mittwoch, 18. Oktober 2017 20:53:50 CEST Milian Wolff wrote:
> When inline frame resolution is disabled, a bogus srcline is obtained
> for hist entries:
>
> ~~~~~
> $ perf report -s sym,srcline --no-inline --stdio -g none
> 95.21% 0.00% [.] __libc_start_main
>
> __libc_start_main+18446603358170398953 95.21% 0.00% [.] _start
>
> _start+18446650082411225129 46.67% 0.00% [.]
> main
> main+18446650082411225208 38.75%
> 0.00% [.] hypot
>
> hypot+18446603358164312084 23.75% 0.00% [.] main
>
> main+18446650082411225151 20.83% 20.83% [.]
> std::generate_canonical<double, 53ul,
> std::linear_congruential_engine<unsigned long, 16807ul, 0ul, 2147483647ul>
> > random.h:143 18.12% 0.00% [.] main
>
> main+18446650082411225165 13.12% 13.12% [.]
> std::generate_canonical<double, 53ul,
> std::linear_congruential_engine<unsigned long, 16807ul, 0ul, 2147483647ul>
> > random.tcc:3330 4.17% 4.17% [.] __hypot_finite
>
> __hypot_finite+163 4.17% 4.17% [.] std::generate_canonical<double,
> 53ul, std::linear_congruential_engine<unsigned long, 16807ul, 0ul,
> 2147483647ul> > random.tcc:3333 4.17% 0.00% [.] __hypot_finite
>
> __hypot_finite+18446603358164312227 4.17% 0.00% [.]
> std::generate_canonical<double, 53ul,
> std::linear_congruential_engine<unsigned long, 16807ul, 0ul, 2147483647ul>
> > std::generate_canonical<double, 53ul, std::line 2.92% 0.00% [.]
> std::generate_canonical<double, 53ul,
> std::linear_congruential_engine<unsigned long, 16807ul, 0ul, 2147483647ul>
> > std::generate_canonical<double, 53ul, std::line 2.50% 2.50% [.]
> __hypot_finite
> __hypot_finite+11 2.50% 2.50%
> [.] __hypot_finite
> __hypot_finite+24 2.50%
> 0.00% [.] __hypot_finite
>
> __hypot_finite+18446603358164312075 2.50% 0.00% [.] __hypot_finite
>
> __hypot_finite+18446603358164312088 ~~~~~
>
> Note how we get very large offsets to main and cannot see any srcline
> from one of the complex or random headers, even though the instruction
> pointers actually lie in code inlined from there.
>
> This patch fixes the mapping to use map__objdump_2mem instead of
> map__objdump_2mem in hist_entry__get_srcline. This fixes the srcline
> values for me when inline resolution is disabled:
>
> ~~~~~
> $ perf report -s sym,srcline --no-inline --stdio -g none
> 95.21% 0.00% [.] __libc_start_main
>
> __libc_start_main+233 95.21% 0.00% [.] _start
>
> _start+41 46.88% 0.00% [.] main
>
> complex:589 43.96% 0.00% [.] main
>
> random.h:185 38.75% 0.00% [.] hypot
>
> hypot+20 20.83% 0.00% [.] std::generate_canonical<double, 53ul,
> std::linear_congruential_engine<unsigned long, 16807ul, 0ul, 2147483647ul>
> > random.h:143 13.12% 0.00% [.] std::generate_canonical<double, 53ul,
> std::linear_congruential_engine<unsigned long, 16807ul, 0ul, 2147483647ul>
> > random.tcc:3330 4.17% 4.17% [.] __hypot_finite
>
> __hypot_finite+140715545239715 4.17% 4.17% [.]
> std::generate_canonical<double, 53ul,
> std::linear_congruential_engine<unsigned long, 16807ul, 0ul, 2147483647ul>
> > std::generate_canonical<double, 53ul, std::line 4.17% 0.00% [.]
> __hypot_finite
> __hypot_finite+163 4.17% 0.00%
> [.] std::generate_canonical<double, 53ul,
> std::linear_congruential_engine<unsigned long, 16807ul, 0ul, 2147483647ul>
> > random.tcc:3333 2.92% 2.92% [.] std::generate_canonical<double,
> 53ul, std::linear_congruential_engine<unsigned long, 16807ul, 0ul,
> 2147483647ul> > std::generate_canonical<double, 53ul, std::line 2.50%
> 2.50% [.] __hypot_finite
>
> __hypot_finite+140715545239563 2.50% 2.50% [.] __hypot_finite
>
> __hypot_finite+140715545239576 2.50% 2.50% [.]
> std::generate_canonical<double, 53ul,
> std::linear_congruential_engine<unsigned long, 16807ul, 0ul, 2147483647ul>
> > std::generate_canonical<double, 53ul, std::line 2.50% 2.50% [.]
> std::generate_canonical<double, 53ul,
> std::linear_congruential_engine<unsigned long, 16807ul, 0ul, 2147483647ul>
> > std::generate_canonical<double, 53ul, std::line 2.50% 0.00% [.]
> __hypot_finite
> __hypot_finite+11 ~~~~~
>
> Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
> Cc: Namhyung Kim <namhyung@kernel.org>
> Cc: Yao Jin <yao.jin@linux.intel.com>
> Cc: Jiri Olsa <jolsa@redhat.com>
> Signed-off-by: Milian Wolff <milian.wolff@kdab.com>
>
> Note how most of the large offset values are now gone. Most notably,
> we get proper srcline resolution for the random.h and complex headers.
> ---
> tools/perf/util/sort.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
> index 006d10a0dc96..6f3d109078a3 100644
> --- a/tools/perf/util/sort.c
> +++ b/tools/perf/util/sort.c
> @@ -334,7 +334,7 @@ char *hist_entry__get_srcline(struct hist_entry *he)
> if (!map)
> return SRCLINE_UNKNOWN;
>
> - return get_srcline(map->dso, map__rip_2objdump(map, he->ip),
> + return get_srcline(map->dso, map__objdump_2mem(map, he->ip),
> he->ms.sym, true, true);
> }
Sorry, this patch was declined by Nahmyung before, please discard it - I
forgot to do that before resending v6.
Bye
--
Milian Wolff | milian.wolff@kdab.com | Senior Software Engineer
KDAB (Deutschland) GmbH&Co KG, a KDAB Group company
Tel: +49-30-521325470
KDAB - The Qt Experts
next prev parent reply other threads:[~2017-10-19 10:54 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-18 18:53 [PATCH v6 0/6] generate full callchain cursor entries for inlined frames Milian Wolff
2017-10-18 18:53 ` [PATCH v6 1/6] perf report: properly handle branch count in match_chain Milian Wolff
2017-10-18 22:41 ` Andi Kleen
2017-10-19 10:59 ` Milian Wolff
2017-10-19 13:55 ` Andi Kleen
2017-10-19 15:01 ` Namhyung Kim
2017-10-20 10:21 ` Milian Wolff
2017-10-20 11:38 ` Milian Wolff
2017-10-20 13:39 ` Arnaldo Carvalho de Melo
2017-10-23 5:19 ` Namhyung Kim
2017-10-20 15:22 ` Arnaldo Carvalho de Melo
2017-10-20 19:52 ` Milian Wolff
2017-10-25 17:20 ` [tip:perf/core] perf report: Properly handle branch count in match_chain() tip-bot for Milian Wolff
2017-10-18 18:53 ` [PATCH v6 2/6] perf report: cache failed lookups of inlined frames Milian Wolff
2017-10-18 18:53 ` [PATCH v6 3/6] perf report: cache srclines for callchain nodes Milian Wolff
2017-10-18 18:53 ` [PATCH v6 4/6] perf report: use srcline from callchain for hist entries Milian Wolff
2017-10-18 18:53 ` [PATCH v6 5/6] perf util: enable handling of inlined frames by default Milian Wolff
2017-10-18 18:53 ` [PATCH v6 6/6] perf util: use correct IP mapping to find srcline for hist entry Milian Wolff
2017-10-19 10:54 ` Milian Wolff [this message]
2017-10-20 5:15 ` Namhyung Kim
2017-10-24 8:51 ` Milian Wolff
2017-10-25 1:46 ` Namhyung Kim
2017-10-30 20:03 ` Arnaldo Carvalho de Melo
2017-10-30 23:35 ` Namhyung Kim
2017-11-03 14:21 ` [tip:perf/core] perf callchain: Fix double mapping al->addr for children without self period tip-bot for Namhyung Kim
2017-10-18 22:43 ` [PATCH v6 0/6] generate full callchain cursor entries for inlined frames Andi Kleen
2017-10-20 15:43 ` Arnaldo Carvalho de Melo
-- strict thread matches above, loose matches on Subject: below --
2017-10-19 11:38 [PATCH v7 0/5] " Milian Wolff
2017-10-19 11:38 ` [PATCH v7 1/5] perf report: properly handle branch count in match_chain Milian Wolff
2017-10-19 11:42 ` Milian Wolff
2017-10-23 15:15 ` Andi Kleen
2017-10-23 18:39 ` Milian Wolff
2017-10-23 20:39 ` Andi Kleen
2017-10-19 11:38 ` [PATCH v7 2/5] perf report: cache failed lookups of inlined frames Milian Wolff
2017-10-25 17:20 ` [tip:perf/core] perf report: Cache " tip-bot for Milian Wolff
2017-10-19 11:38 ` [PATCH v7 3/5] perf report: cache srclines for callchain nodes Milian Wolff
2017-10-25 17:20 ` [tip:perf/core] perf report: Cache " tip-bot for Milian Wolff
2017-10-19 11:38 ` [PATCH v7 4/5] perf report: use srcline from callchain for hist entries Milian Wolff
2017-10-25 17:21 ` [tip:perf/core] perf report: Use " tip-bot for Milian Wolff
2017-10-19 11:38 ` [PATCH v7 5/5] perf util: enable handling of inlined frames by default Milian Wolff
2017-10-25 17:21 ` [tip:perf/core] perf util: Enable " tip-bot for Milian Wolff
2017-10-20 16:15 ` [PATCH v7 0/5] generate full callchain cursor entries for inlined frames Arnaldo Carvalho de Melo
2017-10-20 20:21 ` Milian Wolff
2017-10-23 14:29 ` Arnaldo Carvalho de Melo
2017-10-23 19:04 ` Milian Wolff
2017-10-23 19:04 ` Arnaldo Carvalho de Melo
2017-10-23 19:39 ` Milian Wolff
2017-10-23 22:43 ` Arnaldo Carvalho de Melo
2017-10-24 13:27 ` Arnaldo Carvalho de Melo
2017-10-25 2:09 ` Namhyung Kim
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=3026429.kO1GvhRXjL@agathebauer \
--to=milian.wolff@kdab.com \
--cc=Linux-kernel@vger.kernel.org \
--cc=acme@kernel.org \
--cc=acme@redhat.com \
--cc=jolsa@kernel.org \
--cc=jolsa@redhat.com \
--cc=linux-perf-users@vger.kernel.org \
--cc=namhyung@kernel.org \
--cc=yao.jin@linux.intel.com \
/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