From: Peter Zijlstra <peterz@infradead.org>
To: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Cc: mingo@kernel.org, Michael Ellerman <mpe@ellerman.id.au>,
Anton Blanchard <anton@au1.ibm.com>,
Stephane Eranian <eranian@google.com>,
Jiri Olsa <jolsa@redhat.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
linux-kernel@vger.kernel.org
Subject: Re: [RFC][PATCH] perf: Implement read_group() PMU operation
Date: Tue, 17 Feb 2015 11:03:01 +0100 [thread overview]
Message-ID: <20150217100301.GJ5029@twins.programming.kicks-ass.net> (raw)
In-Reply-To: <20150217083312.GA16221@us.ibm.com>
On Tue, Feb 17, 2015 at 12:33:12AM -0800, Sukadev Bhattiprolu wrote:
> Peter Zijlstra [peterz@infradead.org] wrote:
> | > --- a/kernel/events/core.c
> | > +++ b/kernel/events/core.c
> | > @@ -3549,10 +3549,43 @@ static int perf_event_read_group(struct perf_event *event,
> |
> | You also want perf_output_read_group().
>
> Ok. Will look into it. We currently don't support sampling with
> the 24x7 counters but we should make sure that the new interface
> fits correctly.
One thing someone 'could' do is group them together with a software
event that _can_ sample, and then use SAMPLE_READ to periodically stuff
values into the buffer.
> | Since ->read() has a void return value, we can delay its effect, so I'm
> | currently thinking we might want to extend the transaction interface for
> | this; give pmu::start_txn() a flags argument to indicate scheduling
> | (add) or reading (read).
> |
> | So we'd end up with something like:
> |
> | pmu->start_txn(pmu, PMU_TXN_READ);
> |
> | leader->read();
> |
> | for_each_sibling()
> | sibling->read();
> |
> | pmu->commit_txn();
>
> So, each of the ->read() calls is really "appending a counter" to a
> list of counters that the PMU should read and the values for the counters
> (results of the read) are only available after the commit_txn() right?
Correct.
> In which case, perf_event_read_group() would then follow this commit_txn()
> with its "normal" read, and the PMU would return the result cached during
> ->commit_txn(). If so, we need a way to invalidate the cached result ?
I was thinking of breaking up that code into two loops, once to call
->read() and update states, the second to use the now up-to-date data
and frob it into the stream.
But I must say I've not entirely given it much thought. But that way
you're not stuck with this cache and related problems.
> | after which we can use the values updated by the read calls. The trivial
> | no-support implementation lets read do its immediate thing like it does
> | now.
> |
> | A more complex driver can then collect the actual counter values and
> | execute one hypercall using its pre-allocated memory.
>
> the hypercall should happen in the ->commit_txn() right ?
Yah. Of course, if a ->read() is not part of a txn then it must do the
hypercall for just the one value.
next prev parent reply other threads:[~2015-02-17 10:03 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-06 2:59 [RFC][PATCH] perf: Implement read_group() PMU operation Sukadev Bhattiprolu
2015-02-12 15:58 ` Peter Zijlstra
2015-02-17 8:33 ` Sukadev Bhattiprolu
2015-02-17 10:03 ` Peter Zijlstra [this message]
2015-02-22 21:04 ` Cody P Schafer
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=20150217100301.GJ5029@twins.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=acme@kernel.org \
--cc=anton@au1.ibm.com \
--cc=eranian@google.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=mpe@ellerman.id.au \
--cc=sukadev@linux.vnet.ibm.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 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.