Messages in this thread | | | Date | Sun, 5 Jan 2014 18:40:33 +0100 | From | Jiri Olsa <> | Subject | Re: [PATCH 12/21] perf tools: Apply percent-limit to cumulative percentage |
| |
On Tue, Dec 24, 2013 at 05:22:18PM +0900, Namhyung Kim wrote: > From: Namhyung Kim <namhyung.kim@lge.com> > > If -g cumulative option is given, it needs to show entries which don't > have self overhead. So apply percent-limit to accumulated overhead > percentage in this case. > > Cc: Arun Sharma <asharma@fb.com> > Cc: Frederic Weisbecker <fweisbec@gmail.com> > Signed-off-by: Namhyung Kim <namhyung@kernel.org> > --- > tools/perf/ui/browsers/hists.c | 34 ++++++++++++++++++++++++++-------- > tools/perf/ui/gtk/hists.c | 11 +++++++++-- > tools/perf/ui/stdio/hist.c | 11 +++++++++-- > 3 files changed, 44 insertions(+), 12 deletions(-) > > diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c > index efa78894f70d..b02e71ecc5fe 100644 > --- a/tools/perf/ui/browsers/hists.c > +++ b/tools/perf/ui/browsers/hists.c > @@ -828,12 +828,19 @@ static unsigned int hist_browser__refresh(struct ui_browser *browser) > > for (nd = browser->top; nd; nd = rb_next(nd)) { > struct hist_entry *h = rb_entry(nd, struct hist_entry, rb_node); > - float percent = h->stat.period * 100.0 / > - hb->hists->stats.total_period; > + float percent; > > if (h->filtered) > continue; > > + if (symbol_conf.cumulate_callchain) { > + percent = h->stat_acc->period * 100.0 / > + hb->hists->stats.total_period; > + } else { > + percent = h->stat.period * 100.0 / > + hb->hists->stats.total_period; > + }
seems like above code (7 lines) should go to function
jirka
> + > if (percent < hb->min_pcnt) > continue; > > @@ -851,13 +858,17 @@ static struct rb_node *hists__filter_entries(struct rb_node *nd, > { > while (nd != NULL) { > struct hist_entry *h = rb_entry(nd, struct hist_entry, rb_node); > - float percent = h->stat.period * 100.0 / > - hists->stats.total_period; > + float percent; > > - if (percent < min_pcnt) > - return NULL; > + if (symbol_conf.cumulate_callchain) { > + percent = h->stat_acc->period * 100.0 / > + hists->stats.total_period; > + } else { > + percent = h->stat.period * 100.0 / > + hists->stats.total_period; > + } > > - if (!h->filtered) > + if (!h->filtered && percent >= min_pcnt) > return nd; > > nd = rb_next(nd); > @@ -872,8 +883,15 @@ static struct rb_node *hists__filter_prev_entries(struct rb_node *nd, > { > while (nd != NULL) { > struct hist_entry *h = rb_entry(nd, struct hist_entry, rb_node); > - float percent = h->stat.period * 100.0 / > + float percent; > + > + if (symbol_conf.cumulate_callchain) { > + percent = h->stat_acc->period * 100.0 / > + hists->stats.total_period; > + } else { > + percent = h->stat.period * 100.0 / > hists->stats.total_period; > + } > > if (!h->filtered && percent >= min_pcnt) > return nd; > diff --git a/tools/perf/ui/gtk/hists.c b/tools/perf/ui/gtk/hists.c > index 70ed0d5e1b94..06ae3342e14f 100644 > --- a/tools/perf/ui/gtk/hists.c > +++ b/tools/perf/ui/gtk/hists.c > @@ -296,12 +296,19 @@ static void perf_gtk__show_hists(GtkWidget *window, struct hists *hists, > for (nd = rb_first(&hists->entries); nd; nd = rb_next(nd)) { > struct hist_entry *h = rb_entry(nd, struct hist_entry, rb_node); > GtkTreeIter iter; > - float percent = h->stat.period * 100.0 / > - hists->stats.total_period; > + float percent; > > if (h->filtered) > continue; > > + if (symbol_conf.cumulate_callchain) { > + percent = h->stat_acc->period * 100.0 / > + hists->stats.total_period; > + } else { > + percent = h->stat.period * 100.0 / > + hists->stats.total_period; > + } > + > if (percent < min_pcnt) > continue; > > diff --git a/tools/perf/ui/stdio/hist.c b/tools/perf/ui/stdio/hist.c > index 4c4986e809d8..7ea8502192b0 100644 > --- a/tools/perf/ui/stdio/hist.c > +++ b/tools/perf/ui/stdio/hist.c > @@ -487,12 +487,19 @@ print_entries: > > for (nd = rb_first(&hists->entries); nd; nd = rb_next(nd)) { > struct hist_entry *h = rb_entry(nd, struct hist_entry, rb_node); > - float percent = h->stat.period * 100.0 / > - hists->stats.total_period; > + float percent; > > if (h->filtered) > continue; > > + if (symbol_conf.cumulate_callchain) { > + percent = h->stat_acc->period * 100.0 / > + hists->stats.total_period; > + } else { > + percent = h->stat.period * 100.0 / > + hists->stats.total_period; > + } > + > if (percent < min_pcnt) > continue; > > -- > 1.7.11.7 >
| |