public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: Adrian Hunter <adrian.hunter@intel.com>
Cc: Ingo Molnar <mingo@kernel.org>,
	Frederic Weisbecker <fweisbec@gmail.com>,
	linux-kernel@vger.kernel.org, "Kleen,
	Andi" <andi.kleen@intel.com>,
	"Shishkin, Alexander" <alexander.shishkin@intel.com>
Subject: Re: PERF_EVENT_IOC_SET_OUTPUT
Date: Wed, 2 Oct 2013 12:03:50 +0200	[thread overview]
Message-ID: <20131002100350.GO3081@twins.programming.kicks-ass.net> (raw)
In-Reply-To: <524B1E7C.3070108@intel.com>

On Tue, Oct 01, 2013 at 10:11:56PM +0300, Adrian Hunter wrote:
> Hi
> 
> It does not seem possible to use set-output between
> task contexts of different types (e.g. a software event
> to a hardware event)
> 
> If you look at perf_event_set_output():
> 
>           /*
>            * If its not a per-cpu rb, it must be the same task.
>            */
>           if (output_event->cpu == -1 && output_event->ctx != event->ctx)
>                   goto out;
> 
> ctx (perf_event_context) won't be the same for events
> of different types.  Is this restriction necessary?

Hmm.. so last night I wrote me a big reply saying we couldn't do it;
then this morning I reconsidered and thing that something like:

  output_event->ctx->task != event->ctx->task

should actually work.

The reason it should be OK I think is because perf_mmap() will refuse to
create a buffer for inherited events that have ->cpu == -1.

My initial response was going to say that it wouldn't be possible
because __perf_event_task_sched_out() could 'break' one ctx while still
swapping the other, at which point the buffer would have to service two
different tasks, potentially from different CPUs and with the buffers
not actually being SMP safe that's a problem.

But like stated, perf_mmap() seems to avoid that issue entirely by not
allowing inherited events that aren't cpu bound.

Someone please double check this..  :-)

  reply	other threads:[~2013-10-02 10:04 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-01 19:11 PERF_EVENT_IOC_SET_OUTPUT Adrian Hunter
2013-10-02 10:03 ` Peter Zijlstra [this message]
2013-10-02 10:29   ` PERF_EVENT_IOC_SET_OUTPUT Frederic Weisbecker
2013-10-02 11:27     ` PERF_EVENT_IOC_SET_OUTPUT Peter Zijlstra
2013-10-02 11:43       ` PERF_EVENT_IOC_SET_OUTPUT Frederic Weisbecker
2013-10-02 12:29       ` PERF_EVENT_IOC_SET_OUTPUT Ingo Molnar
2013-10-02 12:40         ` PERF_EVENT_IOC_SET_OUTPUT Peter Zijlstra
2013-10-03  6:43           ` PERF_EVENT_IOC_SET_OUTPUT Ingo Molnar
2013-10-07 16:42             ` PERF_EVENT_IOC_SET_OUTPUT Peter Zijlstra
2013-10-29 14:08               ` [tip:perf/core] perf: Fix the perf context switch optimization tip-bot for Peter Zijlstra

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=20131002100350.GO3081@twins.programming.kicks-ass.net \
    --to=peterz@infradead.org \
    --cc=adrian.hunter@intel.com \
    --cc=alexander.shishkin@intel.com \
    --cc=andi.kleen@intel.com \
    --cc=fweisbec@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.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