From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
To: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>,
Ingo Molnar <mingo@kernel.org>, Paul Mackerras <paulus@samba.org>,
Namhyung Kim <namhyung.kim@lge.com>,
LKML <linux-kernel@vger.kernel.org>, Jiri Olsa <jolsa@redhat.com>,
David Ahern <dsahern@gmail.com>, Andi Kleen <andi@firstfloor.org>
Subject: Re: [PATCH 07/13] perf hists: Add support for showing relative percentage
Date: Fri, 7 Mar 2014 11:37:07 -0300 [thread overview]
Message-ID: <20140307143707.GC3153@ghostprotocols.net> (raw)
In-Reply-To: <1393809254-4480-8-git-send-email-namhyung@kernel.org>
Em Mon, Mar 03, 2014 at 10:14:08AM +0900, Namhyung Kim escreveu:
> When filtering by thread, dso or symbol on TUI it also update total
> period so that the output shows different result than no filter - the
> percentage changed to relative to filtered entries only. Sometimes
> this is not desired since users might expect same results with filter.
>
> So new filtered_* fields to hists->stats to count them separately.
> They'll be controlled/used by user later.
>
> Acked-by: Jiri Olsa <jolsa@redhat.com>
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> ---
> tools/perf/builtin-report.c | 6 ++++++
> tools/perf/util/hist.c | 19 +++++++++++++++----
> tools/perf/util/hist.h | 2 ++
> 3 files changed, 23 insertions(+), 4 deletions(-)
>
> diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
> index 5f7f1a332186..3f8478603d51 100644
> --- a/tools/perf/builtin-report.c
> +++ b/tools/perf/builtin-report.c
> @@ -121,6 +121,8 @@ static int report__add_mem_hist_entry(struct report *rep, struct addr_location *
>
> evsel->hists.stats.total_period += cost;
> hists__inc_nr_events(&evsel->hists, PERF_RECORD_SAMPLE);
> + if (!he->filtered)
> + evsel->hists.stats.nr_filtered_samples++;
Huh? I read the above as "if not filtered, increment the number of
filtered samples", isn't this reversed?
I.e. I understand "filtered" as entries that the filter applied to, so
will not be considered, and you use this meaning for he->filtered, but
not for stats_nr_filtered_samples, right?
- Arnaldo
> err = hist_entry__append_callchain(he, sample);
> out:
> return err;
> @@ -170,6 +172,8 @@ static int report__add_branch_hist_entry(struct report *rep, struct addr_locatio
>
> evsel->hists.stats.total_period += 1;
> hists__inc_nr_events(&evsel->hists, PERF_RECORD_SAMPLE);
> + if (!he->filtered)
> + evsel->hists.stats.nr_filtered_samples++;
> } else
> goto out;
> }
> @@ -201,6 +205,8 @@ static int report__add_hist_entry(struct report *rep, struct perf_evsel *evsel,
>
> err = hist_entry__inc_addr_samples(he, evsel->idx, al->addr);
> evsel->hists.stats.total_period += sample->period;
> + if (!he->filtered)
> + evsel->hists.stats.nr_filtered_samples++;
> hists__inc_nr_events(&evsel->hists, PERF_RECORD_SAMPLE);
> out:
> return err;
> diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
> index d0c40897c955..743947d891bd 100644
> --- a/tools/perf/util/hist.c
> +++ b/tools/perf/util/hist.c
> @@ -675,8 +675,8 @@ void hists__output_resort(struct hists *hists)
> next = rb_first(root);
> hists->entries = RB_ROOT;
>
> - hists->nr_entries = 0;
> - hists->stats.total_period = 0;
> + hists->nr_entries = hists->nr_filtered_entries = 0;
> + hists->stats.total_period = hists->stats.total_filtered_period = 0;
> hists__reset_col_len(hists);
>
> while (next) {
> @@ -695,12 +695,17 @@ static void hists__remove_entry_filter(struct hists *hists, struct hist_entry *h
> if (h->filtered)
> return;
>
> - ++hists->nr_entries;
> - if (h->ms.unfolded)
> + hists->nr_entries++;
> + hists->nr_filtered_entries++;
> + if (h->ms.unfolded) {
> hists->nr_entries += h->nr_rows;
> + hists->nr_filtered_entries += h->nr_rows;
> + }
> h->row_offset = 0;
> hists->stats.total_period += h->stat.period;
> + hists->stats.total_filtered_period += h->stat.period;
> hists->stats.nr_events[PERF_RECORD_SAMPLE] += h->stat.nr_events;
> + hists->stats.nr_filtered_samples += h->stat.nr_events;
>
> hists__calc_col_len(hists, h);
> }
> @@ -723,7 +728,9 @@ void hists__filter_by_dso(struct hists *hists)
> struct rb_node *nd;
>
> hists->nr_entries = hists->stats.total_period = 0;
> + hists->nr_filtered_entries = hists->stats.total_filtered_period = 0;
> hists->stats.nr_events[PERF_RECORD_SAMPLE] = 0;
> + hists->stats.nr_filtered_samples = 0;
> hists__reset_col_len(hists);
>
> for (nd = rb_first(&hists->entries); nd; nd = rb_next(nd)) {
> @@ -756,7 +763,9 @@ void hists__filter_by_thread(struct hists *hists)
> struct rb_node *nd;
>
> hists->nr_entries = hists->stats.total_period = 0;
> + hists->nr_filtered_entries = hists->stats.total_filtered_period = 0;
> hists->stats.nr_events[PERF_RECORD_SAMPLE] = 0;
> + hists->stats.nr_filtered_samples = 0;
> hists__reset_col_len(hists);
>
> for (nd = rb_first(&hists->entries); nd; nd = rb_next(nd)) {
> @@ -787,7 +796,9 @@ void hists__filter_by_symbol(struct hists *hists)
> struct rb_node *nd;
>
> hists->nr_entries = hists->stats.total_period = 0;
> + hists->nr_filtered_entries = hists->stats.total_filtered_period = 0;
> hists->stats.nr_events[PERF_RECORD_SAMPLE] = 0;
> + hists->stats.nr_filtered_samples = 0;
> hists__reset_col_len(hists);
>
> for (nd = rb_first(&hists->entries); nd; nd = rb_next(nd)) {
> diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
> index 5ccc70057934..115d2e7f0a15 100644
> --- a/tools/perf/util/hist.h
> +++ b/tools/perf/util/hist.h
> @@ -41,6 +41,7 @@ struct events_stats {
> u64 total_lost;
> u64 total_invalid_chains;
> u32 nr_events[PERF_RECORD_HEADER_MAX];
> + u32 nr_filtered_samples;
> u32 nr_lost_warned;
> u32 nr_unknown_events;
> u32 nr_invalid_chains;
> @@ -84,6 +85,7 @@ struct hists {
> struct rb_root entries;
> struct rb_root entries_collapsed;
> u64 nr_entries;
> + u64 nr_filtered_entries;
> const struct thread *thread_filter;
> const struct dso *dso_filter;
> const char *uid_filter_str;
> --
> 1.7.11.7
next prev parent reply other threads:[~2014-03-07 14:37 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-03 1:14 [PATCHSET 00/13] perf tools: Update on filtered entries' percentage output (v6) Namhyung Kim
2014-03-03 1:14 ` [PATCH 01/13] perf ui/stdio: Fix invalid output on event group report Namhyung Kim
2014-03-18 8:29 ` [tip:perf/core] " tip-bot for Namhyung Kim
2014-03-03 1:14 ` [PATCH 02/13] perf ui/gtk: Reuse generic __hpp__fmt() code Namhyung Kim
2014-03-03 13:13 ` Pekka Enberg
2014-03-18 8:29 ` [tip:perf/core] " tip-bot for Namhyung Kim
2014-03-03 1:14 ` [PATCH 03/13] perf ui/hists: Pass struct hpp to print functions Namhyung Kim
2014-03-18 8:30 ` [tip:perf/core] " tip-bot for Namhyung Kim
2014-03-03 1:14 ` [PATCH 04/13] perf ui/tui: Reuse generic __hpp__fmt() code Namhyung Kim
2014-03-18 8:30 ` [tip:perf/core] " tip-bot for Namhyung Kim
2014-03-03 1:14 ` [PATCH 05/13] perf tools: Pass evsel to hpp->header/width functions explicitly Namhyung Kim
2014-03-03 1:14 ` [PATCH 06/13] perf tools: Count periods of filtered entries separately Namhyung Kim
2014-03-03 1:14 ` [PATCH 07/13] perf hists: Add support for showing relative percentage Namhyung Kim
2014-03-07 14:37 ` Arnaldo Carvalho de Melo [this message]
2014-03-07 14:39 ` PVT " Arnaldo Carvalho de Melo
2014-03-03 1:14 ` [PATCH 08/13] perf report: Add --percentage option Namhyung Kim
2014-03-03 1:14 ` [PATCH 09/13] perf top: " Namhyung Kim
2014-03-03 1:14 ` [PATCH 10/13] perf diff: " Namhyung Kim
2014-03-03 1:14 ` [PATCH 11/13] perf tools: Add hist.percentage config option Namhyung Kim
2014-03-03 1:14 ` [PATCH 12/13] perf ui/tui: Add 'F' hotkey to toggle percentage output Namhyung Kim
2014-03-03 1:14 ` [PATCH 13/13] perf tools: Show absolute percentage by default Namhyung Kim
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140307143707.GC3153@ghostprotocols.net \
--to=acme@ghostprotocols.net \
--cc=a.p.zijlstra@chello.nl \
--cc=andi@firstfloor.org \
--cc=dsahern@gmail.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung.kim@lge.com \
--cc=namhyung@kernel.org \
--cc=paulus@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.