From: Jiri Olsa <jolsa@redhat.com>
To: Greg Price <price@mit.edu>
Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>,
linux-kernel@vger.kernel.org,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Paul Mackerras <paulus@samba.org>, Ingo Molnar <mingo@redhat.com>,
David Ahern <dsahern@gmail.com>
Subject: Re: [PATCH] perf report: Add option to collapse undesired parts of call graph
Date: Sun, 23 Jun 2013 23:53:27 +0200 [thread overview]
Message-ID: <20130623215327.GA995@krava.redhat.com> (raw)
In-Reply-To: <20130623031720.GW22203@biohazard-cafe.mit.edu>
On Sat, Jun 22, 2013 at 11:17:20PM -0400, Greg Price wrote:
> For example, in an application with an expensive function
> implemented with deeply nested recursive calls, the default
> call-graph presentation is dominated by the different callchains
> within that function. By treating the function as a black box,
> we can collect the callchains leading into the function and
> compactly identify what to blame for expensive calls.
>
> For example, in this report the callers of garbage_collect() are
> scattered across the tree:
> $ perf report -d ruby 2>- | grep -m10 ^[^#]*[a-z]
> 22.03% ruby [.] gc_mark
> --- gc_mark
> |--59.40%-- mark_keyvalue
> | st_foreach
> | gc_mark_children
> | |--99.75%-- rb_gc_mark
> | | rb_vm_mark
> | | gc_mark_children
> | | gc_marks
> | | |--99.00%-- garbage_collect
>
> If we make garbage_collect() a black box, its callers are coalesced:
> $ perf report --blackbox garbage_collect -d ruby 2>- | grep -m10 ^[^#]*[a-z]
> 72.92% ruby [.] garbage_collect
> --- garbage_collect
> vm_xmalloc
> |--47.08%-- ruby_xmalloc
> | st_insert2
> | rb_hash_aset
> | |--98.45%-- features_index_add
> | | rb_provide_feature
> | | rb_require_safe
> | | vm_call_method
Seems useful, sort of oposite to parent option (-p)
few comments below
SNIP
> * Special case: if there's an argument left then assume that
> diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
> index 67bdb9f..abec83d 100644
> --- a/tools/perf/builtin-top.c
> +++ b/tools/perf/builtin-top.c
> @@ -775,8 +775,7 @@ static void perf_event__process_sample(struct perf_tool *tool,
> sample->callchain) {
> err = machine__resolve_callchain(machine, evsel,
> al.thread, sample,
> - &parent);
> -
> + &parent, NULL);
> if (err)
> return;
> }
Any reason why not add this for top?
> diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
> index b2ecad6..a14489c 100644
> --- a/tools/perf/util/machine.c
> +++ b/tools/perf/util/machine.c
> @@ -11,6 +11,10 @@
> #include <stdbool.h>
> #include "unwind.h"
>
> +regex_t blackbox_regex;
> +const char *blackbox_pattern;
> +int have_blackbox = 0;
util/sort.c mich be better place for this
It could also make sense to allow sorting on this
the same way as we do for '-s parent' and report only
'[other]' and 'blackbox' entries.
Also I dont like the 'blackbox' option name, it should
complement the parent option somehow.. but no idea ;-)
I tested this on separate example and numbers seem ok.
jirka
next prev parent reply other threads:[~2013-06-23 21:53 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-07 7:30 [PATCH] perf report: Add option to collapse undesired parts of call graph Greg Price
2013-01-11 5:27 ` Arnaldo Carvalho de Melo
2013-02-25 4:28 ` Greg Price
2013-06-23 3:17 ` Greg Price
2013-06-23 21:53 ` Jiri Olsa [this message]
2013-06-24 8:32 ` Ingo Molnar
2013-06-24 23:14 ` Greg Price
2013-06-25 7:47 ` Ingo Molnar
2013-06-25 8:01 ` Namhyung Kim
2013-06-26 22:41 ` Greg Price
2013-06-24 22:50 ` Greg Price
2013-06-26 1:28 ` Namhyung Kim
2013-06-26 22:25 ` Greg Price
2013-06-27 4:58 ` Namhyung Kim
2013-07-01 14:05 ` Greg Price
2013-07-01 14:08 ` [PATCH] perf report: Fix bug in case "--no-call-graph -p foo" Greg Price
-- strict thread matches above, loose matches on Subject: below --
2013-07-01 14:28 [PATCH v2] perf report/top: Add option to collapse undesired parts of call graph Greg Price
2013-07-07 13:13 ` Jiri Olsa
2013-07-08 11:57 ` Greg Price
2013-07-08 16:24 ` Jiri Olsa
2013-07-08 16:47 ` Arnaldo Carvalho de Melo
2013-07-19 7:50 ` [tip:perf/core] " tip-bot for Greg Price
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=20130623215327.GA995@krava.redhat.com \
--to=jolsa@redhat.com \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@ghostprotocols.net \
--cc=dsahern@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=paulus@samba.org \
--cc=price@mit.edu \
/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