|distributed.net Faq-O-Matic : the Client software : Hyperthreading gives me two processors, but why isn't client isn't twice as fast?|
|Many modern processors have a "hyperthreading" or multi-threading feature that can be enabled (typically within the system BIOS) that will make the system appear to have two logical processors for every physical core. However, hyperthreading does not physically give you the performance of two equivalent processors. It attempts to provide improved performance by allowing contention-bound applications to more efficiently context switch between different threads so that their responsiveness is better.
With two processors (from the Operating System's perspective), it provides greater opportunity for a second thread blocking on the result of the first thread to already be "running" on the second "processor", reducing the OS overhead with identifying which thread to pick next and context-switching it in.
The dnetc client is computationally bound and the cruncher threads are not blocking on activities of the other, so it is probably not the intended type of application that would benefit from Hyperthreading. OGR crunching performance can improve with hyperthreading while RC5 performance typically suffers with it enabled.
Also keep in mind that when running in Hyperthread-enabled mode, the client is likely automatically detecting two processors and is able to run two cruncher threads. The combined speeds of the two threads are closer to the speed in non-Hyperthread mode. (The remaining difference can be attributed to the computational overhead of the Hyperthreading implementation.) Also note that when hyperthreading is enabled, interactions between other applications and the client can alter the performance of both.
|For more background information about how hyperthreading works see:|
© Copyright distributed.net 1997-2013 - All rights reserved