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

From: changbin . du
Date: Tue Jul 04 2017 - 23:41:16 EST


From: Changbin Du <changbin.du@xxxxxxxxx>

If we always insert 'overhead' and 'overhead_children' as sort keys,
this make it impossible to sort as overhead (which displayed as Self)
first.Ths will be a problem if the data is collected with call-graph
enabled. Then we never can sort the result as self-overhead on this
data. And sometimes the data is hard to collect.

> perf record -ag
> perf report -s overhead,sym

Samples: 7K of event 'cycles', Event count (approx.): 865138253
Children Self Symbol
+ 26.41% 0.00% [k] verify_cpu
+ 26.37% 0.04% [k] cpu_startup_entry
+ 25.93% 0.27% [k] do_idle
+ 19.88% 0.00% [k] start_secondary
....

I intend to sort as 'Self', but actually it sort as 'Children'.

This patch fix this by only insert overhead && overhead_children
when no overhead* field given.

Signed-off-by: Changbin Du <changbin.du@xxxxxxxxx>
---
v3: Add comment in code from Jiri
v2: Add the example in commit message.

---
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 8b327c9..9e087fb 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -2635,6 +2635,13 @@ static char *setup_overhead(char *keys)
if (sort__mode == SORT_MODE__DIFF)
return keys;

+ /**
+ * User already stated overhead within -s option,
+ * do not mangle with that.
+ */
+ if (strstr(keys, "overhead"))
+ return keys;
+
keys = prefix_if_not_in("overhead", keys);

if (symbol_conf.cumulate_callchain)
--
2.7.4