Re: Detecting CPUs and cores



Lew wrote:
Daniel Dyer wrote:
What's slightly less helpful is that my Windows PC at work returns 2 from availableProcessors() despite the fact that it is single-core, albeit with Intel's Hyper-Threading.

That's not Window's nor Java's fault. The HT processor is electrically equivalent to two CPUs to the rest of the system. So are multi-core CPUs.

Here's the $64,000 question - what is the value of knowing the number of dies on which the cores reside? A "core" /is/ a CPU as far as any practical use of it goes; same for the two virtual cores seen in a HyperThreaded processor. You program them in every respect as if they were completely separate; the fact that they happen to share some real estate couldn't be less relevant.

A difference that makes no difference is no difference.

Well, yes: But it *does* make a difference. The difference
doesn't arise from the die layouts per se, but from attributes
that tend to go along with them. The cores may share resources
in ways that interfere and make their "computational power" non-
additive. Intel's hyperthreaded chips, for example, share a
single execution unit and a single path to memory; only one "CPU"
at a time can initiate an operation on either resource. Similar
remarks apply to Sun's T1 processor; the thirty-two "strands"
share eight execution units, one on-chip cache, and one floating-
point unit, but multiplex across four memory channels.

The differences make a difference -- but taking proper account
of them is far more involved than simply counting cores or chips.
You need to get into the architecture of what's shared and what
isn't, which components can run in parallel and to what degree,
and so on. This is well outside the scope of what cross-platform
Java is equipped to handle; one would need a lot of supplementary
information to make sense out of whatever number one obtained.

--
Eric Sosman
esosman@xxxxxxxxxxxxxxxxxxxx
.



Relevant Pages

  • Re: Performance improvement using X5355 over 5080
    ... would expect to get by swapping 2 x Xeon 5080 3.73GHz Dual-Core CPUs with 2 x Xeon X5355 2.66GHz Quad-Core CPUs? ... you are trading two cores which are 40% faster, ... And at time when you have load, but ony a few threads running, you lose, even if you win under max load. ...
    (comp.sys.intel)
  • Re: Performance improvement using X5355 over 5080
    ... would expect to get by swapping 2 x Xeon 5080 3.73GHz Dual-Core CPUs ... 40% faster, for four cores. ... And at time when you have load, ...
    (comp.sys.intel)
  • Re: Intel details future Larrabee graphics chip
    ... for dinky little SMP systems of 4-8 cores. ... Why multi-thread *anything* when hundreds or thousands of CPUs are ... video CPUs using fancy memory and generics doing the grunt work. ... Duo, and never get trojans, memory leaks, any of that. ...
    (sci.electronics.design)
  • Re: The machdep.hyperthreading_allowed & ULE weirdness in 7.1
    ... I have a single-CPU system with P4 HTT-enabled processor, ... For 4BSD, which uses a "pull" model to bring work from work queues, this means that CPUs will go to sleep and remain that way unless they're actively receiving interrupts. ... The only reliable way to disable hyperthreading is to do so using your BIOS setting, or use loader.conf to disable probing of the pics on unwanted cores, which will cause the CPUs not to be enumerated and hence not used. ... You could imagine teaching ULE about policies such as "Don't use HTT cores", or perhaps just cpuset about those policies. ...
    (freebsd-stable)
  • Re: The machdep.hyperthreading_allowed & ULE weirdness in 7.1
    ... I have a single-CPU system with P4 HTT-enabled processor, ... For 4BSD, which uses a "pull" model to bring work from work queues, this means that CPUs will go to sleep and remain that way unless they're actively receiving interrupts. ... The only reliable way to disable hyperthreading is to do so using your BIOS setting, or use loader.conf to disable probing of the pics on unwanted cores, which will cause the CPUs not to be enumerated and hence not used. ... You could imagine teaching ULE about policies such as "Don't use HTT cores", or perhaps just cpuset about those policies. ...
    (freebsd-current)