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 V3 06/11] perf record: Add an option to force per-cpu mmaps
Date: Fri, 1 Nov 2013 15:51:34 +0200 [thread overview]
Message-ID: <1383313899-15987-7-git-send-email-adrian.hunter@intel.com> (raw)
In-Reply-To: <1383313899-15987-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 ab8d15e..4c0657f 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -860,6 +860,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 1c173cc..b3183d5 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -805,7 +805,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-11-01 13:53 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-01 13:51 [PATCH V3 00/11] perf tools: fixes and tweaks Adrian Hunter
2013-11-01 13:51 ` [PATCH V3 01/11] perf evsel: Add a debug print if perf_event_open fails Adrian Hunter
2013-11-04 20:20 ` [tip:perf/core] " tip-bot for Adrian Hunter
2013-11-01 13:51 ` [PATCH V3 02/11] perf script: Set up output options for in-stream attributes Adrian Hunter
2013-11-04 20:20 ` [tip:perf/core] " tip-bot for Adrian Hunter
2013-11-01 13:51 ` [PATCH V3 03/11] perf tools: Fix 32-bit cross build Adrian Hunter
2013-11-04 20:20 ` [tip:perf/core] " tip-bot for Adrian Hunter
2013-11-01 13:51 ` [PATCH V3 04/11] perf tools: Fix libunwind build and feature detection for 32-bit build Adrian Hunter
2013-11-04 20:20 ` [tip:perf/core] " tip-bot for Adrian Hunter
2013-11-01 13:51 ` [PATCH V3 05/11] perf evlist: Add a debug print if event buffer mmap fails Adrian Hunter
2013-11-04 20:20 ` [tip:perf/core] " tip-bot for Adrian Hunter
2013-11-01 13:51 ` Adrian Hunter [this message]
[not found] ` <20131104152942.GA4004@krava.brq.redhat.com>
2013-11-05 8:28 ` [PATCH V3 06/11] perf record: Add an option to force per-cpu mmaps Adrian Hunter
2013-11-05 9:42 ` Jiri Olsa
2013-11-05 13:09 ` Adrian Hunter
2013-11-05 13:30 ` Jiri Olsa
2013-11-05 14:25 ` Arnaldo Carvalho de Melo
2013-11-05 17:31 ` Arnaldo Carvalho de Melo
2013-11-08 7:57 ` Adrian Hunter
2013-11-08 8:40 ` Peter Zijlstra
2013-11-08 14:13 ` Arnaldo Carvalho de Melo
2013-11-11 12:06 ` Ingo Molnar
2013-11-13 2:48 ` Sukadev Bhattiprolu
2013-11-15 7:25 ` [tip:perf/urgent] " tip-bot for Adrian Hunter
2013-11-01 13:51 ` [PATCH V3 07/11] perf evsel: Always use perf_evsel__set_sample_bit() Adrian Hunter
2013-11-04 20:21 ` [tip:perf/core] perf evsel: Always use perf_evsel__set_sample_bit () tip-bot for Adrian Hunter
2013-11-01 13:51 ` [PATCH V3 08/11] perf evsel: Add missing overflow check Adrian Hunter
2013-11-04 20:21 ` [tip:perf/core] perf evsel: Add missing overflow check for TRANSACTION tip-bot for Adrian Hunter
2013-11-01 13:51 ` [PATCH V3 09/11] perf test: Update "sample parsing" test for PERF_SAMPLE_TRANSACTION Adrian Hunter
2013-11-04 20:21 ` [tip:perf/core] " tip-bot for Adrian Hunter
2013-11-01 13:51 ` [PATCH V3 10/11] perf evsel: Add missing PERF_SAMPLE_TRANSACTION Adrian Hunter
2013-11-04 20:21 ` [tip:perf/core] perf evsel: Synthesize PERF_SAMPLE_TRANSACTION tip-bot for Adrian Hunter
2013-11-01 13:51 ` [PATCH V3 11/11] perf tools: Allow non-matching sample types Adrian Hunter
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=1383313899-15987-7-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.