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
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