From: Arnaldo Carvalho de Melo <acme@infradead.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org,
Arnaldo Carvalho de Melo <acme@redhat.com>,
Adrian Hunter <adrian.hunter@intel.com>,
David Ahern <dsahern@gmail.com>,
Frederic Weisbecker <fweisbec@gmail.com>,
Jiri Olsa <jolsa@redhat.com>, Mike Galbraith <efault@gmx.de>,
Namhyung Kim <namhyung@kernel.org>,
Paul Mackerras <paulus@samba.org>,
Peter Zijlstra <peterz@infradead.org>,
Stephane Eranian <eranian@google.com>
Subject: [PATCH 23/38] perf report: Move histogram entries collapsing to separate function
Date: Mon, 13 Jan 2014 17:47:24 -0300 [thread overview]
Message-ID: <1389646059-24881-24-git-send-email-acme@infradead.org> (raw)
In-Reply-To: <1389646059-24881-1-git-send-email-acme@infradead.org>
From: Arnaldo Carvalho de Melo <acme@redhat.com>
Further uncluttering the main 'report' function by group related code in
separate function.
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-b594zsbwke8khir13kudwqmj@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/builtin-report.c | 73 ++++++++++++++++++++++++++++-----------------
1 file changed, 45 insertions(+), 28 deletions(-)
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index 03941ad8fc46..cff9465847f2 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -486,13 +486,55 @@ static int report__browse_hists(struct report *rep)
return ret;
}
+static u64 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.
+ */
+ list_for_each_entry(pos, &rep->session->evlist->entries, node)
+ 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;
+
+ list_for_each_entry(pos, &rep->session->evlist->entries, node) {
+ struct hists *hists = &pos->hists;
+
+ if (pos->idx == 0)
+ 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 &&
+ !perf_evsel__is_group_leader(pos)) {
+ struct hists *leader_hists = &pos->leader->hists;
+
+ hists__match(leader_hists, hists);
+ hists__link(leader_hists, hists);
+ }
+ }
+
+ ui_progress__finish();
+
+ return nr_samples;
+}
+
static int __cmd_report(struct report *rep)
{
- int ret = -EINVAL;
+ int ret;
u64 nr_samples;
struct perf_session *session = rep->session;
struct perf_evsel *pos;
- struct ui_progress prog;
struct perf_data_file *file = session->file;
signal(SIGINT, sig_handler);
@@ -530,32 +572,7 @@ static int __cmd_report(struct report *rep)
}
}
- nr_samples = 0;
- list_for_each_entry(pos, &session->evlist->entries, node)
- nr_samples += pos->hists.nr_entries;
-
- ui_progress__init(&prog, nr_samples, "Merging related events...");
-
- nr_samples = 0;
- list_for_each_entry(pos, &session->evlist->entries, node) {
- struct hists *hists = &pos->hists;
-
- if (pos->idx == 0)
- 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 &&
- !perf_evsel__is_group_leader(pos)) {
- struct hists *leader_hists = &pos->leader->hists;
-
- hists__match(leader_hists, hists);
- hists__link(leader_hists, hists);
- }
- }
- ui_progress__finish();
+ nr_samples = report__collapse_hists(rep);
if (session_done())
return 0;
--
1.8.1.4
next prev parent reply other threads:[~2014-01-13 20:51 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-13 20:47 [GIT PULL 00/38] perf/core improvements and fixes Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 01/38] perf stat: Don't show counter information when workload fails Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 02/38] perf evlist: Send the errno in the signal " Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 03/38] perf evlist: Move the SIGUSR1 error reporting logic to prepare_workload Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 04/38] perf record: Remove old evsel_list usage Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 05/38] perf evlist: Move destruction of maps to evlist destructor Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 06/38] perf evlist: Close fds on destructor Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 07/38] perf evlist: Auto unmap " Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 08/38] perf tests: Fixup leak on error path in parse events test Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 09/38] perf stat: Remove misplaced __maybe_unused Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 10/38] perf tools: Move arch setup into seprate Makefile Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 11/38] perf tests: Fix installation tests path setup Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 12/38] tools lib traceevent: Replace tabs with spaces for all non-commands statements Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 13/38] tools lib traceevent: Shut up plugins make message Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 14/38] perf header: Pack 'struct perf_session_env' Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 15/38] perf trace: Pack 'struct trace' Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 16/38] perf tools: Automate setup of FEATURE_CHECK_(C|LD)FLAGS-all variables Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 17/38] perf machine: Fix id_hdr_size initialization Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 18/38] perf tools: Make perf_event__synthesize_mmap_events global Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 19/38] perf stat: Fix --delay option in man page Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 20/38] tools perf: Comment typo fix Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 21/38] perf report: Move logic to warn about kptr_restrict'ed kernels to separate function Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 22/38] perf report: Move hist browser selection code " Arnaldo Carvalho de Melo
2014-01-13 20:47 ` Arnaldo Carvalho de Melo [this message]
2014-01-13 20:47 ` [PATCH 24/38] perf evlist: Introduce evlist__for_each() & friends Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 25/38] tools include: Move perf's linux/compiler.h to a generic place Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 26/38] tools include: Define likely/unlikely in linux/compiler.h Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 27/38] tools include: Move perf's bug.h to a generic place Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 28/38] perf tools: Include tools/lib/api/ in MANIFEST Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 29/38] perf tools: Add test for building detached source tarballs Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 30/38] perf tools: Use the DWARF unwind info only if loaded Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 31/38] perf record: Add --initial-delay option Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 32/38] tools include: Include <linux/compiler.h> from asm/bug.h Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 33/38] perf tools: Generalize percent_color_snprintf() Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 34/38] perf diff: Color the Delta column Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 35/38] perf diff: Color the Ratio column Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 36/38] perf diff: Color the Weighted Diff column Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 37/38] perf probe: Fix build when DWARF support libraries not present Arnaldo Carvalho de Melo
2014-01-13 20:47 ` [PATCH 38/38] perf tools: Remove unused test-volatile-register-var.c Arnaldo Carvalho de Melo
2014-01-14 13:41 ` [GIT PULL 00/38] perf/core improvements and fixes Ingo Molnar
2014-01-14 14:03 ` Arnaldo Carvalho de Melo
2014-01-14 16:24 ` Ingo Molnar
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=1389646059-24881-24-git-send-email-acme@infradead.org \
--to=acme@infradead.org \
--cc=acme@redhat.com \
--cc=adrian.hunter@intel.com \
--cc=dsahern@gmail.com \
--cc=efault@gmx.de \
--cc=eranian@google.com \
--cc=fweisbec@gmail.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=paulus@samba.org \
--cc=peterz@infradead.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 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).