perf sort: only insert overhead && overhead_children when no overhead* field given
PATCH 1/1 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.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.
This patch fix this by only insert overhead && overhead_children when no overhead* field given.
--- tools/perf/util/sort.c | 3 +++ 1 file changed, 3 insertions(+)
tools/perf/util/sort.c +3 -0
@@ -2635,6 +2635,9 @@ static char *setup_overhead(char *keys)if (sort__mode ==SORT_MODE__DIFF )return keys; +if (strstr (keys,"overhead" )) +return keys; + keys =prefix_if_not_in ("overhead" , keys);if (symbol_conf.cumulate_callchain)
Signature · 1 line
2.7.4
Quoted 21 lines · On Thu, Jun 01, 2017 at 05:03:21PM +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.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.This patch fix this by only insert overhead &&
overhead_childrenwhen no overhead* field given.Signed-off-by Changbin Du <[email protected]>--- tools/perf/util/sort.c | 3 +++ 1 file changed, 3 insertions(+)tools/perf/util/sort.c +0
-0
tools/perf/util/sort.c static char *setup_overhead(char *keys) · line 2641
Quoted 7 lines
tools/perf/util/sort.c +3
-0@@ -2635,6 +2635,9 @@ static char *setup_overhead(char *keys)if (sort__mode ==SORT_MODE__DIFF )return keys; +if (strstr (keys,"overhead" )) +return keys; + keys =prefix_if_not_in ("overhead" , keys);
hum, you basicaly do what's at begining of prefix_if_not_in function:
static char *prefix_if_not_in(const char *pre, char *str)
{
char *n;
if (!str || strstr(str, pre))
return str;
...could you please provide the example described in changelog?
jirka
Quoted 16 lines · Jiri Olsa
tools/perf/util/sort.c static char *setup_overhead(char *keys) · line 2641
Quoted 12 lines · On Thu, Jun 01, 2017 at 05:03:21PM +0800, [email protected] wrote:
tools/perf/util/sort.c +3
-0@@ -2635,6 +2635,9 @@ static char *setup_overhead(char *keys)if (sort__mode ==SORT_MODE__DIFF )return keys; +if (strstr (keys,"overhead" )) +return keys; + keys =prefix_if_not_in ("overhead" , keys);hum, you basicaly do what's at begining of
prefix_if_not_infunction:
Quoted 8 lines
static char *prefix_if_not_in(const char *pre, char *str)
{ char *n; if (!str || strstr(str, pre)) return str; ...
Thanks, will change it.
Quoted 3 lines
could you please provide the example described in changelog?
Will add example cmdline there, Thanks.
Quoted 1 line
jirka
Signature · 2 lines
Thanks, Changbin Du
Quoted 21 lines · Changbin
Quoted 20 lines · Jiri Olsa
tools/perf/util/sort.c static char *setup_overhead(char *keys) · line 2641
Quoted 12 lines · On Thu, Jun 01, 2017 at 05:03:21PM +0800, [email protected] wrote:
tools/perf/util/sort.c +3
-0@@ -2635,6 +2635,9 @@ static char *setup_overhead(char *keys)if (sort__mode ==SORT_MODE__DIFF )return keys; +if (strstr (keys,"overhead" )) +return keys; + keys =prefix_if_not_in ("overhead" , keys);hum, you basicaly do what's at begining of
prefix_if_not_infunction:static char *prefix_if_not_in(const char *pre, char *str)
{ char *n;
Quoted 6 lines
Quoted 4 lines
if (!str || strstr(str, pre)) return str; ...Thanks, will change it.
Misunderstood your words. This is not equal to prefix_if_not_in.
# 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
....
'Children' should not be here.
Quoted 10 lines
Quoted 3 lines
could you please provide the example described in changelog?
Will add example cmdline there, Thanks.
Quoted 1 line
jirka
Signature · 2 lines
Thanks, Changbin Du
Signature · 2 lines
Thanks, Changbin Du
PATCH v2 1/1 perf sort: only insert overhead && overhead_children when no overhead* field given
In reply to [email protected]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.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.
Quoted 2 lines
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.
---
v2: Add the example in commit message.
--- tools/perf/util/sort.c | 3 +++ 1 file changed, 3 insertions(+)
tools/perf/util/sort.c +3 -0
@@ -2635,6 +2635,9 @@ static char *setup_overhead(char *keys)if (sort__mode ==SORT_MODE__DIFF )return keys; +if (strstr (keys,"overhead" )) +return keys; + keys =prefix_if_not_in ("overhead" , keys);if (symbol_conf.cumulate_callchain)
Signature · 1 line
2.7.4
Hi, Jiri,
what is the status of this one? I didn't get a response of v2. thanks.
Quoted 49 lines · On Fri, Jun 02, 2017 at 12:22:00PM +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.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.Quoted 2 lines
perf record -ag
perf report -s overhead,symSamples: 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_childrenwhen no overhead* field given.Signed-off-by Changbin Du <[email protected]>---
v2: Add the example in commit message.--- tools/perf/util/sort.c | 3 +++ 1 file changed, 3 insertions(+)tools/perf/util/sort.c +3
-0@@ -2635,6 +2635,9 @@ static char *setup_overhead(char *keys)if (sort__mode ==SORT_MODE__DIFF )return keys; +if (strstr (keys,"overhead" )) +return keys; + keys =prefix_if_not_in ("overhead" , keys);if (symbol_conf.cumulate_callchain)Signature · 1 line
2.7.4
Signature · 2 lines
Thanks, Changbin Du
Quoted 45 lines · Changbin
Hi, Jiri,
what is the status of this one? I didn't get a response of v2. thanks.Quoted 40 lines · On Fri, Jun 02, 2017 at 12:22:00PM +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.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.Quoted 2 lines
perf record -ag
perf report -s overhead,symSamples: 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_childrenwhen no overhead* field given.Signed-off-by Changbin Du <[email protected]>---
v2: Add the example in commit message.--- tools/perf/util/sort.c | 3 +++ 1 file changed, 3 insertions(+)tools/perf/util/sort.c +0
-0@@ -2635,6 +2635,9 @@ static char *setup_overhead(char *keys)if (sort__mode ==SORT_MODE__DIFF )return keys;
Quoted 3 lines
tools/perf/util/sort.c static char *setup_overhead(char *keys) · line 2640
Quoted 3 lines
tools/perf/util/sort.c +3
-0+if (strstr (keys,"overhead" )) +return keys; +
ah ok, I think it's right.. basically you're forcing precedence of the -s option over the --children option
you could have your example working by running:
$ perf report -s overhead,sym --no-children
please state something like:
/*
* User already stated overhead within -s option,
* do not mangle with that.
*/
thanks,
jirka
Quoted 13 lines · Jiri Olsa
Quoted 9 lines
tools/perf/util/sort.c static char *setup_overhead(char *keys) · line 2640
Quoted 9 lines
tools/perf/util/sort.c +3
-0@@ -2635,6 +2635,9 @@ static char *setup_overhead(char *keys)if (sort__mode ==SORT_MODE__DIFF )return keys; +if (strstr (keys,"overhead" )) +return keys; +ah ok, I think it's right.. basically you're forcing precedence of the -s option over the --children option
Quoted 3 lines
you could have your example working by running:
$ perf report -s overhead,sym --no-children
Thanks for the knowledge.
Quoted 7 lines
please state something like:
/*
* User already stated overhead within -s option,
* do not mangle with that.
*/
I'll add this as comment around the change for v3.
Quoted 2 lines
thanks,
jirka
Signature · 2 lines
Thanks, Changbin Du
PATCH v3 1/1 perf sort: only insert overhead && overhead_children when no overhead* field given
In reply to [email protected]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.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.
Quoted 2 lines
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.
---
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(+)
tools/perf/util/sort.c +7 -0
@@ -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)
Signature · 1 line
2.7.4
Quoted 17 lines · On Wed, Jul 05, 2017 at 11:35:52AM +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.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.Quoted 2 lines
perf record -ag
perf report -s overhead,symSamples: 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
Quoted 8 lines
....
I intend to sort as 'Self', but actually it sort as 'Children'.
This patch fix this by only insert overhead &&
overhead_childrenwhen no overhead* field given.Signed-off-by Changbin Du <[email protected]>
thanks,
jirka
Quoted 29 lines
---
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(+)tools/perf/util/sort.c +7
-0@@ -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)Signature · 1 line
2.7.4