2017-03-13 08:38:35

by Du, Changbin

[permalink] [raw]
Subject: [PATCH] perf sort: only insert overhead && overhead_children when no overhead* field given

From: Changbin Du <[email protected]>

If we always insert 'overhead' and 'overhead_children' as sort keys,
this make it impossible to sort as overhead (which displayed as Self)
first. This patch forbid adding any overhead* field if there is one
already given.

Signed-off-by: Changbin Du <[email protected]>
---
tools/perf/util/sort.c | 7 +++++++
1 file changed, 7 insertions(+)

diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index b6db140..7695b54 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -2543,6 +2543,13 @@ static char *setup_overhead(char *keys)
if (sort__mode == SORT_MODE__DIFF)
return keys;

+ /*
+ * Only insert overhead && overhead_children when
+ * no overhead* field given.
+ */
+ if (strstr(keys, "overhead"))
+ return keys;
+
keys = prefix_if_not_in("overhead", keys);

if (symbol_conf.cumulate_callchain)
--
2.7.4


2017-03-15 02:08:38

by Du, Changbin

[permalink] [raw]
Subject: Re: [PATCH] perf sort: only insert overhead && overhead_children when no overhead* field given

hi, Arnaldo,
Seems you missed this one. In some case, sort by 'Children' first doesn't make
sense, bacause I only care the 'Self' overhead.

btw, does perf have a option that only calculate the *real* callee 'overhead_acc'?
I mean only count the samples to parent when it is called by parent. For
example,

fun1 fun2
foo foo

Then the 'overhead_acc' for fun1 should not include the samples that fun2 call foo.
Thanks.
changbin

On Mon, Mar 13, 2017 at 04:36:01PM +0800, [email protected] wrote:
> From: Changbin Du <[email protected]>
>
> If we always insert 'overhead' and 'overhead_children' as sort keys,
> this make it impossible to sort as overhead (which displayed as Self)
> first. This patch forbid adding any overhead* field if there is one
> already given.
>
> Signed-off-by: Changbin Du <[email protected]>
> ---
> tools/perf/util/sort.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
> index b6db140..7695b54 100644
> --- a/tools/perf/util/sort.c
> +++ b/tools/perf/util/sort.c
> @@ -2543,6 +2543,13 @@ static char *setup_overhead(char *keys)
> if (sort__mode == SORT_MODE__DIFF)
> return keys;
>
> + /*
> + * Only insert overhead && overhead_children when
> + * no overhead* field given.
> + */
> + if (strstr(keys, "overhead"))
> + return keys;
> +
> keys = prefix_if_not_in("overhead", keys);
>
> if (symbol_conf.cumulate_callchain)
> --
> 2.7.4
>

--
Thanks,
Changbin Du


Attachments:
(No filename) (1.46 kB)
signature.asc (473.00 B)
Download all attachments