[ILUG] 2.6 Kernel + Hyperthreading

Bryan O'Donoghue typedef at eircom.net
Thu Sep 9 15:56:52 IST 2004


P at draigBrady.com wrote:

>> 1) How well will *non-threaded* applications perform?  Will they only
>> get 1/2 the CPU power?
>>     - Most of the apps are not threaded, so might I be better off
>>       not using the HT capabilities?
> 
> 
> If your app has only one thread, then it will only use 1 CPU.

Just for clarity, this is the case with a genuinely SMP machine too, is 
it not? ie the scheduler decides which CPU to run 
process(x)/(lightweight kernel thread)(x)/execution context(x) in, where 
there is no gaurantee that an application with two threads won't end up 
running in the 'one' CPU on an SMP system.

Is this not the case for a HT enabled CPU, and if not, then there must 
be some recent evolution in the kernel to differentiate a thread from a 
process and consequent linuxthreads code ?

> However you mention you have many apps, and also there are
> the usual system apps. So you will may gain from running
> those in parallel. 

This makes a bit more sense to my 'idea' of what having two logical CPUs 
would mean... ie, the _possibility_ for a

fork(); system call to have a child process execute on a different 
'logical' CPU.

If it is _not_ the case that a regular regular process can execute on 
'either' of the logical CPUs on HT enabled CPU, then there must have 
been some recent evolution with 2.6 and linuxthreads, which clearly 
differentiates a process from a thread... which would allow 
process(thread(x)) use the second logical CPU while process(regular(x)) 
is limited to 'always' execute on CPU A.

I don't think that's the case, to my mind two logical CPUs, would mean 
that while a single process would only ever execute on _one_ 'logial' 
CPU on a HT machine... that the scheduler could put that process to 
execute on _either_ of the logical CPUs.

Can anybody say for sure, if this assertion is correct or false?




More information about the ILUG mailing list