All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: Stephane Eranian <eranian@google.com>
Cc: linux-kernel@vger.kernel.org, mingo@elte.hu, acme@redhat.com,
	ming.m.lin@intel.com, andi@firstfloor.org,
	robert.richter@amd.com, ravitillo@lbl.gov, will.deacon@arm.com,
	paulus@samba.org, benh@kernel.crashing.org, rth@twiddle.net,
	ralf@linux-mips.org, davem@davemloft.net, lethal@linux-sh.org
Subject: Re: [PATCH 09/12] perf_events: add hook to flush branch_stack on context switch (v2)
Date: Thu, 08 Dec 2011 19:13:55 +0100	[thread overview]
Message-ID: <1323368035.17673.20.camel@twins> (raw)
In-Reply-To: <CABPqkBTJ1M0Hpm-VHXGSSOtLHFQWuuo7AnaJzwEQ9a4WD8YFbw@mail.gmail.com>

On Thu, 2011-12-08 at 10:04 -0800, Stephane Eranian wrote:
> The whole motivation behind the flush_branch_stack is explained in the
> Changelog of the patch. In summary, we need to flush the LBR (regardless
> of TOS) because in system-wide we need to be able to associate the content
> of the LBR with a specific task. Given that the HW does not capture the PID
> in the LBR buffer, the kernel has to intervene. 

That's not regardless of the TOS. If the TOS was a full u64 you wouldn't
need the TID (which would be good, since the hardware has no such
concept).

> Why don't we have this already?
> Because we are capturing at all priv levels. But with this patchset, it becomes
> possible to filter taken branches based on priv levels. Thus, if you only sample
> at the user level and run in system-wide mode, it is more likely you could end
> up with branches belonging to two different tasks in the LBR buffer. But you'd
> have no way of determining this just by looking at the content of the buffer.
> So instead, we need to flush the LBR on context switch to associate a PID
> with them.

Yeah, I get that.

> Because this is an expensive operation, we want to do this only when we
> sample on LBR. That's what the ctx->nr_branch_stack is about. We could
> refine that some more by checking for system-wide events with only
> user priv level on the branch stack. But I did not do that yet.
> 
> Does this make more sense now? 

It already did. The only thing I wanted to do was get rid of that method
check. Initially I overlooked the fact that its optional, even if you
support the branch stack. My reply from today argued for it, since
installing a dummy method would still have the needless ctx_lock &&
pmu_disable overhead.



  reply	other threads:[~2011-12-08 18:14 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-14 12:37 [PATCH 00/12] perf_events: add support for sampling taken branches (v2) Stephane Eranian
2011-10-14 12:37 ` [PATCH 01/12] perf_events: add generic taken branch sampling support (v2) Stephane Eranian
2011-12-05 21:06   ` Peter Zijlstra
2011-12-06 19:42     ` Stephane Eranian
2011-12-05 22:14   ` Peter Zijlstra
2011-12-06 19:27     ` Stephane Eranian
2011-10-14 12:37 ` [PATCH 02/12] perf_events: add Intel LBR MSR definitions (v2) Stephane Eranian
2011-10-14 12:37 ` [PATCH 03/12] perf_events: add Intel X86 LBR sharing logic (v2) Stephane Eranian
2011-10-14 12:37 ` [PATCH 04/12] perf_events: sync branch stack sampling with X86 precise_sampling (v2) Stephane Eranian
2011-10-14 12:37 ` [PATCH 05/12] perf_events: add LBR mappings for PERF_SAMPLE_BRANCH filters (v2) Stephane Eranian
2011-12-05 22:35   ` Peter Zijlstra
2011-12-07  4:22     ` Stephane Eranian
2011-10-14 12:37 ` [PATCH 06/12] perf_events: implement PERF_SAMPLE_BRANCH for Intel X86 (v2) Stephane Eranian
2011-10-14 12:37 ` [PATCH 07/12] perf_events: add LBR software filter support " Stephane Eranian
2011-12-05 22:29   ` Peter Zijlstra
2011-10-14 12:37 ` [PATCH 08/12] perf_events: disable PERF_SAMPLE_BRANCH_* when not supported (v2) Stephane Eranian
2011-10-14 12:37 ` [PATCH 09/12] perf_events: add hook to flush branch_stack on context switch (v2) Stephane Eranian
2011-12-05 21:10   ` Peter Zijlstra
2011-12-05 21:37   ` Peter Zijlstra
2011-12-07 18:25     ` Stephane Eranian
2011-12-08 10:49       ` Peter Zijlstra
2011-12-08 18:04         ` Stephane Eranian
2011-12-08 18:13           ` Peter Zijlstra [this message]
2011-12-08 22:06             ` Stephane Eranian
2011-12-09  9:00               ` Peter Zijlstra
2011-10-14 12:37 ` [PATCH 10/12] perf: add code to support PERF_SAMPLE_BRANCH_STACK (v2) Stephane Eranian
2011-10-14 12:37 ` [PATCH 11/12] perf: add support for sampling taken branch to perf record (v2) Stephane Eranian
2011-10-14 12:37 ` [PATCH 12/12] perf: add support for taken branch sampling to perf report (v2) Stephane Eranian
2011-12-04 20:11 ` [PATCH 00/12] perf_events: add support for sampling taken branches (v2) Stephane Eranian
2011-12-05 15:27   ` Peter Zijlstra
2011-12-05 22:39 ` Peter Zijlstra
2011-12-06  9:49   ` Will Deacon
2011-12-06 11:03     ` Peter Zijlstra
2011-12-06 19:14       ` Stephane Eranian
2011-12-06 19:20         ` Peter Zijlstra
2011-12-06 19:22           ` Stephane Eranian

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=1323368035.17673.20.camel@twins \
    --to=peterz@infradead.org \
    --cc=acme@redhat.com \
    --cc=andi@firstfloor.org \
    --cc=benh@kernel.crashing.org \
    --cc=davem@davemloft.net \
    --cc=eranian@google.com \
    --cc=lethal@linux-sh.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ming.m.lin@intel.com \
    --cc=mingo@elte.hu \
    --cc=paulus@samba.org \
    --cc=ralf@linux-mips.org \
    --cc=ravitillo@lbl.gov \
    --cc=robert.richter@amd.com \
    --cc=rth@twiddle.net \
    --cc=will.deacon@arm.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.