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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.