From: Lin Ming <ming.m.lin@intel.com>
To: Stephane Eranian <eranian@google.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
"mingo@elte.hu" <mingo@elte.hu>,
Peter Zijlstra <peterz@infradead.org>,
"Kleen, Andi" <andi.kleen@intel.com>
Subject: Re: perf_events: questions about cpu_has_ht_siblings() and offcore support
Date: Fri, 22 Apr 2011 23:30:19 +0800 [thread overview]
Message-ID: <1303486219.2461.61.camel@localhost> (raw)
In-Reply-To: <BANLkTinTRnSWbR8NTd5J-mmL=w7RecXk8g@mail.gmail.com>
On Fri, 2011-04-22 at 23:05 +0800, Stephane Eranian wrote:
> On Fri, Apr 22, 2011 at 5:03 PM, Lin Ming <ming.m.lin@intel.com> wrote:
> > On Fri, 2011-04-22 at 22:41 +0800, Stephane Eranian wrote:
> >> On Fri, Apr 22, 2011 at 4:31 PM, Lin Ming <ming.m.lin@intel.com> wrote:
> >> > On Fri, 2011-04-22 at 21:46 +0800, Stephane Eranian wrote:
> >> >> On Fri, Apr 22, 2011 at 3:26 PM, Lin Ming <ming.m.lin@intel.com> wrote:
> >> >> > On Fri, 2011-04-22 at 20:59 +0800, Stephane Eranian wrote:
> >> >> >> Lin,
> >> >> >>
> >> >> >> In arch/x86/include/asm/smp.h, you added:
> >> >> >>
> >> >> >> static inline bool cpu_has_ht_siblings(void)
> >> >> >> {
> >> >> >> bool has_siblings = false;
> >> >> >> #ifdef CONFIG_SMP
> >> >> >> has_siblings = cpu_has_ht && smp_num_siblings > 1;
> >> >> >> #endif
> >> >> >> return has_siblings;
> >> >> >> }
> >> >> >>
> >> >> >> I am wondering about the goal of this function.
> >> >> >>
> >> >> >> Is it supposed to return whether or not HT is enabled?
> >> >> >>
> >> >> >> Ht enabled != HT supported
> >> >> >
> >> >> > It's used to check if HT is supported.
> >> >> >
> >> >> Ok, that makes more sense.
> >> >>
> >> >> > But unfortunately, we didn't find a way to check if HT is enabled.
> >> >> > So I just check if HT is supported.
> >> >> >
> >> >> >>
> >> >> >> +static inline int is_ht_enabled(void)
> >> >> >> +{
> >> >> >> + bool has_ht = false;
> >> >> >> +#ifdef CONFIG_SMP
> >> >> >> + int w;
> >> >> >> + w = cpumask_weight(cpu_sibling_mask(smp_processor_id()));
> >> >> >> + has_ht = cpu_has_ht && w > 1;
> >> >> >> +#endif
> >> >> >> + return has_ht;
> >> >> >> +}
> >> >> >>
> >> >> >> OTOH, you need some validation even in the case HT is off. No two events
> >> >> >> scheduled together on the same PMU can have different values for the extra
> >> >
> >> > I got it now.
> >> >
> >> >> >> reg. Thus, the fact that cpu_has_ht_siblings() is imune to HT state helps here,
> >> >> >> but then what's the point of it?
> >> >> >
> >> >> > The points is to avoid the percore resource allocations(which are used
> >> >> > to sync between HTs) if HT is not supported.
> >> >> >
> >> >> But if you check x86_pmu.extra_regs, that should do it as well.
> >> >
> >> > I don't understand here.
> >> > Did you mean we can avoid the percore resource allocations by just
> >> > checking x86_pmu.extra_regs? How?
> >>
> >> Is you have not extra_regs, i.e., regs that are shared, then why would
> >> you need the percore allocation?
> >
> > But "extra_regs" does not imply they are regs that are shared.
> > It only means some events need to set extra registers to work.
> >
> Do you have example of such register that would not require the
> extra mutual exclusion either between HT threads or between
> events on the same PMU?
No.
I was thinking the case that "extra_regs" may be per-thread, instead of
pef-core.
So if there are "extra_regs" or not does not connected directly with if
locking is needed or not.
next prev parent reply other threads:[~2011-04-22 15:30 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-22 12:59 perf_events: questions about cpu_has_ht_siblings() and offcore support Stephane Eranian
2011-04-22 13:26 ` Lin Ming
2011-04-22 13:46 ` Stephane Eranian
2011-04-22 14:31 ` Lin Ming
2011-04-22 14:41 ` Stephane Eranian
2011-04-22 14:47 ` Peter Zijlstra
2011-04-22 14:48 ` Stephane Eranian
2011-04-22 15:03 ` Lin Ming
2011-04-22 15:05 ` Stephane Eranian
2011-04-22 15:30 ` Lin Ming [this message]
2011-04-22 16:21 ` Stephane Eranian
2011-04-22 14:53 ` Stephane Eranian
2011-04-22 20:42 ` Peter Zijlstra
2011-04-22 22:15 ` 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=1303486219.2461.61.camel@localhost \
--to=ming.m.lin@intel.com \
--cc=andi.kleen@intel.com \
--cc=eranian@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=peterz@infradead.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.