perf report: Update document of --sort option
Namhyung Kim
maintainerPATCH 1/4 perf report: Update document of --sort option
Description of the memory sort key (used by --mem-mode) was misplaced. Move it under the --sort option so that it can be referenced properly.
--- tools/perf/Documentation/perf-report.txt | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-)
tools/perf/Documentation/perf-report.txt +16 -16
@@ -117,6 +117,22 @@ OPTIONS And default sort keys are changed to comm, dso_from, symbol_from, dso_to and symbol_to, see '--branch-stack'. + If --mem-mode option is used, following sort keys are also available + (incompatible with --branch-stack): + symbol_daddr, dso_daddr, locked, tlb, mem, snoop, dcacheline. + + - symbol_daddr: name of data symbol being executed on at the time of sample + - dso_daddr: name of library or module containing the data being executed + on at the time of sample + - locked: whether the bus was locked at the time of sample + - tlb: type of tlb access for the data at the time of sample + - mem: type of memory access for the data at the time of sample + - snoop: type of snoop (if any) for the data at the time of sample + - dcacheline: the cacheline the data address is on at the time of sample + + And default sort keys are changed to local_weight, mem, sym, dso, + symbol_daddr, dso_daddr, snoop, tlb, locked, see '--mem-mode'. + If the data file has tracepoint event(s), following (dynamic) sort keys are also available: trace, trace_fields, [<event>.]<field>[/raw]
@@ -151,22 +167,6 @@ OPTIONS By default, every sort keys not specified in -F will be appended automatically. - If --mem-mode option is used, following sort keys are also available - (incompatible with --branch-stack): - symbol_daddr, dso_daddr, locked, tlb, mem, snoop, dcacheline. - - - symbol_daddr: name of data symbol being executed on at the time of sample - - dso_daddr: name of library or module containing the data being executed - on at the time of sample - - locked: whether the bus was locked at the time of sample - - tlb: type of tlb access for the data at the time of sample - - mem: type of memory access for the data at the time of sample - - snoop: type of snoop (if any) for the data at the time of sample - - dcacheline: the cacheline the data address is on at the time of sample - - And default sort keys are changed to local_weight, mem, sym, dso, - symbol_daddr, dso_daddr, snoop, tlb, locked, see '--mem-mode'. - -p:: --parent=<regex>:: A regex filter to identify parent. The parent is a caller of this
Signature · 1 line
2.7.0
Namhyung Kim
maintainerPATCH 2/4 perf report: Update document of --percent-limit option
The --percent-limit option was changed to be applied to callchains as well as hist entries recently, but it missed to update the doc.
--- tools/perf/Documentation/perf-report.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
tools/perf/Documentation/perf-report.txt +4 -1
@@ -351,7 +351,10 @@ OPTIONS --percent-limit:: Do not show entries which have an overhead under that percent. - (Default: 0). + (Default: 0). Note that this option also sets percent limit (threshold) + of callchains at once. However the default value of callchain threshold + is different than the default value of hist entries. Please see + --call-graph option for details. --percentage:: Determine how to display the overhead percentage of filtered entries.
Signature · 1 line
2.7.0
tip-bot for Namhyung Kim
merge bot[tip:perf/core] perf report: Update documention of --percent-limit option
perf report: Update documention of --percent-limit option
Commit-ID: 1ba2fc6de4ac1a87e3ece65651795760ea5cf658 Gitweb: http://git.kernel.org/tip/1ba2fc6de4ac1a87e3ece65651795760ea5cf658 Author: Namhyung Kim <[email protected]> AuthorDate: Wed, 3 Feb 2016 23:11:21 +0900 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Wed, 3 Feb 2016 12:24:21 -0300
perf report: Update documention of --percent-limit option
The --percent-limit option was changed to be applied to callchains as well as to hist entries recently, but it missed to update the doc.
--- tools/perf/Documentation/perf-report.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
tools/perf/Documentation/perf-report.txt +4 -1
@@ -351,7 +351,10 @@ OPTIONS --percent-limit:: Do not show entries which have an overhead under that percent. - (Default: 0). + (Default: 0). Note that this option also sets the percent limit (threshold) + of callchains. However the default value of callchain threshold is + different than the default value of hist entries. Please see the + --call-graph option for details. --percentage:: Determine how to display the overhead percentage of filtered entries.
Namhyung Kim
maintainerPATCH 3/4 perf tools: Change default calchain percent limit to 0.05%
In reply to Namhyung KimThe current default limit of 0.5% is (mostly) for 'fractal' mode which calculates the percentage relatively. As we changed the default callchain mode to 'graph', the existing limit is too high IMHO. Normally there're many entries under 0.5% overhead, it'd be supprising that they don't show callchains.
---
changed from 0.005 -> 0.05
tools/perf/Documentation/perf-report.txt | 2 +- tools/perf/builtin-report.c | 2 +- tools/perf/builtin-top.c | 2 +- tools/perf/util/util.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-)
tools/perf/Documentation/perf-report.txt +1 -1
@@ -209,7 +209,7 @@ OPTIONS - none: disable call chain display. threshold is a percentage value which specifies a minimum percent to be - included in the output call graph. Default is 0.5 (%). + included in the output call graph. Default is 0.05 (%). print_limit is only applied when stdio interface is used. It's to limit number of call graph entries in a single hist entry. Note that it needs
tools/perf/builtin-report.c +1 -1
@@ -643,7 +643,7 @@ parse_percent_limit(const struct option *opt, const char *str,return 0 ; } -#define CALLCHAIN_DEFAULT_OPT "graph,0.5,caller,function,percent" +#define CALLCHAIN_DEFAULT_OPT "graph,0.05,caller,function,percent"const char report_callchain_help[] ="Display call graph (stack chain/backtrace):\n\n" CALLCHAIN_REPORT_HELP
tools/perf/builtin-top.c +1 -1
@@ -1086,7 +1086,7 @@ parse_percent_limit(const struct option *opt, const char *arg, } const char top_callchain_help[] = CALLCHAIN_RECORD_HELP CALLCHAIN_REPORT_HELP -"\n\t\t\t\tDefault: fp,graph,0.5,caller,function" ; +"\n\t\t\t\tDefault: fp,graph,0.05,caller,function" ;int cmd_top (int argc,const char **argv,const char *prefix__maybe_unused ) {
tools/perf/util/util.c +1 -1
@@ -20,7 +20,7 @@struct callchain_param callchain_param = { .mode =CHAIN_GRAPH_ABS , - .min_percent =0.5 , + .min_percent =0.05 , .order =ORDER_CALLEE , .key =CCKEY_FUNCTION , .value =CCVAL_PERCENT ,
Signature · 1 line
2.7.0
Namhyung Kim
maintainerPATCH 4/4 perf hists browser: Add 'L' key to change percent limit
In reply to Namhyung KimAdd 'L' key action to change the percent limit applied to both of hist entries and callchains.
--- tools/perf/ui/browsers/hists.c | 55 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+)
tools/perf/ui/browsers/hists.c +55 -0
@@ -2029,6 +2029,42 @@ static void hist_browser__update_nr_entries(struct hist_browser *hb) hb->nr_non_filtered_entries = nr_entries; } +static void hist_browser__update_percent_limit (struct hist_browser *hb, +double percent) +{ +struct hist_entry *he; +struct rb_node *nd =rb_first (&hb->hists->entries); +u64 total =hists__total_period (hb->hists); +u64 min_callchain_hits = total * (percent /100 ); + + hb->min_pcnt = callchain_param.min_percent = percent; + +if (!symbol_conf.use_callchain) +return ; + +while ((nd =hists__filter_entries (nd, hb->min_pcnt)) !=NULL ) { + he = rb_entry(nd, struct hist_entry, rb_node); + +if (callchain_param.mode ==CHAIN_GRAPH_REL ) { + total = he->stat.period; + +if (symbol_conf.cumulate_callchain) + total = he->stat_acc->period; + + min_callchain_hits = total * (percent /100 ); + } + + callchain_param.sort (&he->sorted_chain, he->callchain, + min_callchain_hits, &callchain_param); + +/* force to re-evaluate folding state of callchains */ + he->init_have_children = false; +hist_entry__set_folding (he, false); + + nd =rb_next (nd); + } +} + static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events, const char *helpline, bool left_exits,
@@ -2064,6 +2100,7 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,"E Expand all callchains\n" \"F Toggle percentage of filtered entries\n" \"H Display column headers\n" \ +"L Change percent limit\n" \"m Display context menu\n" \"S Zoom into current Processor Socket\n" \
@@ -2219,6 +2256,24 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events, top->zero = !top->zero; }continue ; +case 'L' : +if (ui_browser__input_window ("Percent Limit" , +"Please enter the value you want to hide entries under that percent." , + buf,"ENTER: OK, ESC: Cancel" , + delay_secs *2 ) ==K_ENTER ) { +char *end; +double new_percent =strtod (buf, &end); + +if (new_percent <0 || new_percent >100 ) { +ui_browser__warning (&browser->b, delay_secs *2 , +"Invalid percent: %.2f" , new_percent); +continue ; + } + +hist_browser__update_percent_limit (browser, new_percent); +hist_browser__reset (browser); + } +continue ;case K_F1 :case 'h' :case '?' :
Signature · 1 line
2.7.0
Re: [PATCH 4/4] perf hists browser: Add 'L' key to change percent limit
Em Wed, Feb 03, 2016 at 11:11:23PM +0900, Namhyung Kim escreveu:
Quoted 2 lines
Add 'L' key action to change the percent limit applied to both of hist entries and callchains.
Thanks a lot, works like a charm!
Applied,
- Arnaldo
Quoted 88 lines
Suggested-by Arnaldo Carvalho de Melo <[email protected]>Signed-off-by Namhyung Kim <[email protected]>--- tools/perf/ui/browsers/hists.c | 55 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+)tools/perf/ui/browsers/hists.c +55
-0@@ -2029,6 +2029,42 @@ static void hist_browser__update_nr_entries(struct hist_browser *hb) hb->nr_non_filtered_entries = nr_entries; } +static void hist_browser__update_percent_limit (struct hist_browser *hb, +double percent) +{ +struct hist_entry *he; +struct rb_node *nd =rb_first (&hb->hists->entries); +u64 total =hists__total_period (hb->hists); +u64 min_callchain_hits = total * (percent /100 ); + + hb->min_pcnt = callchain_param.min_percent = percent; + +if (!symbol_conf.use_callchain) +return ; + +while ((nd =hists__filter_entries (nd, hb->min_pcnt)) !=NULL ) { + he = rb_entry(nd, struct hist_entry, rb_node); + +if (callchain_param.mode ==CHAIN_GRAPH_REL ) { + total = he->stat.period; + +if (symbol_conf.cumulate_callchain) + total = he->stat_acc->period; + + min_callchain_hits = total * (percent /100 ); + } + + callchain_param.sort (&he->sorted_chain, he->callchain, + min_callchain_hits, &callchain_param); + +/* force to re-evaluate folding state of callchains */ + he->init_have_children = false; +hist_entry__set_folding (he, false); + + nd =rb_next (nd); + } +} + static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events, const char *helpline, bool left_exits,@@ -2064,6 +2100,7 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,"E Expand all callchains\n" \"F Toggle percentage of filtered entries\n" \"H Display column headers\n" \ +"L Change percent limit\n" \"m Display context menu\n" \"S Zoom into current Processor Socket\n" \@@ -2219,6 +2256,24 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events, top->zero = !top->zero; }continue ; +case 'L' : +if (ui_browser__input_window ("Percent Limit" , +"Please enter the value you want to hide entries under that percent." , + buf,"ENTER: OK, ESC: Cancel" , + delay_secs *2 ) ==K_ENTER ) { +char *end; +double new_percent =strtod (buf, &end); + +if (new_percent <0 || new_percent >100 ) { +ui_browser__warning (&browser->b, delay_secs *2 , +"Invalid percent: %.2f" , new_percent); +continue ; + } + +hist_browser__update_percent_limit (browser, new_percent); +hist_browser__reset (browser); + } +continue ;case K_F1 :case 'h' :case '?' :Signature · 1 line
2.7.0
tip-bot for Namhyung Kim
merge bot[tip:perf/core] perf hists browser: Add 'L' hotkey to change percent limit
In reply to Namhyung Kimperf hists browser: Add 'L' hotkey to change percent limit
Commit-ID: b62e8dfcda8cb133c062c0e1207afea2476eb7fd Gitweb: http://git.kernel.org/tip/b62e8dfcda8cb133c062c0e1207afea2476eb7fd Author: Namhyung Kim <[email protected]> AuthorDate: Wed, 3 Feb 2016 23:11:23 +0900 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Wed, 3 Feb 2016 12:24:22 -0300
perf hists browser: Add 'L' hotkey to change percent limit
Add 'L' key action to change the percent limit applied to both of hist entries and callchains.
--- tools/perf/ui/browsers/hists.c | 55 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+)
tools/perf/ui/browsers/hists.c +55 -0
@@ -2029,6 +2029,42 @@ static void hist_browser__update_nr_entries(struct hist_browser *hb) hb->nr_non_filtered_entries = nr_entries; } +static void hist_browser__update_percent_limit (struct hist_browser *hb, +double percent) +{ +struct hist_entry *he; +struct rb_node *nd =rb_first (&hb->hists->entries); +u64 total =hists__total_period (hb->hists); +u64 min_callchain_hits = total * (percent /100 ); + + hb->min_pcnt = callchain_param.min_percent = percent; + +if (!symbol_conf.use_callchain) +return ; + +while ((nd =hists__filter_entries (nd, hb->min_pcnt)) !=NULL ) { + he = rb_entry(nd, struct hist_entry, rb_node); + +if (callchain_param.mode ==CHAIN_GRAPH_REL ) { + total = he->stat.period; + +if (symbol_conf.cumulate_callchain) + total = he->stat_acc->period; + + min_callchain_hits = total * (percent /100 ); + } + + callchain_param.sort (&he->sorted_chain, he->callchain, + min_callchain_hits, &callchain_param); + +/* force to re-evaluate folding state of callchains */ + he->init_have_children = false; +hist_entry__set_folding (he, false); + + nd =rb_next (nd); + } +} + static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events, const char *helpline, bool left_exits,
@@ -2064,6 +2100,7 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,"E Expand all callchains\n" \"F Toggle percentage of filtered entries\n" \"H Display column headers\n" \ +"L Change percent limit\n" \"m Display context menu\n" \"S Zoom into current Processor Socket\n" \
@@ -2219,6 +2256,24 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events, top->zero = !top->zero; }continue ; +case 'L' : +if (ui_browser__input_window ("Percent Limit" , +"Please enter the value you want to hide entries under that percent." , + buf,"ENTER: OK, ESC: Cancel" , + delay_secs *2 ) ==K_ENTER ) { +char *end; +double new_percent =strtod (buf, &end); + +if (new_percent <0 || new_percent >100 ) { +ui_browser__warning (&browser->b, delay_secs *2 , +"Invalid percent: %.2f" , new_percent); +continue ; + } + +hist_browser__update_percent_limit (browser, new_percent); +hist_browser__reset (browser); + } +continue ;case K_F1 :case 'h' :case '?' :
tip-bot for Namhyung Kim
merge bot[tip:perf/core] perf report: Update documentation of --sort option
In reply to Namhyung Kimperf report: Update documentation of --sort option
Commit-ID: c6f5f6b662719ded53700deefec7dbc4227c9778 Gitweb: http://git.kernel.org/tip/c6f5f6b662719ded53700deefec7dbc4227c9778 Author: Namhyung Kim <[email protected]> AuthorDate: Wed, 3 Feb 2016 23:11:20 +0900 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Wed, 3 Feb 2016 12:24:21 -0300
perf report: Update documentation of --sort option
The description of the memory sort key (used by --mem-mode) was misplaced. Move it under the --sort option so that it can be referenced properly.
--- tools/perf/Documentation/perf-report.txt | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-)
tools/perf/Documentation/perf-report.txt +16 -16
@@ -117,6 +117,22 @@ OPTIONS And default sort keys are changed to comm, dso_from, symbol_from, dso_to and symbol_to, see '--branch-stack'. + If the --mem-mode option is used, the following sort keys are also available + (incompatible with --branch-stack): + symbol_daddr, dso_daddr, locked, tlb, mem, snoop, dcacheline. + + - symbol_daddr: name of data symbol being executed on at the time of sample + - dso_daddr: name of library or module containing the data being executed + on at the time of the sample + - locked: whether the bus was locked at the time of the sample + - tlb: type of tlb access for the data at the time of the sample + - mem: type of memory access for the data at the time of the sample + - snoop: type of snoop (if any) for the data at the time of the sample + - dcacheline: the cacheline the data address is on at the time of the sample + + And the default sort keys are changed to local_weight, mem, sym, dso, + symbol_daddr, dso_daddr, snoop, tlb, locked, see '--mem-mode'. + If the data file has tracepoint event(s), following (dynamic) sort keys are also available: trace, trace_fields, [<event>.]<field>[/raw]
@@ -151,22 +167,6 @@ OPTIONS By default, every sort keys not specified in -F will be appended automatically. - If --mem-mode option is used, following sort keys are also available - (incompatible with --branch-stack): - symbol_daddr, dso_daddr, locked, tlb, mem, snoop, dcacheline. - - - symbol_daddr: name of data symbol being executed on at the time of sample - - dso_daddr: name of library or module containing the data being executed - on at the time of sample - - locked: whether the bus was locked at the time of sample - - tlb: type of tlb access for the data at the time of sample - - mem: type of memory access for the data at the time of sample - - snoop: type of snoop (if any) for the data at the time of sample - - dcacheline: the cacheline the data address is on at the time of sample - - And default sort keys are changed to local_weight, mem, sym, dso, - symbol_daddr, dso_daddr, snoop, tlb, locked, see '--mem-mode'. - -p:: --parent=<regex>:: A regex filter to identify parent. The parent is a caller of this