From: Jiri Olsa <jolsa@redhat.com>
To: Mark Rutland <mark.rutland@arm.com>
Cc: linux-kernel@vger.kernel.org, acme@kernel.org,
adrian.hunter@intel.com, alexander.shishkin@linux.intel.com,
hekuang@huawei.com, jolsa@kernel.org, kan.liang@intel.com,
mingo@redhat.com, peterz@infradead.org, wangnan0@huawei.com
Subject: Re: [RFCv2 4/4] perf: util: support sysfs supported_cpumask file
Date: Thu, 21 Jul 2016 10:10:35 +0200 [thread overview]
Message-ID: <20160721081035.GC7651@krava> (raw)
In-Reply-To: <20160718150044.GG10069@leverpostej>
On Mon, Jul 18, 2016 at 04:00:45PM +0100, Mark Rutland wrote:
> On Mon, Jul 18, 2016 at 04:30:18PM +0200, Jiri Olsa wrote:
> > On Fri, Jul 15, 2016 at 11:08:13AM +0100, Mark Rutland wrote:
> > > For system PMUs, the perf tools have long expected a cpumask file under
> > > sysfs, describing the single CPU which they support events being
> >
> > single cpu? it's cpumask..
>
> Indeed.
>
> The issue is that in practice, due to an internal inconsistency the
> perf tools only work work when a single CPU is described in the mask.
> More details below (and in patch 1).
>
> > > opened/handled on. Prior patches in this series have reworked this
> > > support to support multiple CPUs in a mask, as is required to handle
> > > heterogeneous CPU PMUs.
> > >
> > > Unfortunately, adding a cpumask file to CPU PMUs would break existing
> > > userspace. Prior to this series, perf record will refuse to open events,
> >
> > I'm lost.. we already have 'cpumask' file under pmu..
>
> Sorry, I should spell out the problem more concretely:
>
> When manipulating events, the tools sometimes use evsel->cpus, and other
> times evlist->cpus. Sometimes, the two are used inconsistently, which
> only works if they are the same size and/or describe the same CPUs.
> Patch 1 fixes an instance of this, where the inconsistency results in
> treating uninitialised memory as perf event FDs.
>
> In the absence of a PMU cpumask file, the evsel's cpumask is initialised
> to that of the evlist, so things line up.
>
> Currently the only PMUs which happen to expose a cpumask are uncore
> PMUs, which in practice only describe a single CPU.
>
> When recording system-wide, various parts of the perf tools assume a
> single CPU, regardless of evlist->cpus, for the purpose of manipulating
> events. This happens to make uncore PMUs work, avoiding the
> inconsistency.
>
> Were we to just add a 'cpumask' file to our CPU PMUs, we would break
> existing userspace (e.g. hitting the issue fixed in patch 1).
so you're saying that perf is broken once pmu's cpumask
contains more than single cpu, is that right?
we should fix that, not make workarounds.. I'll go check,
I might be still missing something ;-)
would be great to have some automated test for this stuff
thanks,
jirka
next prev parent reply other threads:[~2016-07-21 8:10 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-15 10:08 [RFCv2 0/4] perf tools: play nicely with CPU PMU cpumasks Mark Rutland
2016-07-15 10:08 ` [RFCv2 1/4] perf stat: balance opening and reading events Mark Rutland
2016-07-18 14:32 ` Jiri Olsa
2016-07-19 6:53 ` [tip:perf/core] perf stat: Balance " tip-bot for Mark Rutland
2016-07-15 10:08 ` [RFCv2 2/4] perf: util: Add more cpu_map helpers Mark Rutland
2016-07-18 14:32 ` Jiri Olsa
2016-07-19 6:53 ` [tip:perf/core] perf cpu_map: Add more helpers tip-bot for Mark Rutland
2016-07-15 10:08 ` [RFCv2 3/4] perf: util: only open events on CPUs an evsel permits Mark Rutland
2016-07-18 14:32 ` Jiri Olsa
2016-07-18 22:46 ` Arnaldo Carvalho de Melo
2016-07-19 6:20 ` Jiri Olsa
2016-07-15 10:08 ` [RFCv2 4/4] perf: util: support sysfs supported_cpumask file Mark Rutland
2016-07-18 14:30 ` Jiri Olsa
2016-07-18 15:00 ` Mark Rutland
2016-07-21 8:10 ` Jiri Olsa [this message]
2016-07-21 9:49 ` Mark Rutland
2016-07-18 16:38 ` Suzuki K Poulose
2016-07-18 17:13 ` Mark Rutland
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=20160721081035.GC7651@krava \
--to=jolsa@redhat.com \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=hekuang@huawei.com \
--cc=jolsa@kernel.org \
--cc=kan.liang@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=wangnan0@huawei.com \
/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).