From: tip-bot for Namhyung Kim <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, hpa@zytor.com, mingo@kernel.org,
jolsa@kernel.org, tglx@linutronix.de, namhyung@kernel.org
Subject: [tip:perf/core] perf report: Count number of entries separately
Date: Fri, 25 Apr 2014 06:13:20 -0700 [thread overview]
Message-ID: <tip-58c311da9cec97d7a665156a726bd1653384c65c@git.kernel.org> (raw)
In-Reply-To: <1398327843-31845-2-git-send-email-namhyung@kernel.org>
Commit-ID: 58c311da9cec97d7a665156a726bd1653384c65c
Gitweb: http://git.kernel.org/tip/58c311da9cec97d7a665156a726bd1653384c65c
Author: Namhyung Kim <namhyung@kernel.org>
AuthorDate: Tue, 22 Apr 2014 09:47:25 +0900
Committer: Jiri Olsa <jolsa@kernel.org>
CommitDate: Thu, 24 Apr 2014 16:29:20 +0200
perf report: Count number of entries separately
The hists->nr_entries is counted in multiple places so that they can
confuse readers of the code. This is a preparation of later change
and do not intend any functional difference.
Note that report__collapse_hists() now changed to return nothing since
its return value (nr_samples) is only for checking if there's any data
in the input file and this can be acheived by checking ->nr_entries.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Link: http://lkml.kernel.org/r/1398327843-31845-2-git-send-email-namhyung@kernel.org
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
tools/perf/builtin-report.c | 42 ++++++++++++++++++++++--------------------
1 file changed, 22 insertions(+), 20 deletions(-)
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index 76e2bb6..aed5203 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -57,6 +57,7 @@ struct report {
const char *cpu_list;
const char *symbol_filter_str;
float min_percent;
+ u64 nr_entries;
DECLARE_BITMAP(cpu_bitmap, MAX_NR_CPUS);
};
@@ -75,6 +76,17 @@ static int report__config(const char *var, const char *value, void *cb)
return perf_default_config(var, value, cb);
}
+static void report__inc_stats(struct report *rep, struct hist_entry *he)
+{
+ /*
+ * The @he is either of a newly created one or an existing one
+ * merging current sample. We only want to count a new one so
+ * checking ->nr_events being 1.
+ */
+ if (he->stat.nr_events == 1)
+ rep->nr_entries++;
+}
+
static int report__add_mem_hist_entry(struct report *rep, struct addr_location *al,
struct perf_sample *sample, struct perf_evsel *evsel)
{
@@ -121,6 +133,8 @@ static int report__add_mem_hist_entry(struct report *rep, struct addr_location *
goto out;
}
+ report__inc_stats(rep, he);
+
evsel->hists.stats.total_period += cost;
hists__inc_nr_events(&evsel->hists, PERF_RECORD_SAMPLE);
if (!he->filtered)
@@ -176,6 +190,8 @@ static int report__add_branch_hist_entry(struct report *rep, struct addr_locatio
goto out;
}
+ report__inc_stats(rep, he);
+
evsel->hists.stats.total_period += 1;
hists__inc_nr_events(&evsel->hists, PERF_RECORD_SAMPLE);
if (!he->filtered)
@@ -212,6 +228,8 @@ static int report__add_hist_entry(struct report *rep, struct perf_evsel *evsel,
if (ui__has_annotation())
err = hist_entry__inc_addr_samples(he, evsel->idx, al->addr);
+ report__inc_stats(rep, he);
+
evsel->hists.stats.total_period += sample->period;
if (!he->filtered)
evsel->hists.stats.nr_non_filtered_samples++;
@@ -486,24 +504,12 @@ static int report__browse_hists(struct report *rep)
return ret;
}
-static u64 report__collapse_hists(struct report *rep)
+static void report__collapse_hists(struct report *rep)
{
struct ui_progress prog;
struct perf_evsel *pos;
- u64 nr_samples = 0;
- /*
- * Count number of histogram entries to use when showing progress,
- * reusing nr_samples variable.
- */
- evlist__for_each(rep->session->evlist, pos)
- nr_samples += pos->hists.nr_entries;
- ui_progress__init(&prog, nr_samples, "Merging related events...");
- /*
- * Count total number of samples, will be used to check if this
- * session had any.
- */
- nr_samples = 0;
+ ui_progress__init(&prog, rep->nr_entries, "Merging related events...");
evlist__for_each(rep->session->evlist, pos) {
struct hists *hists = &pos->hists;
@@ -512,7 +518,6 @@ static u64 report__collapse_hists(struct report *rep)
hists->symbol_filter_str = rep->symbol_filter_str;
hists__collapse_resort(hists, &prog);
- nr_samples += hists->stats.nr_events[PERF_RECORD_SAMPLE];
/* Non-group events are considered as leader */
if (symbol_conf.event_group &&
@@ -525,14 +530,11 @@ static u64 report__collapse_hists(struct report *rep)
}
ui_progress__finish();
-
- return nr_samples;
}
static int __cmd_report(struct report *rep)
{
int ret;
- u64 nr_samples;
struct perf_session *session = rep->session;
struct perf_evsel *pos;
struct perf_data_file *file = session->file;
@@ -572,12 +574,12 @@ static int __cmd_report(struct report *rep)
}
}
- nr_samples = report__collapse_hists(rep);
+ report__collapse_hists(rep);
if (session_done())
return 0;
- if (nr_samples == 0) {
+ if (rep->nr_entries == 0) {
ui__error("The %s file has no samples!\n", file->path);
return 0;
}
next prev parent reply other threads:[~2014-04-25 13:13 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-24 8:23 [PATCHSET 00/11] perf tools: Fixup for the --percentage change (v3) Namhyung Kim
2014-04-24 8:23 ` [PATCH 01/11] perf report: Count number of entries separately Namhyung Kim
2014-04-25 13:13 ` tip-bot for Namhyung Kim [this message]
2014-04-24 8:23 ` [PATCH 02/11] perf hists: Rename hists__inc_stats() Namhyung Kim
2014-04-25 13:13 ` [tip:perf/core] " tip-bot for Namhyung Kim
2014-04-24 8:23 ` [PATCH 03/11] perf hists: Move column length calculation out of hists__inc_stats() Namhyung Kim
2014-04-25 13:13 ` [tip:perf/core] " tip-bot for Namhyung Kim
2014-04-24 8:23 ` [PATCH 04/11] perf hists: Add a couple of hists stat helper functions Namhyung Kim
2014-04-24 9:40 ` Jiri Olsa
2014-04-24 12:57 ` Namhyung Kim
2014-04-24 13:12 ` Jiri Olsa
2014-04-24 13:46 ` Namhyung Kim
2014-04-25 13:13 ` [tip:perf/core] " tip-bot for Namhyung Kim
2014-04-24 8:23 ` [PATCH 05/11] perf hists: Collapse expanded callchains after filter is applied Namhyung Kim
2014-04-25 13:14 ` [tip:perf/core] " tip-bot for Namhyung Kim
2014-04-24 8:23 ` [PATCH 06/11] perf tools: Account entry stats when it's added to the output tree Namhyung Kim
2014-04-25 13:14 ` [tip:perf/core] perf tools: Account entry stats when it' s " tip-bot for Namhyung Kim
2014-04-24 8:23 ` [PATCH 07/11] perf hists: Add missing update on filtered stats in hists__decay_entries() Namhyung Kim
2014-04-25 13:14 ` [tip:perf/core] " tip-bot for Namhyung Kim
2014-04-24 8:24 ` [PATCH 08/11] perf ui/tui: Fix off-by-one in hist_browser__update_nr_entries() Namhyung Kim
2014-04-25 13:14 ` [tip:perf/core] " tip-bot for Namhyung Kim
2014-04-24 8:24 ` [PATCH 09/11] perf ui/tui: Rename hist_browser__update_nr_entries() Namhyung Kim
2014-04-25 13:14 ` [tip:perf/core] " tip-bot for Namhyung Kim
2014-04-24 8:24 ` [PATCH 10/11] perf top/tui: Update nr_entries properly after a filter is applied Namhyung Kim
2014-04-25 13:15 ` [tip:perf/core] " tip-bot for Namhyung Kim
2014-04-24 8:24 ` [PATCH 11/11] perf hists/tui: Count callchain rows separately Namhyung Kim
2014-04-25 13:15 ` [tip:perf/core] " tip-bot for Namhyung Kim
2014-04-24 11:34 ` [PATCHSET 00/11] perf tools: Fixup for the --percentage change (v3) Jiri Olsa
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=tip-58c311da9cec97d7a665156a726bd1653384c65c@git.kernel.org \
--to=tipbot@zytor.com \
--cc=hpa@zytor.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=tglx@linutronix.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).