From: Adrian Hunter <adrian.hunter@intel.com>
To: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>,
Ingo Molnar <mingo@redhat.com>,
linux-kernel@vger.kernel.org, David Ahern <dsahern@gmail.com>,
Frederic Weisbecker <fweisbec@gmail.com>,
Jiri Olsa <jolsa@redhat.com>, Mike Galbraith <efault@gmx.de>,
Namhyung Kim <namhyung@gmail.com>,
Paul Mackerras <paulus@samba.org>,
Stephane Eranian <eranian@google.com>
Subject: [PATCH 18/19] perf record: add an option to force per-cpu mmaps
Date: Fri, 18 Oct 2013 15:29:15 +0300 [thread overview]
Message-ID: <1382099356-4918-19-git-send-email-adrian.hunter@intel.com> (raw)
In-Reply-To: <1382099356-4918-1-git-send-email-adrian.hunter@intel.com>
By default, when tasks are specified (i.e. -p, -t
or -u options) per-thread mmaps are created. Add
an option to override that and force per-cpu mmaps.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
---
tools/perf/Documentation/perf-record.txt | 6 ++++++
tools/perf/builtin-record.c | 2 ++
tools/perf/util/evlist.c | 4 +++-
tools/perf/util/evsel.c | 4 ++--
tools/perf/util/target.h | 1 +
5 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/tools/perf/Documentation/perf-record.txt b/tools/perf/Documentation/perf-record.txt
index f10ab63..2ea6685 100644
--- a/tools/perf/Documentation/perf-record.txt
+++ b/tools/perf/Documentation/perf-record.txt
@@ -189,6 +189,12 @@ abort events and some memory events in precise mode on modern Intel CPUs.
--transaction::
Record transaction flags for transaction related events.
+--force-per-cpu::
+Force the use of per-cpu mmaps. By default, when tasks are specified (i.e. -p,
+-t or -u options) per-thread mmaps are created. This option overrides that and
+forces per-cpu mmaps. A side-effect of that is that inheritance is
+automatically enabled. Add the -i option also to disable inheritance.
+
SEE ALSO
--------
linkperf:perf-stat[1], linkperf:perf-list[1]
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index d269dfa..fb09430 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -890,6 +890,8 @@ const struct option record_options[] = {
"sample by weight (on special events only)"),
OPT_BOOLEAN(0, "transaction", &record.opts.sample_transaction,
"sample transaction flags (special events only)"),
+ OPT_BOOLEAN(0, "force-per-cpu", &record.opts.target.force_per_cpu,
+ "force the use of per-cpu mmaps"),
OPT_END()
};
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index 18784dc..ffcccdd 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -791,7 +791,9 @@ int perf_evlist__create_maps(struct perf_evlist *evlist,
if (evlist->threads == NULL)
return -1;
- if (perf_target__has_task(target))
+ if (target->force_per_cpu)
+ evlist->cpus = cpu_map__new(target->cpu_list);
+ else if (perf_target__has_task(target))
evlist->cpus = cpu_map__dummy_new();
else if (!perf_target__has_cpu(target) && !target->uses_mmap)
evlist->cpus = cpu_map__dummy_new();
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index e09c7e6..f1839b0 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -645,7 +645,7 @@ void perf_evsel__config(struct perf_evsel *evsel,
}
}
- if (perf_target__has_cpu(&opts->target))
+ if (perf_target__has_cpu(&opts->target) || opts->target.force_per_cpu)
perf_evsel__set_sample_bit(evsel, CPU);
if (opts->period)
@@ -653,7 +653,7 @@ void perf_evsel__config(struct perf_evsel *evsel,
if (!perf_missing_features.sample_id_all &&
(opts->sample_time || !opts->no_inherit ||
- perf_target__has_cpu(&opts->target)))
+ perf_target__has_cpu(&opts->target) || opts->target.force_per_cpu))
perf_evsel__set_sample_bit(evsel, TIME);
if (opts->raw_samples) {
diff --git a/tools/perf/util/target.h b/tools/perf/util/target.h
index a4be857..6d7efbd 100644
--- a/tools/perf/util/target.h
+++ b/tools/perf/util/target.h
@@ -12,6 +12,7 @@ struct perf_target {
uid_t uid;
bool system_wide;
bool uses_mmap;
+ bool force_per_cpu;
};
enum perf_target_errno {
--
1.7.11.7
next prev parent reply other threads:[~2013-10-18 12:31 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-18 12:28 [PATCH 00/19] perf tools: fixes and tweaks Adrian Hunter
2013-10-18 12:28 ` [PATCH 01/19] perf evsel: Add missing 'mmap2' from debug print Adrian Hunter
2013-10-23 7:53 ` [tip:perf/core] " tip-bot for Adrian Hunter
2013-10-18 12:28 ` [PATCH 02/19] perf evsel: Add a debug print if perf_event_open fails Adrian Hunter
2013-10-18 12:29 ` [PATCH 03/19] perf record: Improve write_output error message Adrian Hunter
2013-10-20 20:43 ` Jiri Olsa
2013-10-21 6:07 ` Adrian Hunter
2013-10-21 8:48 ` Jiri Olsa
2013-10-23 7:53 ` [tip:perf/core] " tip-bot for Adrian Hunter
2013-10-18 12:29 ` [PATCH 04/19] perf evsel: Add missing decrement in id sample parsing Adrian Hunter
2013-10-20 20:44 ` Jiri Olsa
2013-10-23 7:53 ` [tip:perf/core] " tip-bot for Adrian Hunter
2013-10-18 12:29 ` [PATCH 05/19] perf session: Add missing sample flush for piped events Adrian Hunter
2013-10-20 20:45 ` Jiri Olsa
2013-10-23 7:53 ` [tip:perf/core] " tip-bot for Adrian Hunter
2013-10-18 12:29 ` [PATCH 06/19] perf session: Add missing members to perf_event__attr_swap() Adrian Hunter
2013-10-20 20:47 ` Jiri Olsa
2013-10-23 7:53 ` [tip:perf/core] " tip-bot for Adrian Hunter
2013-10-18 12:29 ` [PATCH 07/19] perf script: Set up output options for in-stream attributes Adrian Hunter
2013-10-18 13:30 ` David Ahern
2013-10-18 14:32 ` Arnaldo Carvalho de Melo
2013-10-22 7:35 ` Adrian Hunter
2013-10-18 12:29 ` [PATCH 08/19] perf inject: Do not repipe attributes to a perf.data file Adrian Hunter
2013-10-18 12:29 ` [PATCH 09/19] perf tools: Fix 32-bit cross build Adrian Hunter
2013-10-20 20:42 ` Jiri Olsa
2013-10-21 5:53 ` Adrian Hunter
2013-10-21 8:46 ` Jiri Olsa
2013-10-21 9:02 ` Adrian Hunter
2013-10-21 14:12 ` Arnaldo Carvalho de Melo
2013-10-21 18:29 ` Adrian Hunter
2013-10-18 12:29 ` [PATCH 10/19] perf evlist: Fix 32-bit build error Adrian Hunter
2013-10-23 7:53 ` [tip:perf/core] " tip-bot for Adrian Hunter
2013-10-18 12:29 ` [PATCH 11/19] perf tools: Fix test_on_exit for 32-bit build Adrian Hunter
2013-10-23 7:53 ` [tip:perf/core] " tip-bot for Adrian Hunter
2013-10-18 12:29 ` [PATCH 12/19] perf tools: Fix bench/numa.c " Adrian Hunter
2013-10-23 7:54 ` [tip:perf/core] " tip-bot for Adrian Hunter
2013-10-18 12:29 ` [PATCH 13/19] perf tools: Fix libunwind build and feature detection " Adrian Hunter
2013-10-20 20:43 ` Jiri Olsa
2013-10-21 14:14 ` Arnaldo Carvalho de Melo
2013-10-22 7:40 ` Adrian Hunter
2013-10-18 12:29 ` [PATCH 14/19] perf evlist: Add a debug print if event buffer mmap fails Adrian Hunter
2013-10-20 20:43 ` Jiri Olsa
2013-10-18 12:29 ` [PATCH 15/19] perf tools: fix perf_evlist__mmap comments Adrian Hunter
2013-10-23 7:54 ` [tip:perf/core] perf evlist: Fix " tip-bot for Adrian Hunter
2013-10-18 12:29 ` [PATCH 16/19] perf tools: factor out duplicated evlist mmap code Adrian Hunter
2013-10-23 7:54 ` [tip:perf/core] perf evlist: Factor out duplicated " tip-bot for Adrian Hunter
2013-10-18 12:29 ` [PATCH 17/19] perf script: print addr by default for BTS Adrian Hunter
2013-10-18 18:20 ` David Ahern
2013-10-23 7:54 ` [tip:perf/core] perf script: Print " tip-bot for Adrian Hunter
2013-10-18 12:29 ` Adrian Hunter [this message]
2013-10-18 12:29 ` [PATCH 19/19] perf tools: allow non-matching sample types Adrian Hunter
2013-10-18 14:25 ` David Ahern
2013-10-18 14:50 ` Adrian Hunter
2013-10-18 15:03 ` David Ahern
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=1382099356-4918-19-git-send-email-adrian.hunter@intel.com \
--to=adrian.hunter@intel.com \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@ghostprotocols.net \
--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@redhat.com \
--cc=namhyung@gmail.com \
--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.