From: Mikael Pettersson <mikpe@csd.uu.se>
To: jamesclv@us.ibm.com
Cc: Jason Lunz <lunz@falooley.org>, linux-kernel@vger.kernel.org
Subject: Re: detecting hyperthreading in linux 2.4.19
Date: Fri, 10 Jan 2003 08:05:07 +0100 [thread overview]
Message-ID: <15902.28835.127030.199073@harpo.it.uu.se> (raw)
In-Reply-To: <200301091337.04957.jamesclv@us.ibm.com>
James Cleverdon writes:
> On Thursday 09 January 2003 12:02 pm, Jason Lunz wrote:
> > Is there a way for a userspace program running on linux 2.4.19 to tell
> > the difference between a single hyperthreaded xeon P4 with HT enabled
> > and a dual hyperthreaded xeon P4 with HT disabled? The /proc/cpuinfos
> > for the two cases are indistinguishable.
> >
> > Jason
> >
> > -
>
> In the kernel that's no problem:
>
> A) If the BIOS writers followed Intel's guidelines, just look at the physical
> APIC IDs. HT siblings have odd IDs, the real ones have even.
>
> B) Check the siblings table built up at boot time and used by the scheduler.
>
> I don't know of any way to do this in userland. The whole point is that the
> sibling processors are supposed to look like real ones.
If the kernel has sched_setaffinity() or some other way of binding a process
to a given CPU (as numbered by the kernel, which may or may not be related
to any physical CPU numbers), then this will do it: execute CPUID on each
CPU and check the initial APIC ID field. If you find one that's non-zero,
then HT is enabled.
My performance monitoring counters driver uses this approach in kernel-space
using smp_call_function(). I don't use the siblings tables because they suck :-)
[I don't think they distinguish between logical CPUs #0 and #1, and they aren't
exported to modules. The CPUID check is simple and portable across kernel versions.]
next prev parent reply other threads:[~2003-01-10 6:56 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-01-09 20:02 Jason Lunz
2003-01-09 21:37 ` James Cleverdon
2003-01-09 21:54 ` John Bradford
2003-01-10 0:16 ` James Cleverdon
2003-01-10 0:58 ` Mike Dresser
2003-01-09 21:57 ` Jason Lunz
2003-01-10 12:29 ` Mark Hounschell
2003-01-10 7:05 ` Mikael Pettersson [this message]
2003-01-10 11:05 ` Dave Jones
2003-01-10 11:19 ` Mikael Pettersson
2003-01-10 0:20 ` Dave Jones
2003-01-09 22:29 Kamble, Nitin A
2003-01-09 23:26 Pallipadi, Venkatesh
2003-01-10 8:16 Pallipadi, Venkatesh
2003-01-10 8:43 ` Mikael Pettersson
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=15902.28835.127030.199073@harpo.it.uu.se \
--to=mikpe@csd.uu.se \
--cc=jamesclv@us.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lunz@falooley.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
all inboxes | Powered by JetHome®