Re: Detecting CPUs and cores
- From: Lew <lew@xxxxxxxxxxxxxxxx>
- Date: Tue, 31 Jul 2007 08:04:19 -0400
Lew wrote:
It is likely that the two hyper-threaded cores will achieve more throughput than on one of those "cores". The reason Intel provided hyperthreading is that it increases throughput on the chip.
Daniel Dyer wrote:
That's the theory, but it's less clear cut than with a "proper" dual core chip. There is anecdotal evidence of people turning *off* Hyper-Threading in the BIOS to improve the performance of their applications.
http://news.zdnet.co.uk/hardware/0,1000000091,39237341,00.htm
http://www.javalobby.org/java/forums/t54590.html
I haven't personally benchmarked the effect of Hyper-Threading but, if your application is relying on the result of availableProcessors() to fine tune it's concurrency strategy, it's important to be aware that 1 HT CPU may behave quite differently from 1 dual-core CPU.
There is evidence that multiple CPUs can reduce throughput relative to a single CPU, too. It depends on the software.
I am not arguing that HyperThread is as effective as multiple cores. In fact, HT is a hack devised by Intel to counteract excessive pipeline stalling, so it stands to reason that its performance would differ perhaps significantly from true multiple-CPU scenarios. The trick is to discern when the number of CPUs reported by Java is a reliable number and when it isn't.
My point is that most times to the Java world it doesn't matter. You use the number as reported. Like every performance issue, especially in Java, it is nigh impossible to make /a priori/ judgments about the impact this will have, especially cross-platform /a priori/ judgments. So unless we decide in a particular case that the difference makes a difference, we pretend that it is no difference. To the JVM, a HT (with both "cores" enabled) acts like two CPUs, smells like two CPUs, quacks like two CPUs, so we pretend that it is two CPUs.
Performance optimization comes after the fact.
--
Lew
.
- References:
- Detecting CPUs and cores
- From: Chris
- Re: Detecting CPUs and cores
- From: Joshua Cranmer
- Re: Detecting CPUs and cores
- From: Daniel Dyer
- Re: Detecting CPUs and cores
- From: Lew
- Re: Detecting CPUs and cores
- From: Eric Sosman
- Re: Detecting CPUs and cores
- From: Lew
- Re: Detecting CPUs and cores
- From: Daniel Dyer
- Detecting CPUs and cores
- Prev by Date: Re: vector addElement
- Next by Date: Re: Scripting engine - Java 6
- Previous by thread: Re: Detecting CPUs and cores
- Next by thread: Re: Detecting CPUs and cores
- Index(es):
Relevant Pages
|